WS-I: Interoperabilidade no Desenho e Consumo de Web Services Outubro 2003 Agenda Introdução WS-I.org Perfis de Interoperabilidade Aplicações Exemplo Ferramentas de Teste Programa de Conformidade Introdução WS-I.org Contexto Negócios têm que inovar cada vez mais rapidamente Sucesso passa por dispor de muita interoperabilidade – Dentro da empresa – Entre parceiros de negócio – Num conjunto diversificado de plataformas, aplicações e linguagens de programação Tecnologias Internet são um dado, e interoperabilidade é um requisito Introdução WS-I.org Comentários “Se é um fornecedor de infra-estrutura e não alinha com o WS-I, nem sequer apareça – não faremos negócio consigo” -- Merrill Lynch CTO John McKinley Introdução WS-I.org Standards XML (eXtensible Markup Language) – Não está acoplado a qualquer linguagem de programação, sistema operativo ou vendedor de software. – É útil para descrever formatos de documentos para a Web e também para dados estruturados. XML Namespaces – Evitar conflitos de nomeclatura XML Schema (XSD) – Descrever classes de documentos XML Introdução WS-I.org Standards – XML Schema <?xml version="1.0" encoding="utf-8" ?> <FilmesPreferidos <?xml version="1.0" encoding="utf-8" ?> xmlns="mailto:[email protected]"> <xs:schema targetNamespace="mailto:[email protected]" <Filme> xmlns:tns="mailto:[email protected]" <Titulo>Matrix</Titulo> xmlns:xs="http://www.w3.org/2001/XMLSchema" > <Site url="http://whatisthematrix.warnerbros.com/"/> <xs:element name="FilmesPreferidos"> </Filme> <xs:complexType> <xs:sequence> <Filme> <xs:element name="Filme" type=“tns:FilmeType” <Titulo>Lord of the Rings - Part I</Titulo>maxOccurs="unbounded"/> </xs:sequence> <Site url="http://www.lordoftherings.net/"/> </xs:complexType> </Filme> </xs:element> <xs:complexType name=“FilmeType"> <Filme> <xs:sequence> <Titulo>Bicentenial Man</Titulo> <xs:element name="Titulo" type="xs:string" /> <xs:element name="Site" minOccurs="0"> </Filme> <xs:complexType> </FilmesPreferidos> <xs:attribute name="url" type="xs:URI" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:schema> Introdução WS-I.org Standards (cont.) SOAP (Simple Object Access Protocol) version="1.0"?> – Protocolo<?xml simples para a troca de informação estruturada num <SOAP-ENV:Envelope ambiente distribuído e descentralizado. xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" – “Messaging xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Framework”: Estabelece um formato extensível de xmlns:xsd="http://www.w3.org/2001/XMLSchema" mensagens >XML, as quais podem ser enviadas através de diversos protocolos subjacentes <SOAP-ENV:Header> WSDL (Web Services Description Language) – – <!-- Opcional. Informação transversal (segurança, sessão, routeamento, etc) --> </SOAP-ENV:Header> Documentar<SOAP-ENV:Body> serviços (operações, mensagens, …) <!-- Informação especifica da mensagem --> Simplificar consumo dos serviçosxmlns="mailto:[email protected]"> (criação automática de classes <FilmesPreferidos <Filme> proxy) <Titulo>Matrix</Titulo> <Site url="http://whatisthematrix.warnerbros.com/"/> </Filme> </FilmesPreferidos> Catalogar serviços existentes </SOAP-ENV:Body> Também</SOAP-ENV:Envelope> conhecido como as Páginas Amarelas dos WebServices UDDI (Universal Description and Discovery Interface) – – Introdução WS-I.org Standards (cont.) SOAP (Simple Object Access Protocol) – Protocolo simples para a troca de informação estruturada num ambiente distribuído e descentralizado. – “Messaging Framework”: Estabelece um formato extensível de mensagens XML, as quais podem ser enviadas através de diversos protocolos subjacentes WSDL (Web Services Description Language) – Documentar serviços (operações, mensagens, …) – Simplificar consumo dos serviços (criação automática de classes proxy) UDDI (Universal Description and Discovery Interface) – Catalogar serviços existentes – Também conhecido como as Páginas Amarelas dos WebServices Introdução WS-I.org Standards - WSDL <types> <definitions> <binding de name="FavoriteMovieWSSoap" type="s0:FavoriteMovieWSSoap"> Conjunto definições que here caracterizam um Web Service <!-- Type definitions --> <definitions <service> Conjunto de vários portos, cada um dos quais instancia operações de acordo com um binding num determinado endpoint. <soap:binding transport="http://schemas.xmlsoap.org/soap/http" <xs:schema elementFormDefault="qualified" xmlns="http://schemas.xmlsoap.org/wsdl/" style="document" /> xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="mailto:[email protected]" <types> Definição do formato das mensagens relevantes. Típica mas não <operation name="GetFavoriteMovies"> targetNamespace="mailto:[email protected]" > <soap:operation necessariamente através de XML Schema xmlns:tns="mailto:[email protected]"> <types> soapAction="mailto:[email protected]/GetFavoriteMovies" <xs:element name="GetFavoriteMovies"> <!-- Describe types used in operation messages --> style="document" /> por <message> Cada mensagem é constituída zero/uma ou mais partes. Cada <portType name="FavoriteMovieWSSoap"> <xs:complexType /> </types> <input> <operation name="GetFavoriteMovies"> parte é</xs:element> de um tipo bem definido. Tipicamente estes tipos são <message name=""> <soap:body use="literal" /> <input message="tns:GetFavoriteMoviesSoapIn" /> <xs:element name="GetFavoriteMoviesResponse"> <!-Describe operation messages --> tipos base de XML Schema ou tipos definidos na tag <types> </input> <output message="tns:GetFavoriteMoviesSoapOut" /> <xs:complexType> </message> <output> </operation> <xs:sequence> <portType name=""> <soap:body use="literal" /> </portType> <xs:element minOccurs="0" maxOccurs="unbounded" <portType> Um tipo de porto é um conjunto de operações. operação é <!-set of operations on a Um given port --> </output>Describe name="FilmesPreferidos" type="s0:FilmeType" </portType> uma acçãoname="GetFavoriteMoviesSoapIn"> disponibilizada por um serviço. A cada operação está /> </operation> <message </xs:sequence> <binding name="" > <service name="FavoriteMovieWS"> </binding> associado um de mensagens de input e um conjunto <part </xs:complexType> name="parameters" element="tns:GetFavoriteMovies" />de <!--conjunto Bind portType to a specific protocol --> <port name="FavoriteMovieWSSoap" binding="tns:FavoriteMovieWSSoap"> </message> </xs:element> mensagens de output. </binding> <soap:address <message name="GetFavoriteMoviesSoapOut"> <xs:complexType name="FilmeType"> <service name=""> location="http://localhost/FavoriteMovieWS/FavoriteMovieWS.asmx" /> <part name="parameters" <binding> </port> Forma como um <portType> é exposto protocolo ... <!-- Instanciate Binding on anum given endpointde--> element="tns:GetFavoriteMoviesResponse"/> </xs:complexType> </service> transporte (e.g., HTTP, MIME, TCP,…). Define características das </service> </message> </xs:schema> </definitions> mensagens nesse protocolo, e forma como protocolo é utilizado. </types> Introdução WS-I.org Standards (cont.) SOAP (Simple Object Access Protocol) – Protocolo simples para a troca de informação estruturada num ambiente distribuído e descentralizado. – “Messaging Framework”: Estabelece um formato extensível de mensagens XML, as quais podem ser enviadas através de diversos protocolos subjacentes WSDL (Web Services Description Language) – Documentar serviços (operações, mensagens, …) – Simplificar consumo dos serviços (criação automática de classes proxy) UDDI (Universal Description and Discovery Interface) – Catalogar serviços existentes – Também conhecido como as Páginas Amarelas dos WebServices Introdução WS-I.org Contexto Flexibilidade dos standards Evolução rápida dos standards Coordenação entre standards Conformidade das implementações Introdução WS-I.org Flexibilidade dos standards SOAP – – – – – Encoding vs Literal Document vs RPC Header attributes: mustUnderstand, actor/role Protocolo: tipicamente HTTP; existem bindings para SMTP, TCP HTTP: Cookies, Redirection, SOAPAction – – – – Mensagens: XML, … Types: XML Schema, … Port Types: One-Way, Request-Response, … Bindings: SOAP, HTTP GET, SMTP, … WSDL UDDI – Arbitrariedade dos tModel 1998 1999 2000 2001 2002 2003 WS-I Basic Profile 1.0 SOAP 1.2 UDDI 2.0 WS-I.org UDDI 1.0 WSDL 1.1 SOAP 1.1 WSDL 1.0 SOAP 1.0 XML Namespaces 1.0 XML 1.0 Introdução WS-I.org Evolução rápida dos Standards 2004 Introdução WS-I.org Contexto Flexibilidade dos standards Evolução rápida dos standards Coordenação entre standards Conformidade das implementações Introdução WS-I.org Missão http://www.ws-i.org […] WS-I é uma organização aberta da indústria que tem como propósito promover Interoperabilidade de Web Services entre diversas plataformas, sistemas operativos e linguagens de programação […] Introdução WS-I.org Missão Qual é a missão? – – – – Estabelecer uma definição clara de ‘Web Services’ Clarificar as especificações que estejam maduras para implementar Publicar indicações sobre a melhor forma de utilizar as especificações Apoiar programadores através de exemplos concretos e de ferramentas de suporte WS-I subscreve especificações que tenham sido largamente adoptadas pela industria WS-I não escreve novas especificações, mas adopta o trabalho realizado por outros (Standards integrator) Introdução WS-I.org Deliverables Perfis de Interoperabilidade – Basic 1.0: XML, XSD, SOAP, WSDL, UDDI Use Cases e Cenários de Utilização – Capturam respectivamente requisitos de negócio e técnicos para uso Web Services Aplicações Exemplo – Supply Chain Management (Gestão Cadeia de Fornecimento) Ferramentas de teste – Monitor e Analisador – Verificar conformidade com Perfis Introdução WS-I.org Relações entre materiais Feedback Aplicação Exemplo Verifica / Feedback Restrições Orienta Requisitos Use Cases e Cenários de Utilização Orienta Regras Restrições Materiais e Ferramentas de Teste Conjunto Regras Feedback Perfil (e.g., Basic Profile) Agenda Introdução WS-I.org Perfis de Interoperabilidade Aplicações Exemplo Ferramentas de Teste Programa de Conformidade Perfis de Interoperabilidade WS-I Basic Profiles Um ‘Basic Profile’ é: – Um conjunto de especificações de Web Services com versões especificas – Restrições e recomendações quanto ao uso das mesmas Perfis de Interoperabilidade WS-I Basic Profiles Basic Profile 1.0 – http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile1.0a.html (~50 páginas) – Publicado em Agosto 2003 Basic Profile 1.1 – Actualização Incremental à versão 1.0 – SOAP with Attachments Basic Security Profile – Segurança no Transporte – Segurança de Mensagens SOAP – Outros aspectos (de acordo com Basic Profile 1.0 e 1.1) Perfis de Interoperabilidade Filosofia de um Basic Profile Não é garantia de interoperabilidade Restringe em lugar de relaxar Procura compatibilidade futura Perfis de Interoperabilidade WS-I Basic Profile 1.0 Base – – – – HTTP (1.0 ou 1.1) XML 1.0 XML Namespaces XML Schema 1.0 SOAP 1.1 – Restrição mais significativa: MUST NOT use SOAP 1.1 Section 5 (SOAP Encoding) WSDL 1.1 – MUST use XML Schema 2001 and SOAP/HTTP binding UDDI 2.0 Perfis de Interoperabilidade WS-I Basic Profile 1.1 Soap with Attachments – W3C Note, Dezembro 2000 – http://www.w3.org/TR/SOAP-attachments Perfis de Interoperabilidade Basic Profile 1.0 - Segurança Imposições reduzidas – Permite mecanismos de segurança baseados em HTTP SSL/TLS client certificates HTTP Authentication – Não define nenhum mecanismo para segurança das mensagens SOAP (e.g. WSSecurity) Perfis de Interoperabilidade Basic Security Profile Baseado em standards – HTTP sobre TLS (HTTPS) – SOAP Attachments Security – OASIS Web Services Security v1.0 Work in progress! Perfis de Interoperabilidade Conformidade Critérios de conformidade são estabelecidos: – Por requisitos – Para artifacts Mensagem (SOAP/HTTP) – Scoped to the entire message Description (WSDL) – Scoped to wsdl:port (or parts of a port) Regdata / Discovery (UDDI) – Scoped to bindingTemplate or tModels Considera-se que uma instância de um artifact tem conformidade quando todos os requisitos correspondentes se verificarem O Basic Profile NÃO estabelece um critério que indique se as ferramentas e plataformas estão em conformidade Perfis de Interoperabilidade Conformidade Definem-se várias instâncias de processamento – Instância (e.g. ASMX) – Consumidor (e.g. classe proxy e wsdl.exe) Tanto Instâncias como Consumidores devem respeitar as regras para: – Senders – Receivers Agenda Introdução WS-I.org Perfis de Interoperabilidade Aplicações Exemplo Ferramentas de Teste Programa de Conformidade Aplicação Exemplo Introdução Web Services Standard que promovam Interoperabilidade – Entre plataformas, aplicações e linguagens de programação – Interoperabilidade consistente e fiável entre tecnologias de Web services de vários vendedores – Integrador de standards para ajudar ao avanço de Web services de forma estruturada e coerente Specs Profiles Consenso WS-I Exemplos Guidance Prova Boas Práticas Aplicação Exemplo Descrição Aplicação simples de Gestão de Cadeia de Fornecimento (Supply Chain Management) – Baseada em Web Services – Demonstra uma aplicação que tem conformidade com Basic Profile 1.0 – Não é necessariamente representativa das Best Practices Doc/Literal & RPC/Literal Demonstra 3 padrões de troca de Mensagens – One-Way – Request-Response – Callback Aplicação Exemplo Basic Callback <ns2:StartHeader Cliente xmlns:ns2=""> Servidor <ns2:conversationID>1</ns2:conversationID> <ns2:callbackLocation>http://localhost:999/WSI_Sample/services/WarehouseCallBack</ns2:callbackLocation> </ns2:StartHeader>Pedido Inicial Pedido Original: Resposta: Ack Pedido: Notifica Resposta Resposta: Ack Resposta Final: Aplicação Exemplo Recomendações MS Aplicação exemplo inclui algumas funcionalidades que não são as mais correctas para plataformas Microsoft Permite RPC/Literal – The Argument Against SOAP Encoding http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsoap/html/argsoape.asp SOAP encoding. SOAP encoding —sometimes called "Section 5 encoding", after the portion of the SOAP 1.1 specification where it is defined —is a shadow from SOAP's past that has no place in the future of Web services Propõe funcionalidade através de mecanismos não standardizados – Callback <StartHeader> <conversationID> <callbackLocation> Exemplo equivalente WS-Addressing: <wsa:RelatesTo> <wsa:ReplyTo> Consumer Retailer System UC1: Purchase Goods UC4: Supply Finished Goods <<include>> <<include>> UC2: Source Goods UC5: Manufacture Finished Goods UC3: Replenish Stock Manufacturing System UC8: Configure and run demo Demo User UC8: View Events UC7: Log Events Demo System Agenda Introdução WS-I.org Perfis de Interoperabilidade Aplicações Exemplo Ferramentas de Teste Programa de Conformidade Ferramentas de Teste Objectivos Materiais e Ferramentas de Teste de Web Services servem vários propósitos: – Testar Conformidade com WS-I Basic Profile(s) – Testar Interoperabilidade e diagnosticar problemas – Ajudar programadores de Web Services a auto validar a interoperabilidade e conformidade com WS-I – Estabelecer metodologia de testes WS-I – Fornecer feedback a outros grupos de trabalho do WS-I Ferramentas de teste não certificam que um Web Service ou um cliente estão de acordo com WS-I * Profile Ferramentas e materiais de testes são versionados e essas versões existem em cada plataforma – Desenvolvidas em ambos Java e C# Ferramentas de Teste Arquitectura User Application Or WS Web Service MONITOR Log file ANALYZER Results Requestor SOAP Message SOAP Message 9090 Monitor Monitor Config File 80 Monitor Web Service SOAP Message Interceptor Logger <log …. startTimestamp="2002-07-30T20:16:06.722Z" > Message <monitor … > <implementer … /> <environment> Log <logFile truncate="true" <runtime name="… " version="… " /> <operatingSystem name="… " version="… " /> location="\temp\traceLog.xml"/> <xmlParser name="…" version="…" /> <manInTheMiddle> </environment> </monitor> <redirect> <logEntry id="1" type="request" timestamp="…6.722Z"> <listenPort>9090</listenPort> <message>< ;?xml …> ; < ;SOAP-ENV:Envelope …</message> <schemeAndHostPort> <senderIP>127.0.0.1</senderIP> http://localhost:80 <receiverIP>169.198.23.45</receiverIP> <HTTPheaders>HTTP/1.1 200 OK Server: … </HTTP…> </schemeAndHostPort> </logEntry> </redirect> <logEntry id="1" type="response" timestamp="…6.962Z"> Web Service Requestor Monitor SOAP Message Monitor Config File Interceptor SOAP Message Logger Monitor Message Log Analyzer Analyzer Config File XML Schema Analyzer WSDL Test Assertion Document <logFile>traceLog.xml</logFile> Conformance <profileAssertions>tad_BP1.xml</…> Report UDDI <wsdl> <wsdlFile> RetailerService.wsdl</…> Conformance Report Configuration Environment Discovery Result per target Artifact Assertion results Description Result per target Message Summaries Result All Result per target Result types Binding Template TModel Port Message Binding PortType Operation Message Pass Fail NotApplicable NotTested XSLT XSLT Result Assertion Result Result Artifact Artifact type <report …> <profile name="BasicProfile" version="1.0" /> <analyzer version="…" releaseDate="…"> <implementer … location="…" /> <environment> … </environment> <wsi-analyzerConfig:configuration …>…</… > </analyzer> <assertionTarget type="wsdlDocument"> <assertionResult id="WSI4001" result="passed"> <assertionDescription>The name scope in "definitions" element must have value: http://schemas.xmlsoap.org/wsdl/ </assertionDescription> </assertionResult> <assertionResult>…</…> </assertionTarget> Analyzer Config File Test Assertion Document Analyzer Conformance Report XSLT HTML report Ferramentas de Teste Função do Monitor Captura Mensagens: Interceptor – Especifico de um Transporte – Captura mensagens e erros na camada de transporte Logging e Formatação: Logger – Grava output execução do Interceptor – Formata entradas no log (XML) e exporta-o para um ficheiro Sender Interceptor Logger Log File Receiver Ferramentas de Teste Analisador Analise da descrição WSDL – Testa Conformidade do WSDL, e Target Ports Analise das mensagens do Web Service – Lê e correlaciona registos no Log – Executa procedimentos de teste relevantes para o perfil Relatório de Conformidade – Cobertura, Validação (WS ports pass/fail), Erros WS-I Profile(s) Activação selectiva de procedimentos teste UDDI Test Procedure 1 (UDDI) WS Definition (WSDL, port) Test Procedure 2 (WSDL) LOG file (ficheiro XML) Test Procedure 3 (HTTP) Test Procedure 4 (SOAP) Desacoplado de Monitorização – Testes de conformidade podem ser executados em run-time ou posteriormente Relatórios Teste Ferramentas de Teste Source e Binários http://www.ws-i.org/ demo Ferramentas de teste Agenda Introdução WS-I.org Perfis de Interoperabilidade Aplicações Exemplo Ferramentas de Teste Programa de Conformidade Programa de Conformidade Objectivos Vendedores de tecnologia poderão invocar conformidade com perfis WS-I – Demonstra liderança em Web Services e Interoperabilidade – Invoca alinhamento com melhores práticas da industria Programa auto gerido – Baseado em Relatórios emitidos pelo Vendedor – Clientes terão informação necessária para auditar e duplicar os testes de conformidade WS-I fornecerá índice de relatórios no seu site .org Programa de Conformidade Descrição Tipo de clausulas de conformidade: – Artifacts: Schema e WSDL. (e.g., de indústrias verticais) – Instancias de Web Services (e.g., MapPoint .NET) – Aplicações (e.g., SAP, GreatPlains) Conformidade de plataformas e ferramentas ainda está em estudo Programa de conformidade Relação com .NET Connected Qual a relação com o programa .NET Connected? – WS-I é mais restritivo – São fornecidas regras sobre detalhes dos specs, não apenas sobre quais os specs a utilizar – Algumas características dos spec são abandonadas pelo WS-I (e.g., SOAP encoding) As aplicações .NET Connected PODEM ter conformidade com WS-I Aplicações em conformidade com WS-I e que tenham conformidade com na Framework .NET são todas .NET Connected Premium Programa de Conformidade Boas Práticas Building Interoperable Web Services: WS-I Basic Profile 1.0 http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnsvcinter/html/wsi-bp_msdn_landingpage.asp – Foca aspectos chave do WS-I e dá indicações de como lidar com algumas restrições – Descreve como tirar partido do Visual Studio para criar Web Services que estejam em conformidade com as especificações WS-I Utilize a aplicação de exemplo WS-I como exemplo de como se deve ou não deve desenhar um Web Service A aplicação exemplo WS-I demonstra boas práticas de interoperabilidade, mas não necessariamente de outros aspectos como por exemplo performance ou segurança Patterns & Practices http://www.microsoft.com/patterns Resumo WS-I disponibiliza regras muito claras acerca de como construir Web Services interoperaveis Os perfis de interoperabilidade definem o caminho para a interoperabilidade Aplicações Exemplo dão dicas de como seguir o caminho indicado As Ferramentas de Teste ajudam os programadores a confirmar que construíram os Web Services da ‘forma correcta’ Aplicações e Web Services podem utilizar uma marca de conformidade do WS-I se seguirem o processo obrigatório Resumo O que pode fazer Desenhar e construir Web Services que seguem as regras WS-I Verificar que os Web Services fornecidos por produtos estão em conformidade com os Perfis – Utilizar as ferramentas de teste e dar feedback sobre as mesmas Planear a publicação de relatórios de conformidade Evangelizar WS-I para os seus clientes, parceiros e fornecedores – Actualizar produtos para obter conformidade © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.