1) Introdução
A utilização da Internet como mais um meio de comunicação era limitada pela falta de integração de seus distintos ambientes. A interoperabilidade entre diferentes plataformas é muito importante nos dias de hoje e, para satisfazer esta necessidade de integração entre ambientes já existentes, houve a necessidade da criação de um padrão de comunicação. Seguindo a evolução, surgiram os chamados web services, que fortaleceram o desenvolvimento distribuído, característica importante da Internet.
2) O que são web services?
Os serviços web (web services) são a base da computação distribuída através da Internet. Um consumidor de um web service pode invocar quaisquer operações que este serviço oferece. O provedor do serviço, ou seja, a aplicação que implementa o web service, pode estar tanto na mesma máquina do serviço que está sendo utilizado quanto em qualquer outro lugar da Internet. Os web services utilizam protocolos padrão da web, como XML, SOAP e HTTP.
A linguagem XML é usada para representação e transmissão de dados estruturados, sendo totalmente independente de hardware, de software ou mesmo de linguagem de programação. O protocolo SOAP fornece a semântica para a troca dos dados entre o provedor do web service e o consumidor do serviço. A linguagem WSDL descreve os serviços que o web service disponibiliza.
Para que seja mantida a interoperabilidade, a padronização dos web services tem sido mantida pelas organizações W3C [1], OASIS [2] e WS-I [3]. Para mais informações sobre web services, uma sugestão é a leitura do artigo “Understanding Web Services”, publicado pela Microsoft [4].
3) O driver Elipse WebService
O driver Elipse WebService, integrado ao E3, hospeda um serviço na máquina onde o software foi instalado e está executando. Este web service oferece o serviço de envio de dados de qualquer tipo, que são lidos através de um bloco de comunicação. Como já descrito anteriormente, é possível conectar e enviar dados a partir de qualquer aplicação que acesse esse serviço.
Nesta primeira versão, o driver utiliza a especificação WS-I Basic Profile 1.1 [5], compatível com clientes web services ASP .NET.
4) Instalação do driver
Para a utilização do driver, é necessário ter o Microsoft .NET Framework 3.0 instalado. Caso ainda não possua, o instalador fará automaticamente o download e instalação deste programa antes de instalar o driver propriamente dito. O Microsoft .NET Framework 3.0 Redistributable Package também está disponível para download no site da Microsoft [6].
A instalação é simples, como um típico programa Windows. Após executar o arquivo setup.exe, basta avançar as telas até a instalação ser concluída. Na segunda tela, é possível escolher o diretório onde o driver será instalado, através do botão [Browse…].
Figura 1: Instalação do driver Elipse WebService
Após o término da instalação, o driver deve ser configurado dentro do E3. Abra o projeto onde o driver será utilizado e insira um novo driver de comunicação.
Figura 2: Inserindo um novo Driver de Comunicação
O caminho do driver Elipse WebService (ElipseWS.dll) deve ser definido na propriedade DriverLocation. Caso a localização padrão tenha sido mantida, ele estará situado em C:\Program Files\Elipse Software\Driver Web Service\ElipseWS.dll.
Figura 3: Definindo a localização do driver
Por padrão, o driver estará configurado para hospedar o serviço no endereço IP local com a porta 8080. Para alterar esta configuração manualmente, basta acessar as configurações do driver, na aba Web Service.
Figura 4: Configuração do driver Elipse WebService
As novas informações podem ser digitadas nos campos IP Address (host name) e Listen for connections on port. O botão [Get IP] preencherá o campo IP Address (host name) com o endereço IP local. O campo Address mostra o endereço do web service, que deverá ser utilizado para consumo do serviço através de outras aplicações.
É importante ressaltar que as novas configurações só terão efeito após a reativação do driver.
5) Utilização do driver
Após a instalação e sua correta configuração, sempre que o driver for ativado no E3 Studio ou que uma aplicação for executada, o web service estará disponível e aguardando comunicação. Para verificar se o web service foi criado corretamente, acesse pelo navegador o endereço: http://[host]:[porta]/SendData?wsdl, substituindo [host] e [porta] pelas informações que foram utilizadas na configuração do driver. Este endereço pode ser obtido diretamente nas configurações do driver, no item Address.
Exemplo de endereço: http://localhost:8080/SendData?wsdl. Se o serviço estiver funcionando corretamente, um arquivo XML será mostrado no navegador.
Figura 5: Arquivo XML gerado pelo web service
Nesta etapa, a aplicação criada no Elipse E3 pode receber dados enviados por outras aplicações que estejam se comunicando com o web service. O método disponível, SetParams, possui um parâmetro do tipo ArrayOfAnyType, ou seja, um array de qualquer tipo.
No Elipse E3, este parâmetro será recebido em um bloco de comunicação. Para criá-lo, clique com o botão direito no ícone do driver e escolha as opções do menu Inserir–Bloco de Comunicação. Nas próximas janelas de configuração, mantenha a quantidade em 1, escolha o tamanho do bloco que desejar, e clique em [OK].
Figura 6: Inserindo um Bloco de Comunicação
Como mostrado no exemplo anterior, para receber um array com três valores, crie um bloco de comunicação com pelo menos três elementos. Cada elemento do array recebido corresponderá ao elemento de mesmo índice, portanto certifique-se que a propriedade Index de cada tag tenha o valor correto. A seguir é exibido três elementos recebidos através do web service, índices 0, 1 e 2.
Figura 7: Definindo o índice (Index) dos tags de comunicação
6) Exemplo de aplicativo conectado ao web service
A seguir, mostraremos como uma aplicação simples (escrita na linguagem de programação C# e utilizando o Visual Studio 2005) pode se comunicar com o web service. Como citado anteriormente, esta comunicação pode ser realizada através de outros sistemas e linguagens de programação; este, porém, não é o foco deste artigo.
Inicialmente, abra o Projeto Exemplo, localize o objeto Driver WebService (subitem de Drivers e OPC). Confirme o caminho correto na propriedade DriverLocation e verifique nas configurações do driver se no campo IP Address contém o nome ou o IP correto da máquina. Copie o campo Address e execute a aplicação (ou então apenas ative o driver no E3 Studio) para que o web service possa ser consumido pela aplicação que será desenvolvida.
Dentro do Visual Studio 2005, acesse o menu Project e clique em Add Web Reference… . Esta configuração permite a utilização dentro do código de objetos e métodos providos pelo web service.
Figura 8: Adicionando referência web ao Visual Studio 2005
Digite o endereço do web service no campo URL e clique em [Go]. Se o serviço for encontrado, serão mostrados seu nome (neste caso SendData) e o método disponível (SetParams). Clique em [Add Reference].
Figura 9: Adicionando uma referência do web service que está em execução
Será então possível utilizar as funcionalidades do web service na aplicação. A classe a ser utilizada se chama SendData e possui o método SetParams, que permite o envio de informações ao web service que será criado pelo driver, além de outros atributos como a manipulação do evento Complete. Para mais informações, pode-se consultar a documentação no site MSDN Library Online [7].
Figura 10: Classes criadas pelo Visual Studio 2005
O funcionamento da Aplicação Cliente criada como exemplo de aplicação consumidora é bastante simples. Ela utiliza basicamente a classe SendData e o método SetParams para enviar os dados ao web service e, consequentemente, à aplicação E3 que está em execução. Execute a aplicação exemplo, digite no campo Web Service Address o endereço do web service a ser consumido, e clique em [Connect]. Se a conexão for estabelecida com sucesso, será exibido o status OK.
Os parâmetros enviados devem ser preenchidos no campo Parameter e adicionados à lista através do botão [Add]. Para enviar os dados, clique no botão [Send]. Caso ocorra algum erro de comunicação, a mensagem correspondente será exibida no campo de status; a mensagem Data Sent Successfully indica o envio com sucesso.
Figura 11: Aplicativo exemplo que se comunica com o web service
Os dados serão recebidos nos elementos de comunicação do bloco de comunicação. Neste caso, o valor Teste1 (string) será recebido no elemento de índice 0, o valor 12345 (long) no índice 1, o valor 18/12/07 16:32 (date) no índice 2 e assim por diante. A seguir podemos ver o E3 Viewer do projeto de teste com os valores enviados pela aplicação cliente.
Figura 12: Tela da Aplicação Exemplo no E3
A aplicação cliente e o Projeto Exemplo para a versão 3.0 do E3 estão disponíveis nos anexos deste documento.
7) Conclusão
A utilização de web services permite a interoperabilidade entre sistemas e linguagens de programação. Com o driver Elipse WebService, diferentes aplicações poderão acessar o serviço (enviar os dados à aplicação do Elipse E3) através de um padrão que vem sendo amplamente utilizado por permitir esta total integração.
Desta forma, apesar do exemplo utilizar o .NET Framework, o web service pode ser consumido por uma plataforma que não seja .NET. Um diferencial encontrado é a facilidade de implementação da aplicação consumidora. Cabe ressaltar que existem questões relacionadas à segurança dos web services que serão tratadas na próxima versão do driver e atualizadas neste artigo.
8) Referências
[1] W3C (World Wide Web Consortium) http://www.w3.org/XML/Schema
[2] OASIS (Organization for the Advancement of Structured Information Standards) http://www.oasis-open.org
[3] WS-I (Web Services Interoperability Organization) http://www.ws-i.org
[4] Microsoft. Understanding Web Services (em inglês) http://msdn2.microsoft.com/pt-br/webservices/aa740685.aspx
[5] Especificação WS-I Basic Profile 1.1 (em inglês) http://www.ws-i.org/deliverables/workinggroup.aspx?wg=basicprofile
[6] Microsoft .NET Framework 3.0 Redistributable Package (site para download do arquivo) http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en
[7] MSDN Library Online http://msdn.microsoft.com/library/
Anexos:
E3Project.zip
ExampleApplication.zip
DriverWebServiceInstaller.zip