Oi Claudivan.
O ciclo de vida de um worker role, de maneira simplificada, é o seguinte:
- O evento OnStart é chamado quando a instância está pronta. Nesse método você pode inicializar a sua aplicação.
- Em seguida o método Run é chamado. Neste método fica a sua lógica. Em um worker role, tipicamente é um loop infinito que fica esperando e processando eventos.
- Caso o método Run termine por algum motivo, o método OnStop é chamado, onde você pode fazer um encerramento da aplicação, liberar recursos, ou o que for necessário. Note que este método pode não ser chamado, caso a instância falhe.
Este ciclo de vida é explicado em detalhes
na documentação e também
neste artigo.
Sobre a outra dúvida, diga-me se eu entendi direito o que você está precisando. Pelo que eu entendi, você teria um servidor, em uma worker role, obtendo dados do SQL Azure e respondendo via um serviço a uma aplicação cliente escrita em Java, rodando fora
do Azure. Isto é perfeitamente possível, mas o DataSet não vai ser o tipo de dados mais favorável para esta comunicação entre .NET e Java. DataSet é um tipo específico do .NET que é serializado de uma forma um tanto difícil de trabalhar em Java. Uma alternativa
seria usar uma conversão de dados, ou seja, o padrão DTO, para gerar uma lista ou coleção de objetos C# comuns, e serializar isto como XML. Se você criar um web service WCF com Data Contract e um endpoint XML, deve ficar bem fácil consumir em Java.
Fernando Correia
pensandoazure.wordpress.com
@facorreia