descadastro
site NCE
 
 
Web Services
 
artigos publicados

Serviços Web – Uma breve introdução (Parte I) - Continuação

 

Sérgio Manuel Serra da Cruz, M.Sc.
Analista de Suporte NCE/UFRJ

   
 

1.3 Descrição de serviços
A especificação WSDL (Web Services Description Language), atualmente na versão 1.2, é uma linguagem baseada em XML que descreve de forma padronizada e independente de plataforma como e onde os serviços podem ser conectados e utilizados através da rede.
Um documento WSDL possui o mesmo papel que a IDL da OMG nos ambientes distribuídos (WSDL, 2001), representando um contrato entre o provedor de serviços e seus clientes e definindo os serviços como uma coleção de portas na rede. Os documentos WSDL apresentam uma dicotomia entre a definição da mensagem (parte abstrata) e sua implementação (parte concreta), o que permite o reuso das definições das mensagens e port types.
Um documento WSDL é composto por sete elementos XML que representam as partes abstrata e concreta.
Na parte abstrata temos quatro elementos:
1-types - fornece a definição dos tipos de dados para descrever as mensagens trocadas entre aplicações, normalmente representadas por um documento XSD (XML Schema Definition);
2-message - representa a informação que será trocada através das definições dos tipos de dados;
3-porttype - é um conjunto de operações suportadas por um ou mais end points, onde cada operação se refere a uma mensagem de entrada, saída ou erro;
4-operation - descreve a ação suportada pelo serviço.
Na parte concreta temos os outros três elementos:
1-binding - define uma especificação de protocolo e formato de dados para as mensagens definidas em um port type;
2-port - é um end point, representa a combinação de um binding e um endereço de rede;
3-service - é uma coleção de portas. Cada elemento port se relaciona com um elemento binding particular, indicando qual interface e qual protocolo de comunicação estão sendo utilizados nessa implementação.

1.4 Publicação e descoberta de serviços Web
A especificação UDDI, atualmente na versão 3.0, especifica mecanismos para a publicação, descoberta e integração de serviços. Tais mecanismos definem as estruturas de dados necessárias para sua descrição e classificação, bem como uma interface baseada no protocolo SOAP que permite o acesso a essas informações.
Resumidamente, o registro de serviços UDDI possui dois tipos de cliente. O primeiro envolve as aplicações que desejam publicar serviços e suas interfaces, o segundo tipo envolve os clientes que desejam obter e se ligar a serviços Web.
Conceitualmente, o protocolo UDDI apresenta três papéis, representados sob a forma de XML Schemas (NEWCOMER, 2002). Os papéis são:
1-Páginas Brancas - contém identificadores sobre o contato técnico do serviço oferecido;
2-Páginas Amarelas - contém informações genéricas sobre os tipos e localização dos serviços disponíveis;
3-Páginas Verdes - contém informações técnicas sobre um determinado serviço Web.
A especificação UDDI define quatro estruturas de dados, também descritas como documentos XML, onde cada elemento descreve o tratamento dado ao serviço Web, (KREGER, 2001; 2002; NEWCOMER, 2002).
1-businessEntity - estrutura de alto nível (páginas brancas) que contém, para cada serviço, as informações (nome, categoria, identificadores, entre outros) sobre a organização que publicou o serviço Web;
2-businessService - contém informações descritivas sobre serviços Web (páginas amarelas), tais como nome e descrição do serviço publicado;
3-bindingTemplate - contém informações técnicas sobre o serviço Web tais como forma de acesso e endereços dos pontos acesso ao serviço (páginas verdes);
4-tModel - mecanismo usado para a troca de definições abstratas (metadados) sobre um serviço Web, contém as descrições do serviço Web, opcionalmente aponta para documentos WSDL.

1.5 Descrição de composições de serviços Web
A composição de serviços Web se relaciona com a automação de processos de negócio e requer uma especificação que controle a troca de mensagens entre os serviços Web. As especificações que descrevem a composição de serviços Web devem seguir uma série de princípios:
1-Estar em consonância com as demais especificações da W3C;
2-Permitir a composição de serviços mais complexos a partir de serviços Web mais simples;
3-Ser capaz de manter alta independência entre serviços com baixo acoplamento;
4-Facilitar a implementação de processos de negócio e a comunicação entre seus serviços; definir serviços obrigatórios e opcionais;
5-Indicar a ordem de execução e as rotas que serão seguidas no caso de sucesso ou falha na execução de um dado serviço Web.
Inicialmente, existiam duas especificações de descrição de composição de serviços: a WSFL (Web Services Flow Language) e a XLANG. Entretanto, elas foram substituídas pela especificação BPEL4WS (Business Process Execution Language for Web Services). BPEL4WS une características das linguagens XLANG e WSFL tornando-se mais completa que suas antecessoras (ANDREWS et al., 2003).
A especificação BPEL4WS, atualmente na versão 1.1, possui elementos que possibilitam a descrição de workflows baseados na interação de serviços Web. A linguagem também define um modelo e uma gramática para a descrição do comportamento de um processo de negócio e ainda define mecanismos para o tratamento de exceção (ANDREWS et al., 2003).

1.6 Protocolos de comunicação
A especificação SOAP (Simple Object Access Protocol) é um protocolo de transporte que rege a troca de mensagens entre aplicações em ambientes distribuídos e descentralizados. Seu conteúdo é composto por informações e estruturas de dados (KREGER, 2001; COYLE, 2002).
A especificação SOAP 1.2 contém três partes principais:
1-Modelo de empacotamento - envelope SOAP - define o conteúdo da mensagem SOAP;
2-Mecanismo de serialização - conjunto de regras de codificação - define os tipos de dados utilizados na aplicação;
3-Mecanismo de comunicação – convenção - define as chamadas e respostas através de procedimentos remotos.
Toda mensagem SOAP é um documento XML. Ela obrigatoriamente contém os elementos <Envelope> e <Body> e opcionalmente os elementos <Header> e <Fault>.
1-O elemento <Envelope> é a raiz do documento XML e representa a mensagem propriamente dita;
2-O elemento <Body> contém a carga de informações (operações e parâmetros) que são entregues ao destinatário da mensagem Este elemento, de acordo com a especificação SOAP, pode conter um elemento <Fault>, que, quando presente, pode ser utilizado no processamento de falhas do serviço Web. O elemento <Fault> descreve erros de chamada de métodos remotos ou mantém informações acerca do tipo de erro. Portanto, ele conta com os elementos <FaultCode>, <FaultActor>, <FaultString> e <Detail>;
3-O elemento <Header> expande uma mensagem SOAP. Ele define algumas características opcionais e acordos negociáveis entre as partes; seu conteúdo deve ser aceito pelas aplicações que estiverem se comunicando.
A especificação SOAP, a rigor, não depende do protocolo HTTP. Apesar de ser a combinação mais amplamente utilizada nos dias de hoje, a SOAP pode ser utilizada por outros protocolos da camada de transporte como, por exemplo, FTP, SMTP (COYLE, 2002).
Newcomer (2002) considera a especificação SOAP um tipo de extensão do protocolo HTTP, pois ela envia e recebe mensagens XML através das operações requisição e resposta do protocolo HTTP. Para que este processo ocorra, é necessário utilizar um servidor de páginas que seja capaz de atuar como um processador SOAP.

O exemplo abaixo ilustra uma mensagem SOAP sendo enviada através do método POST do protocolo HTTP v 1.1.

POST /HopliasBooks HTTP/1.1
Host: localhost
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: http://equipe.nce.ufrj.br/serra
<soapenv:Header>
<soapenv:criptograph
soapenv:mustUnderstand="0" xsi:type="xsd:string">yes
</soapenv:criptograph>
<soapenv:priority
soapenv:mustUnderstand="0" xsi:type="xsd:string">high
</soapenv:priority>
</soapenv:Header>
<soapenv:Body>
<validateInfo
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<Username xsi:type="xsd:string">SergioSerra</Username>
<BirthDate xsi:type="xsd:string">03/02/1965</BirthDate>
<IDCardType xsi:type="xsd:string">CPF</IDCardType>
<IDCardNumber xsi:type="xsd:string">45608</IDCardNumber>
</validateInfo>
</soapenv:Body>
</soapenv:Envelope>

  
Exemplo - Mensagem SOAP contendo os elementos <Envelope>, <Header> e <Body>.

No exemplo acima, o campo SOAPAction é utilizado por servidores de páginas ou firewalls para filtrar ou rotear uma mensagem SOAP. Este campo pode ser nulo ou conter o nome de algum método SOAP. O cabeçalho da mensagem se refere a uma possível prioridade de execução, que ainda não foi estabelecida. Ele faz uso do atributo mustUnderstand que exige do receptor o suporte a transação solicitada pelo emissor da mensagem. Caso o receptor da mensagem não suporte a transação, ele originará uma mensagem SOAP de falha.
O corpo da mensagem possui uma operação definida pelo atributo ValidateInfo e um pequeno conjunto de parâmetros definidos pelos elementos <UserName>, <Birthdate>, <IDCardType>, <IDcardNumber>.
No próximo número apresentaremos a conclusão deste artigo, onde construiremos uma pequena aplicação usando os conceitos ora apresentados.

REFERÊNCIAS

ANDREWS, T.; CURBERA, F.; DHOLAKIA, H.; GOLAND, Y.; KLEIN, J.; LEYMANN, F.; LIU, K.; ROLLER, D.; SMITH, D.; THATTE, S.; TRICKOVIC, I.; WEERAWARANA, S. Specification: Business Process Execution Language for Web Services. Version 1.1 - 05 May 2003. Disponível em: http://www.ibm.com/developerworks/library/ws-bpel

AUSTIN, D.; BARBIR, A.; FERRIS, C.; GARG, S. Web services architecture requirements. W3C working draft. 2002. Disponível em: http://www.w3.org/TR/2002/WD-wsa-reqs-20021114#id2604831

CHAPPELL, D.; JEWELL, T. Java Web Services. California: O'Reilly Books, 2002.

COYLE, F. P. XML, Web Services, and the Data Revolution. Boston: Addison-Wesley, 2002.

CURBERA, F.; MUKHI N.; WEERAWARANA, S. On the emergence of a web services component model. In: 6 th INTERNATIONAL WORKSHOP ON COMPONENT-ORIENTED PROGRAMMING AT ECOOP, 2001. Budapest. Proceedings of the 6th International Workshop on Component-Oeiented Programming Budapest: 2001. Disponível em: http://research.microsoft.com/users/cszypers/events/WCOP2001/Curbera

GRAHAM, S. et al. Building Web Services with Java™: Making sense of XML, SOAP, WSDL, and UDDI. Indianapolis: Sams Publishing, 2001.

GOTTSCHALK, K.; GRAHAN S.; KREGER H.; SNELL J. Introduction to web services architecture. IBM Systems Journal, v. 41, n. 2, 2002. Disponível em: http://www.research.ibm.com/journal/sj/412/gottschalk.pdf

KAYE, D. Loosely coupled: the missing pieces of web services. Califórnia: RDS Press, 2003.

KREGER, H. Web services conceptual architecture (WSCA 1.0) 2001.
Disponível em: http://www.ibm.com/software/solutions/webservices/pdf/WSCA.pdf

NEWCOMER, E. Understanding web services: XML, WSDL, SOAP and UDDI. Boston: Addison-Wesley, 2002.

PADMANABHUNI, S.; GANESH, J.; MOITRA, D. Web Services, Grid Computing and Business Process Management: In: IEEE International Conference on Web Services 2,. 2004. San Diego. Proceedings of the 2nd International Congress of Web Services San Diego: 2004. pp. 666-673.

UDDI, Specification, 2001. Disponível em: http://www.uddi.org/specification.html

WSDL Specification, 2001 – W3C. Disponível em: http://www.w3.org/TR/wsdl

 
 
         
 
    página principal
 
Núcleo de Computação Eletrônica
Universidade Federal do Rio de Janeiro
Prédio do Centro de Ciências Matemáticas e da Natureza Bloco C
Caixa Postal: 2324 - CEP: 20.010-974
Cidade Universitária - Ilha do Fundão, Rio de Janeiro - RJ Tel: 2598-3333