14 de October de 2008

WS-* Parte 1

Olá pessoal, já faz um tempinho que não ando postando nada. Mas agora estou de volta e com força total. Como já é de costume iremos falar um pouco mais sobre os assuntos técnicos relacionados a SOA. Este é o primeiro post de uma série de 4 que falaremos sobre alguns dos padrões emergentes para Web Services, os famosos WS-*. (O asterisco aqui quer dizer que existem vários padrões para Web Services, por exemplo: WS-Addressing, WS-BPEL, WS-Security e outros).

Nos meus últimos posts, discutimos sobre o Modelo de processamento SOAP e sobre a Anatomia do WSDL . Para quem não tem muita familiaridade com estes temas, recomendo fortemente a leitura destes dois posts antes de começar a ler esta série.

O primeiro padrão que falaremos é o WS-Addressing. Este padrão define construções em XML para dois tipos de informação: endpoint reference e message information. Estas informações são tipicamente de responsabilidade dos protocolos de transporte (ex: HTTP, SMTP). O padrão WS-Addressing normatiza estas informações dentro de um formato uniforme de modo que possa ser processado independentemente da camada de transporte. Mas afinal o que é um endpoint reference? Endpoint reference é uma entidade, recurso ou processador para onde as mensagens dos Web Services são encaminhadas, ou seja, um endpoint reference está para Web Services assim como URL e email estão para os protocolos HTTP e SMTP, respectivamente.

WS-Addressing

Um endpoint reference pode ser usado de duas maneiras: a primeira, para endereçar e referenciar o provedor do serviço e a segunda, para endereçar as mensagens transmitidas entre o consumidor e o provedor do Web Service (message information). Para isso, o padrão WS-Addressing define um bloco XML que deve estar contido dentro do header do envelope SOAP. O header geralmente contém informações auxiliares usadas para controlar segurança, transações e outros aspectos que não estão diretamente ligado a funcionalidade do Web Service.

Bloco XML do WS-Addressing

A figura acima apresenta alguma das tags definidas pelo padrão WS-Addressing.
<MessageID> – Identificador da mensagem. Nenhuma mensagem de uma mesma aplicação pode ter o mesmo identificador. Se uma mensagem é retransmitida ela mantém o mesmo MessageID.
<ReplyTo> – Especifica o endpoint reference para onde deverá ser enviada a resposta para esta mensagem.
<To> – Especifica o endpoint reference destino desta mensagem.
<Action> – Identifica a semântica da mensagem. Em outras palavras, amarra a mensagem com o portType do WSDL identificando se a mensagem é um <input>, <output> ou <fault>.

Existem algumas API’s para Web Service que implementam este padrão (Apache CFX, JBOSS Native, Apache Axis 2 entre outros). Você deve está ser perguntando: por que eu preciso deste padrão? Simples, ele é base para outros padrões que veremos a seguir. Vou ficando por aqui, até a próxima pessoal.

Responses

Grande Charles. O cara já consegue escrever e interpretar pacotes SOAP de cabeça!

Charles, acho legal colocar aí na lista de futuros posts algo sobre o REST.

O que acha?

Acho legal sim, inclusive com um título provocativo “REST versus SOAP”

Leave a response

Your response: