CURSO DE LICENCIATURA EM ENGENHARIA INFORMÁTICA Ano Lectivo 2004-2005 ESCOLA SUPERIOR DE TECNOLOGIA INSTITUTO POLITÉCNICO DE CASTELO BRANCO
Projecto de Sistemas Industriais 4º ANO – Engenharia Informática
Aula 11 – Desenvolvimento de WebServices em C# O objectivo desta ficha, é aprender conceitos relacionados com os WebServices. 1. Execute o Microsoft Visual Studio .NET 2003, e crie um projecto com através de um template ASP.NET Web Service denominado NorthwindServices. 2. Modifique o nome do ficheiro da classe de Service1.asmx para ProductService.asmx. Modifique também o nome da classe de Service1 para ProductService. 3. O código existente no ficheiro será semelhante ao seguinte:
Observa-se um método comentado, este método é somente um exemplo de como implementar um método para um webservice. AULA PRÁTICA 11
1
4. Adicione o seguinte atributo WebService à classe ProductService.
Definir e implementar o método HowMuchWillItCost 5. Se pretender pode apagar o métoo que se enconra em comentário. Adicione o seguinte método:
Todos os métodos a que implementem WebServices XML têm que conter a etiqueta WebMethod. Este método recebe como parâmetro o nome de um produto e a sua quantidade, e tem por objectivo utilizar essa informação de forma a retornar qual o custo de fornecer essa quantidade de produto. Para isso será necessário pesquisar na base de dados por forma a calcular o custo unitário do produto. 6. Indique no topo do ficheiro que utiliza a livraria SqlClient:
7. Adicione o seguinte código ao método:
AULA PRÁTICA 11
2
8. Execute a aplicação:
9. Clique no hyperlink com o nome do método a testar. 10. Introduza Chai no nome do produto e na quantidade 23. Pressione o botão Invoke. De observar que surgirá uma segunda janela do browser com a resposta do método no formato SOAP.
Manipular estruturas de dados complexas. O protocolo SOAP permite efectuar transação de estruturas de dados complexas entre um cliente e um Web Service XML, como paramatros de entrada, de saida ou como valores de retorno. Isto só é ossivel porque estas estruturas são serializadas num formato externo. Por exemplo se a estrutura de dados consistir numa classe, o processo de serialização SOAP irá converter a classe em XML por forma a enviar os dados através da rede usando o SOAP, e reonstruir a classe a partir do XML no outro lado.
AULA PRÁTICA 11
3
11. Neste exercicio pretende-se que implemente uma classe denominada Product cujo objectivo consiste permitir a transferência de todos os campos da tabela Product da base de dados. O seguinte exemplo apresenta como a classe será serializada por forma a permitir transferência de dados.
O processo de serialização é automático e transparente desde que sejam cumpridas algumas regras básicas aquando da definição das classes. Perticularmente, a serialização só trata campos e propriedades públicas. Se um objecto contém membros privados sem as correspondentes propriedades get e set, não será transmitido correctamente. De referir ainda que todas as propriedades têm que possuir o set e o get, mesmo que em termos lógicos seja apenas de leitura. Isto deriva do facto de que o processo de serialização do XML necessitar de escrever dados no objecto após este ter conluido a transferência. Além disso é necessário a classe possuir um constructor por defeito sem parâmetros. 12. No solution explorer adicione uma nova classe denominada de Product. 13. Adicione o seguinte código à classe, por forma a ser semelhante ao seguinte:
AULA PRÁTICA 11
4
AULA PRÁTICA 11
5
AULA PRÁTICA 11
6
Método GetProductInfo. 14. Retorne ao ficheiro ProductService.asmx. 15. implemente o método GetProductInfo que aceite como parâmetro uma string e retorne um objecto do tipo Product.
AULA PRÁTICA 11
7
16. Adicione o seguinte código ao método, por forma a ser possível executar a query.
17. Guarde as alterações e execute o código.
AULA PRÁTICA 11
8
Consumir o WebService ProductService. Com este exemplo pretende-se desenvolver uma aplicação Windows que vai consumir os métodos desenvolvidos no WebService do exemplo anterior. Por forma a optmizar o desenvolvimento vamos usar a forma existente no ficheiro disponível na página da disciplina. 18. Crie uma aplicação Windows através de um novo projecto denominado ProductInfo. 19. Copie o ficheiro disponível na página da disciplina para o desktop. 20. No solution explorer indique que pretende adiconar um item já existente. Indique o caminho do ficheiro que acabou de armazenar. 21. Ao surgir o seguinte menu seleccione a opção Yes.
22. No menu seguinte seleccione também a opção Yes.
23. Repita a operação no menu seguinte
AULA PRÁTICA 11
9
24. A form existente será substituida por uma semelhante á seguinte:
25. Após estas operações, volte ao solution explorer e seleccione o Projecto. 26. Com o botão do lado direito do rato seleccione a opção Add Web Reference. 27. No URL coloque o seguinte endereço: http://localhost/NorthwindServices/ 28. seleccione a opção Add Reference. 29. O solution explorer deverá ser semelhante à figura seguinte.
AULA PRÁTICA 11
10
30. Seleccione o ficheiro onde está armazenado o código relativo à Form1.cs por forma a observar o bloco de código que executa o método. 31. Execute a aplicação.
AULA PRÁTICA 11
11