40
Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira Enrique Pimentel Leite de Oliveira [email protected] [email protected]

Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira [email protected]

Embed Size (px)

Citation preview

Page 1: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Tecnologia para WebWebServicesTecnologia para WebWebServices

Enrique Pimentel Leite de OliveiraEnrique Pimentel Leite de [email protected]@aes.edu.br

Page 2: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

2

Web ServicesWeb Services

IntroduçãoIntrodução

SOAPSOAP

WSDL e UDDIWSDL e UDDI

SerializaçãoSerialização

AtributosAtributosWebServiceWebService

WebMethodsWebMethods

Ciclo de vida dos Web ServicesCiclo de vida dos Web Services

Page 3: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

3

Web ServicesWeb Services

Construindo Web ServiceConstruindo Web Service

Integração com ADO.NETIntegração com ADO.NET

Exercício PráticoExercício Prático

Page 4: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

4

Web ServicesWeb Services

IntroduçãoIntrodução

SOAPSOAP

WSDL e UDDIWSDL e UDDI

SerializaçãoSerialização

AtributosAtributosWebServiceWebService

WebMethodsWebMethods

Ciclo de vida dos Web ServicesCiclo de vida dos Web Services

Page 5: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

5

IntroduçãoIntrodução

DefiniçãoDefiniçãoConsiderados um evolução no projeto e Considerados um evolução no projeto e implementação de sistemas distribuídos, implementação de sistemas distribuídos, os Web Services são aplicações capazes os Web Services são aplicações capazes de fornecerem dados e serviços através de fornecerem dados e serviços através da Web;da Web;

Tecnologia de chamada remota de Tecnologia de chamada remota de objetos, que permite a infra-estrutura objetos, que permite a infra-estrutura para criação de aplicações distribuídas para criação de aplicações distribuídas (Web ou não);(Web ou não);

Baseado em protocolos e padrões aberto Baseado em protocolos e padrões aberto e largamente utilizados pelo mercado;e largamente utilizados pelo mercado;

Page 6: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

6

IntroduçãoIntrodução

Podem ser utilizados em ambientes com Podem ser utilizados em ambientes com firewalls;firewalls;

Tecnologia de padrão aberto (definida Tecnologia de padrão aberto (definida pelo W3C), utilizada por empresas como pelo W3C), utilizada por empresas como a SUN, Microsoft, IBM, HP etca SUN, Microsoft, IBM, HP etc

Alto grau de abstração em relação a Alto grau de abstração em relação a linguagens de programação e linguagens de programação e plataformas de hardware / softwareplataformas de hardware / software

Permitem a criação de pequenos Permitem a criação de pequenos módulos de código reutilizáveis e módulos de código reutilizáveis e disponibilizados para construção de disponibilizados para construção de aplicaçõesaplicações

Page 7: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

7

IntroduçãoIntrodução

O que é WS-I?O que é WS-I?É o consórcio que garante a É o consórcio que garante a interoperabilidade entre os Webservices interoperabilidade entre os Webservices ( http://www.ws-i.org/ ) para garantir ( http://www.ws-i.org/ ) para garantir sempre que Web services em diferentes sempre que Web services em diferentes plataforma possam comunicar-se entre plataforma possam comunicar-se entre si.si.

Page 8: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

8

Web ServicesWeb Services

IntroduçãoIntrodução

SOAPSOAP

WSDL e UDDIWSDL e UDDI

SerializaçãoSerialização

AtributosAtributosWebServiceWebService

WebMethodsWebMethods

Ciclo de vida dos Web ServicesCiclo de vida dos Web Services

Page 9: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

9

SOAPSOAP

O protocolo SOAP (O protocolo SOAP (Simple Object Simple Object Access ProtocolAccess Protocol) é um protocolo ) é um protocolo simples e leve para troca de simples e leve para troca de informação em um ambiente informação em um ambiente distribuído e descentralizado, como é distribuído e descentralizado, como é o ambiente Web;o ambiente Web;

Protocolo de padrão aberto adotados Protocolo de padrão aberto adotados por grande empresas;por grande empresas;

Page 10: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

10

SOAPSOAP

Principais característicasDefinido pelo consórcio W3C Baseado em XML para intercambio de informações Padrão utilizado para acessar Web Services Utiliza HTTP como protocolo de transporte Interoperabilidade entre sistemas utilizando linguagens e protocolos padronizados largamente difundidos como XML e HTTP

Page 11: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

11

SOAPSOAP

Principais característicasPrincipais característicasPermite a comunicação entre sistemas protegidos por firewalls, sem precisar abrir portas adicionais e possivelmente não seguras. Utiliza (na maioria dos servidores) a porta 80;SOAP descreve completamente cada elemento na mensagem, facilitando o entendimento e a proteção contra erros.

Page 12: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

12

SOAPSOAP

Elementos da mensagem SOAP

ElementoElemento DescriçãoDescrição

EnvelopeEnvelope É o elemento principal do XML que representa a mensagem.

CabeçalhoCabeçalho É um mecanismo genérico de adição de características à mensagem SOAP em maneira descentralizada sem acordo anterior entre as partes comunicantes

CorpoCorpo Contém a codificação atual de uma chamada a um método e todos os argumentos de entrada ou uma resposta codificada que contém o resultado de uma chamada a um método.

Page 13: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

13

SOAPSOAP

Exemplo de comunicação entre um Exemplo de comunicação entre um cliente e um Web Servicecliente e um Web Service

Internet

Requisição

Requisição

Resposta Resposta

Page 14: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

14

SOAPSOAP

Exemplo de requisição SOAPExemplo de requisição SOAPPOST /MyWebService/Service.asmx HTTP/1.1Host: www.wrox.comContent-Type: text/xml; charset=utf-8Content-Length: 19SOAPAction: “http://tempuri.org/HelloWorld”<?xml version=”1.0” encoding=”utf-8”?><soap:Envelope xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xmlns:xsd=”http://www.w3.org/2001/XMLSchema”xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”>

<soap:Body><HelloWorld xmlns=”http://tempuri.org/” />

</soap:Body></soap:Envelope>

Page 15: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

15

SOAPSOAP

Exemplo de resposta SOAPExemplo de resposta SOAPHTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8Content-Length: 14

<?xml version=”1.0” encoding=”utf-8”?><soap:Envelope

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xmlns:xsd=”http://www.w3.org/2001/XMLSchema”

xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”><soap:Body>

<HelloWorldResponse xmlns=”http://tempuri.org/”><HelloWorldResult>Hello World</HelloWorldResult>

</HelloWorldResponse></soap:Body>

</soap:Envelope>

Page 16: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

16

Web ServicesWeb Services

IntroduçãoIntrodução

SOAPSOAP

WSDL e UDDIWSDL e UDDI

SerializaçãoSerialização

AtributosAtributosWebServiceWebService

WebMethodsWebMethods

Ciclo de vida dos Web ServicesCiclo de vida dos Web Services

Page 17: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

17

WSDL e UDDIWSDL e UDDI

Web Service Description LanguageWeb Service Description Language (WSDL) (WSDL) é um documento XML que descreve os métodos que podem ser utilizados para acessar o Web Service (contrato);

Universal Definition, Discovery Interface (UDDI) é considerado as (UDDI) é considerado as páginas amarelas dos Web Servicespáginas amarelas dos Web Services

Page 18: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

18

WSDL e UDDIWSDL e UDDI

Processo de comunicação completo Processo de comunicação completo entre um cliente e um Web Service:entre um cliente e um Web Service:

Diretóriohttp://www.uddi.org

UDDI

DISCO

SOAP

Descoberta

Comunicação

Locate a Service

Link para o documento de descoberta (discovery)

Requisição do documento de Descoberta

Resposta do Documento de Descoberta (XML)

Resposta do Método (XML)

Requisição do Método

Clie

nte

Web

Ser

vice

UD

DI

Web

Service

WSDLDescrição

Resposta do serviço de Descrição (XML)

Requisição do serviço de Descrição

Page 19: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

19

Web ServicesWeb Services

IntroduçãoIntrodução

SOAPSOAP

WSDL e UDDIWSDL e UDDI

SerializaçãoSerialização

AtributosAtributosWebServiceWebService

WebMethodsWebMethods

Ciclo de vida dos Web ServicesCiclo de vida dos Web Services

Page 20: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

20

SerializaçãoSerialização

Serialização é o nome dado para o armazenamento e recuperação de um objeto, seja em um arquivo, memória ou qualquer outro lugar.

Quando serializados, todos os dados da instância persistem no meio de armazenagem e, quando desserializados, o objeto é montado novamente de forma idêntica a sua instância original.

Page 21: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

21

SerializaçãoSerialização

Uma das formas de serializar objetos e .Net é através das classes do Namespace System.Runtime.Serialization, as quais permitem trabalhar com serialização em dois formatos: Binário e XML/SOAP

Para isso utiliza-se o atributo Serializable nas classes indicando que todo conteúdo da de um objeto instanciado poderá ser serializadoCaso seja necessário evitar que um atributo da classe seja serializado, deve-se utilizar o atributo NonSerializable

Page 22: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

22

SerializaçãoSerialização

Exemplo de serialização de um objeto:[Serializable()]public class Pedido

   {      private int _id;      private DateTime _data;      [NonSerialized]private string _obs;      private Cliente _cliente;           public Pedido(int id, DateTime data, string obs, Cliente cli)      {          _id = id; _data = data; _obs = obs; _cliente = cli;      } 

     public int id {     get{return _id;}     }      public DateTime data {     get{return _data;}     }      public string obs {   get{return _obs;}     }      public Cliente cliente {   get{return _cliente;}     }    }

Page 23: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

23

SerializaçãoSerialização

Classe que será serializada junto com a Pedido, por ser um atributo da mesma.[Serializable()]public class Cliente 

   {      private int _id;      private string _nome;      [NonSerialized]private double _limiteCredito;

     public Cliente(int id, string nome, double limite)      {        _id = id;        _nome = nome;        _limiteCredito = limite;      } 

     public double limiteCredito { get{return _limiteCredito;} }    }

Page 24: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

24

SerializaçãoSerialização

Código utilizado para serializar o objeto

using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Soap; using System.IO;...IFormatter formato = new SoapFormatter();

Stream file = new FileStream("Pedido.xml", FileMode.Create,FileAccess.Write, FileShare.None);

Pedido ped = new Pedido(10, DateTime.Now, “Falta de produtos na entrega", new Cliente(10, "Linha de Código", 15));

//agora sim, vamos serializar o objeto formato.Serialize(file, ped); //Stream fechado file.Close();

Page 25: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

25

SerializaçãoSerialização

O Processo de Desserialização é O Processo de Desserialização é exatamente o inverso da exatamente o inverso da serialização:serialização:// Definindo o formato e criando uma instância da classe

SoapFormatter IFormatter formato = new SoapFormatter();        //Definindo o Stream de onde será lido o arquivo .xml Stream file = new FileStream("Pedido.xml", FileMode.Open ,FileAccess.Read , FileShare.Read ); //criando uma variável do tipo Pedido (vazia) Pedido ped;

//Desserializando o objeto ped = (Pedido)formato.Deserialize(file);

//Stream fechado file.Close();

Page 26: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

26

Web ServicesWeb Services

IntroduçãoIntrodução

SOAPSOAP

WSDL e UDDIWSDL e UDDI

SerializaçãoSerialização

AtributosAtributosWebServiceWebService

WebMethodsWebMethods

Ciclo de vida dos Web ServicesCiclo de vida dos Web Services

Page 27: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

27

AtributosAtributos

AtributosAtributosUm atributo é uma informação Um atributo é uma informação declarativa associada a um elemento da declarativa associada a um elemento da linguagem de programação. Isto linguagem de programação. Isto significa que um atributo é composto significa que um atributo é composto essencialmente de dados, não de essencialmente de dados, não de código. O atributo pode ser associado código. O atributo pode ser associado aos seguintes elementos:aos seguintes elementos:

Assembly (.exe ou .dll); Campo; Evento; Assembly (.exe ou .dll); Campo; Evento; Método; Parâmetros; Propriedades; Valor de Método; Parâmetros; Propriedades; Valor de returno; Tipo. returno; Tipo.

Page 28: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

28

AtributosAtributos

Os atributos são colocados antes do Os atributos são colocados antes do elemento a que se referem. Em C# eles elemento a que se referem. Em C# eles aparecem entre colchetes, como por aparecem entre colchetes, como por exemplo no atributo WebMethod usado exemplo no atributo WebMethod usado para indicar que um determinado para indicar que um determinado método pode ser chamado via HTTP:método pode ser chamado via HTTP:

[WebMethod][WebMethod]public string HelloWorld()public string HelloWorld(){{

return “Hello World”;return “Hello World”;}}

Page 29: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

29

Web ServicesWeb Services

IntroduçãoIntrodução

SOAPSOAP

WSDL e UDDIWSDL e UDDI

SerializaçãoSerialização

AtributosAtributosWebServiceWebService

WebMethodsWebMethods

Ciclo de vida dos Web ServicesCiclo de vida dos Web Services

Page 30: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

30

WebServiceWebService

Todos os Web Services são Todos os Web Services são encapsulados dentro de uma classe, encapsulados dentro de uma classe, que é definida como Web Service que é definida como Web Service pela adição do atributo pela adição do atributo WebServiceWebService antes da declaração da classeantes da declaração da classe

[WebService (Namespace = “http://tempuri.org”)]

Page 31: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

31

WebServiceWebService

NomeNome DescriçãoDescrição

Description Mensagem descritiva do Web Service

NameName Retorna ou atribui o nome do Web service

NamespaceNamespace Retorna ou atribui o XML Namespace padrão utilizado pelo Web Service. O Padrão é: http://tempuri.org/

TypeIdTypeId Quando implementado em uma classe derivada, retorna o identificador único para esse atributo (herdado de Attribute.)

O atributo WebService pode conter O atributo WebService pode conter as seguinte propriedades:as seguinte propriedades:

Page 32: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

32

Web ServicesWeb Services

IntroduçãoIntrodução

SOAPSOAP

WSDL e UDDIWSDL e UDDI

SerializaçãoSerialização

AtributosAtributosWebServiceWebService

WebMethodsWebMethods

Ciclo de vida dos Web ServicesCiclo de vida dos Web Services

Page 33: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

33

WebMethodWebMethod

Um Web Service é um conjunto de Um Web Service é um conjunto de métodos (WebMethods) logicamente métodos (WebMethods) logicamente associados invocados remotamente associados invocados remotamente através de mensagens SOAPatravés de mensagens SOAP

A diferença entre um WebMethod e A diferença entre um WebMethod e um método comum é a presença de um método comum é a presença de um atributo um atributo WebMethodWebMethod, uma , uma espécie de diretiva de compilação espécie de diretiva de compilação que determina que o método será que determina que o método será acessível remotamenteacessível remotamente

Page 34: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

34

WebMethodWebMethod

NomeNome DescriçãoDescrição

BufferResponse

Quando definido com o valor True, a resposta do Web Service é armazenada em memória e envidada como um pacote completo. Caso seja definido como False (valor padrão), a resposta é enviado ao cliente conforme é construída no sservidor

CacheDurationCacheDuration Especifica o número de segundos que a resposta deverá ser armazenada no cache do sistema. O padrão é 0, significando que o cache está desabilitado

DescriptionDescription Texto descritivo do WebMethod que aparece na página de teste do Web Service.

EnableSessionEnableSession Quando atribuído o valor True habilita a utilização de sessão no método. O padrão é False

MessageNameMessageName Aplica um nome único ao WebMethod.

TransactOptionTransactOption Especifica suporte transacional ao WebMethod. O padrão é Disabled. Outros valores possíveis são: NotSupported, Supported, Required, RequiresNew

O atributo WebMethod pode conter O atributo WebMethod pode conter as seguinte propriedades:as seguinte propriedades:

Page 35: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

35

Web ServicesWeb Services

IntroduçãoIntrodução

SOAPSOAP

WSDL e UDDIWSDL e UDDI

SerializaçãoSerialização

AtributosAtributosWebServiceWebService

WebMethodsWebMethods

Ciclo de vida dos Web ServicesCiclo de vida dos Web Services

Page 36: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

36

Ciclo de Vida dos Web ServicesCiclo de Vida dos Web Services

PProcesso de comunicarocesso de comunicaçção entre ão entre aplicaaplicaçção cliente e Web Service ão cliente e Web Service (desenvolvido na plataforma .Net (desenvolvido na plataforma .Net utilizando ASP.NET)utilizando ASP.NET)

Page 37: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

37

Web ServicesWeb Services

Construindo Web ServiceConstruindo Web Service

Integração com ADO.NETIntegração com ADO.NET

Exercício PráticoExercício Prático

Page 38: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

38

Construindo Web ServiceConstruindo Web Service

Criação de um Web ServiceCriação de um Web Service

Page 39: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

39

Web ServicesWeb Services

Construindo Web ServiceConstruindo Web Service

Integração com ADO.NETIntegração com ADO.NET

Exercício PráticoExercício Prático

Page 40: Tecnologia para Web WebServices Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

40

Integração com o ADO.NETIntegração com o ADO.NET

Todos os conceitos visto durante o Todos os conceitos visto durante o desenvolvimento de aplicações com desenvolvimento de aplicações com ADO.NET poderá ser utilizado com ADO.NET poderá ser utilizado com Web ServiceWeb Service

Criar um Web Service que retorne um Criar um Web Service que retorne um DataSet tipado.DataSet tipado.