Apresentação Introdução Protocolos base para a Ângelo Vimeney Rafael Martinelli Conclusão???? xadrez asdfkljdfkjsdf sdfjsdfkf sdfjsdfkjf sdfjkasdkflad sdfd dkfsdf k sdkfka Portal Server abacate abacaxi abelha abóbora bacalhau barcos beterraba beringela dente dor diferencial tartaruga watch xadrez xerox yet zebra wwwcomidascombr wwwveiculoscombr wwwdentistaorg wwwalgoritmoscombr wwwsomethingcombr wwwcampeonatoscombr wwwanimaiscombr
wwwuddimicrosoftcom Rio de Janeiro Tecido de Algodão Tecido de Linho Preço < 300 Preço < 100 Brasil São Paulo Salvador Porto Alegre Web service 1 Web service 2 Web service 3 Web service 4 Tecido de Tergal New York Web service 5 Pizzarias Hotéis Corretagem de imóveis USA San Francisco Seattle Portland Web service 6 Web service 7 Web service 8 Modo padrão, independente de plataforma, aberto, escalável e facilmente extensível de descrever os serviços Modo padrão, independente de plataforma, aberto, escalável e facilmente extensível para publicar e localizar os serviços O termo Web service se refere a uma são o próximo passo na evolução da funcionalidade específica oferecida por uma World Wide Web (WWW) e permite disponiblizarmos empresa, geralmente através de uma conexão de elementos programáveis em Web sites onde outros internet, possam com acessá-los o propósito de de forma permitir distribuída que outra empresa ou software utilize este serviço Technical White Paper
Arquitetura baseada em Arquitetura da Empresa A Um Web service é uma interface que descreve uma coleção de operações que são acessíveis pela rede através de mensagens padronizadas Heather Kreger - IBM Arquitetura da Empresa B Cliente Servidor Empresa A Empresa B Empresa C Empresa Z Cliente Servidor Pilha padrão de protocolos Arquitetura da Empresa C Cliente Servidor Registry Description Apresentação Find Requestor Publish Modelo Bind Provider Introdução Protocolos base para a Conclusão
Universal Interop Protocols Camada de Aplicação Universal Description, Discovery Integration Simple Object Access Protocol Web s Description Language EXtensible Markup Language HyperText Transfer Protocol Camada de Aplicação UDP TCP UDP TCP IP IP Nível Físico Nível Físico Simples Human-readable, English-based Stateless Padrão de fato para comunicação na Web Extensível para tranporte de qualquer formato de documento Versão atual: 11 Find Requestor Registry Bind Publish Registry Provider Description vamos ver a versão 10 Requestor Provider
Componentes Primeiro Componente: Linha Incial Linha Inicial Initial Request Line GET /path/to/file/indexhtml /10 Linhas de cabeçalho Initial Response GET Line (obter (status recurso) line) /10 200 HEAD OK (obter somente cabeçalho) POST (enviar dados) Linha em branco Conteúdo (message body) 1xx 2xx 3xx 4xx 5xx Mensagem de informação Algum tipo de sucesso Redireciona o cliente Indica um erro na parte cliente Indica um erro na parte servidor Segundo Componente: Linhas de Header Header 1 Server: Apache/12b3-dev Header 1 Header 2 From: avimeney@imeuerjbr Last Modified: Fri, 31 Dec 1999 23:59:59 Header 2 Header 3 User-Agent: Mozilla/30Gold Content-Type: text/html Header 4 Header N Content-Length: 12300 AlgumHeader: Algum Valor Header N AlgumHeader: Algum Valor Quarto Componente: Message Body <HTML> <HEAD> <TITLE>Teste</TITLE> </HEAD> <BODY> <P>Hello World!!!! </BODY> 001101010100010101001 </HTML> 110010010101000101100 100101011010011010010 101010001010101111111 111101010001010100001 101011001001010110100 110100101010100010101 011111111111010100010 1010000110
Acessando: http://wwwsomehostcom/path/filehtml Socket TCP na porta 80 Resposta do Servidor em wwwsomehostcom /10 200 OK Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/html Content-Length: 1354 Server GET /path/filehtml /10 From: someuser@jmarshallcom User-Agent: Tool/10 [blank line here] <html> <body> <h1>happy New Millennium!</h1> (more file contents) </body> </html> Apresentação Introdução Protocolos base para a Conclusão Camada de Aplicação UDP TCP IP Nível Físico
O que é : - Significa Extensible Markup Language - É uma linguagem de marcação muito parecida com HTML - Foi desenvolvida para descrever dados - Não existem tags predefinidas, você tem que definir suas próprias tags - Documentos devem ser auto-descritivos Diferenças entre e HTML: - serve para descrever dados e se concentra em como eles são - HTML serve para exibir dados e se concentra em como serão exibidos não faz nada! - foi criado para estruturar, guardar e transmitir dados - É necessário um software para fazer algo com Exemplo de : <mensagem> <para>ângelo</para> <de>rafael</de> <cabecalho>lembrete</cabecalho> <corpo>não esquecer de estudar Web s!</corpo> </mensagem> Utilização do : - Pode guardar dados fora do HTML - Pode ser usado para trocar informações por sistemas incompatíveis - Pode ser usado para compartilhar dados - Pode ser usado para guardar dados - É interpretado pela maioria dos browsers - É a mãe de outras linguagens como WAP e WML - Introdução - Exemplo Sintaxe do : <?xml version="10" encoding="iso-8859-1"?> <mensagem data= 29/08/2003 > <para>ângelo</para> <de>rafael</de> <cabecalho>lembrete</cabecalho> <corpo>não esquecer de estudar Web s!</corpo> </mensagem> - Os documentos usam uma sintaxe auto-descritiva - Todos as tags têm que possuir outra tag indicando seu fim - diferencia letras maiúsculas e minúsculas - Tags têm que começar e terminar na mesma ordem: <b><i>errado!</b></i> - Todo documento tem que possuir uma tag raiz - Os atributos têm que ser limitados por aspas - Os espaços e as novas linhas são considerados - Os comentários são iguais a HTML: <!-- Comentário --> Namespaces: <table> <tr> <td>banana</td> <td>limão</td> </tr> </table> <table> <name>mesa de café</name> <width>80</width> <length>120</length> </table> - As tags não são predefinidas - Utiliza-se um prefixo para diferenciar os namespaces <h:table xmlns:h="http://wwww3org/tr/html4/"> <h:tr> <h:td>banana</h:td> <h:td>limão</h:td> </h:tr> </h:table> <f:table xmlns:f="http://wwwexemplocom/moveis"> <f:name>mesa de café</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> - Sintaxe - Namespaces
Apresentação Introdução Protocolos base para a Conclusão Camada de Aplicação UDP TCP IP Nível Físico O que é : - Significa Simple Object Access Protocol - É um protocolo de comunicação - Foi desenvolvido para ser usado na Internet - Independente de plataforma - Independente de linguagem - É baseado em - Atravessa firewalls com facilidade Por que? - Foi desenvolvido para funcionar com - Objetos DCOM e CORBA normalmente são barrados por firewalls - O melhor método de comunicação entre aplicações é por, pois é suportado por qualquer browser e servidor de internet - permite aplicações de diferentes sistemas, de diferentes tecnologias e desenvolvidas em linguagens diferentes se comunicarem Componentes de uma mensagem : - Envelope: identifica o documento como uma mensagem - Header (opcional) - Body: contém informações de requisições e respostas - Fault (opcional) - Namespaces padrão: http://wwww3org/2001/12/soap-envelope http://schemasxmlsoaporg/soap/envelope <?xml version= 10?> <soap:envelope xmlns:soap= http://wwww3org/2001/12/soap-envelope soap:encodingstyle= http://wwww3org/2001/12/soap-encoding > <soap:header> </soap:header> <soap:body> <soap:fault> </soap:fault> </soap:body> </soap:envelope> - Introdução - Componentes
Um exemplo de : - Pedido <?xml version= 10?> <soap:envelope xmlns:soap= http://wwww3org/2001/12/soap-envelope soap:encodingstyle= http://wwww3org/2001/12/soap-encoding > <soap:body> <m:getprice xmlns:m= http://wwwexemplocom/prices > <m:item>apples</m:item> </m:getprice> </soap:body> </soap:envelope> - Resposta <?xml version= 10?> <soap:envelope xmlns:soap= http://wwww3org/2001/12/soap-envelope soap:encodingstyle= http://wwww3org/2001/12/soap-encoding > <soap:body> <m:getpriceresponse xmlns:m= http://wwwexemplocom/prices > <m:price>190</m:price> </m:getpriceresponse> </soap:body> </soap:envelope> Um exemplo de + : POST /InStock /11 Host: wwwstockorg Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version= 10?> <soap:envelope xmlns:soap= http://wwww3org/2001/12/soap-envelope soap:encodingstyle= http://wwww3org/2001/12/soap-encoding > <soap:body xmlns:m= http://wwwexemploorg/stock > <m:getstockprice> <m:stockname>ibm</m:stockname> </m:getstockprice> </soap:body> </soap:envelope> /11 200 OK Content-Type: application/soap; charset=utf-8 Content-Length: nnn <?xml version= 10?> <soap:envelope xmlns:soap= http://wwww3org/2001/12/soap-envelope soap:encodingstyle= http://wwww3org/2001/12/soap-encoding > <soap:body xmlns:m= http://wwwexemploorg/stock > <m:getstockpriceresponse> <m:price>345</m:price> </m:getstockpriceresponse> </soap:body> </soap:envelope> - Exemplo - Exemplo + Apresentação Introdução Protocolos base para a Conclusão Camada de Aplicação UDP TCP IP Nível Físico
É um documento Possui namespace definido em: http://schemasxmlsoaporg/wsdl/ Descreve serviços de forma abstrata e facilmente extensível Usado para descrever Web s Usado para localizar Web s Registry Find Requestor Registry Bind Publish Provider Provider Description Description Class Weather { public void registeruser( String username ) { usersvectoraddelement( username ); <message name= RegisterUser'> <part name= Name' type='xsd:string'/> </message> public float gettemperature( String zipcode, boolean celsius ) { float temperature; <message name='gettemperaturerequest'> <part name='zipcode' type='xsd:string'/> Parâmetros (parts) if (celsius) { temperature = 217; else temperature = 7106; return temperature; <part name='celsius' type='xsd:boolean'/> </message> <message name='gettemperatureresponse'> <part name='result' type='xsd:float'/> </message> Mensagem (message)
<operation name='gettemperature' parameterorder='zipcode celsius'> <input message='wsdlns:gettemperaturerequest' /> <output message='wsdlns:gettemperatureresponse' /> </operation> Cliente 1 / Request <message name='gettemperaturerequest'> <part name='zipcode' type='xsd:string'/> / Response port 1 <part name='celsius' type='xsd:boolean'/> </message> <message name='gettemperatureresponse'> <part name='result' type='xsd:float'/> + Cliente 2 GET Request port 2 Weather Server </message> Response <service name= Weather"> <port name='weathersoapport' binding='wsdlns:weathersoapbinding' > <documentation>my first service</documentation> <soap:address location='http://localhost/ demos/wsdl/devxpert/weatherserviceasp' /> </port> <port name='weathersoapport binding='wsdlns:weathersoapbinding' > <soap:address location= port 1 http:///weatherserviceasp' /> port 1 <port name='weatherport </port> binding='wsdlns:weatherbinding' > <port name='weatherport <http:address location="http://localhost/ demos/wsdl/devxpert/weathergetasp"/> </port> port 2 Weather Server binding='wsdlns:weatherbinding' > <http:address location= http:///weathergetasp"/> </port> port 2 Weather Server </service>
<binding name='weathersoapbinding' type='wsdlns:weathersoapport' > <soap:binding style= document' transport='http://schemasxmlsoaporg/soap/http' /> <operation name='gettemperature' > <soap:operation soapaction='http://tempuriorg/action/gettemperaturerequest' /> <input> <soap:body use='encoded' namespace='http://tempuriorg/message/' encodingstyle='http://schemasxmlsoaporg/soap/encoding/' /> </input> <types> <message> <binding> <porttype> definição de tipos (sintaxe define define define o as do formato Root Element mensagens as operações Schema) das mensagens trocadas que o durante e detalhes Web uma de protocolo operação pode realizar </types> (reuso das definições abstratas) </porttype> </message> </binding> <definitions name= Weather"targetNa mespace="http://examplec om/weatherswsdl xmlns:tns=> <output> <soap:body use='encoded' namespace='http://tempuriorg/message/' encodingstyle='http://schemasxmlsoaporg/soap/encoding/' /> </output> </operation> <operation name: RegisterUser > </binding> Elementos HTML table body title head Elementos types service message import porttype definitions binding </definitions> <?xml version="10"?> <definitions name="stockquote" targetnamespace="http://examplecom/stockquotewsdl" xmlns:tns="http://examplecom/stockquotewsdl" xmlns:xsd1="http://examplecom/stockquotexsd" xmlns:soap="http://schemasxmlsoaporg/wsdl/soap/" xmlns="http://schemasxmlsoaporg/wsdl/"> <types> <schema targetnamespace="http://examplecom/stockquotexsd" xmlns="http://wwww3org/2000/10/schema"> <element name="tradepricerequest"> <complextype> <all> <element name="tickersymbol" type="string"/> </all> </complextype> </element> <element name="tradeprice"> <complextype> <all> <element name="price" type="float"/> </all> </complextype> </element> </schema> </types> <message name="getlasttradepriceinput"> <part name="body" element="xsd1:tradepricerequest"/> </message> <message name="getlasttradepriceoutput"> <part name="body" element="xsd1:tradeprice"/> </message> <porttype name="stockquoteporttype"> <operation name="getlasttradeprice"> <input message="tns:getlasttradepriceinput"/> <output message="tns:getlasttradepriceoutput"/> </operation> </porttype> <binding name="stockquotesoapbinding" type="tns:stockquoteporttype"> <soap:binding style="document" transport="http://schemasxmlsoaporg/soap/http"/> <operation name="getlasttradeprice"> <soap:operation soapaction="http://examplecom/getlasttradeprice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <binding name="stockquotesoapbinding" type="tns:stockquoteporttype"> <soap:binding style="document" transport="http://schemasxmlsoaporg/soap/http"/> <operation name="getlasttradeprice"> <soap:operation soapaction="http://examplecom/getlasttradeprice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="stockquote"> <documentation>my first service</documentation> <port name="stockquoteport" binding="tns:stockquotebinding"> <soap:address location="http://examplecom/stockquote"/> </port> <port name="stockquoteport" binding="tns:stockquotebinding"> <soap:address location="http://examplecom/stockquote"/> </port> </service> </definitions> http://wwwcapesciencecom/downloads/wsdleditor/
Apresentação Introdução Protocolos base para a Conclusão Camada de Aplicação UDP TCP IP Nível Físico Find Find Registry Bind Publish Registry Description Publish Business Registration Business Registration White Pages Yellow Pages Green Pages API Nome: Padaria do Sr Manoel Ltda Contato: CNPJ: Dona 35402759/9999-99 Maria Lisboa Descrição: Área de atividade: Importantecomércio padaria no de subúrbio alimentos User do Rio Localização: Serviço-1: de Janeiro Encomendar América Pães frescos do Sul pães a -toda Brasil hora Acesso: maria@padariadomanelcombr API Taxonomias Serviço-2: ObterPreços padrão como: North Acesso: American http://wwwpadariacombr/opwsdl Industry Classification System (NAICS) NAICS código 3341: computer manufacturers Standard Industrial Classification (SIC) Publishers API Inquiry API Requestor Provider Requestor Provider Registry
Business Registration businessentity Universally Unique ID (UUID) businessentity White Pages Yellow Pages Green Pages business business business business business business Elementos HTML table body title head Elementos businessentity business bindingtemplate tmodel bindingtemplate bindingtemplate bindingtemplate tmodel tmodel tmodel bindingtemplate bindingtemplate bindingtemplate tmodel tmodel tmodel <tmodel authorizedname="" operator= "" tmodelkey= ""> <name>weather </name> <description xml:lang= "en > description of a standard weather service interface </description> <overviewdoc> <description xml:lang="en"> source document </description> <overviewurl> http://examplecom/weatherswsdl </overviewurl> </overviewdoc> <categorybag> <keyedreference tmodelkey= "UUID:" keyname= "uddi-org:types" keyvalue= "wsdlspec /> </categorybag> </tmodel> <tmodel authorizedname="" operator= "" tmodelkey= ""> <name>weather </name> <description xml:lang= "en > description of a standard weather service interface </description> <overviewdoc> <description xml:lang="en"> source document </description> <overviewurl> http://examplecom/weatherswsdl </overviewurl> </overviewdoc> <categorybag> <keyedreference tmodelkey= "UUID:" keyname= "uddi-org:types" keyvalue= "wsdlspec /> </categorybag> </tmodel>
API Publishers API Inquiry API Marketplaces Publishers API Inquiry API API save_business delete_business find_business get_businessdetail Search Portals Registry save_service delete_service find_service get_servicedetail save_binding delete_binding find_binding get_bindingdetail save_tmodel delete_tmodel find_tmodel get_tmodeldetail Technical Users Camada de Aplicação UDP TCP IP Nível Físico Apresentação Introdução Protocolos base para a Conclusão
HelloWorldjava Package comwroxhelloworldservice; Public class HelloWorld { String getmessage() { return Hello World! ; HelloWorldDDxml <?xml version= 10?> <isd:service xmlns:isd= http://xmlapacheorg/xml-soap/deployment id= urn:helloworld > <isd:provider type= java scope= Application methods= getmessage > <isd:java class= comwroxhelloworldservicehelloworld static= false /> </isd:provider> <isd:faultlistener>orgapachesoapserverdomfaultlistener</isd:faultlistener> </isd:service> Registrando o serviço: > java orgapachesoapservermanagerclient http://localhost:8080/soap/servlet/rpcrouter deploy HelloWorldDDxml HelloWorldClientjava import orgapachesoapconstants; import javaneturl; import orgapachesoapfault; import orgapachesoaprpccall; import orgapachesoaprpcresponse; import orgapachesoaprpcparameter; public class HelloWorldClient { static String DEFAULT_ENDPOINT = http://localhost:8080/soap/servlet/rpcrouter ; public static void main(string args[]) throws Exception { String endpoint = DEFAULT_ENDPOINT; if (argslength == 1) { endpoint = args[0]; else if (argslength > 1) { Systemoutprintln( java HelloWorldClient [endpoint] ); Call call = new Call(); callsettargetobjecturi( urn:helloworld ); callsetmethodname( getmessage ); callsetencodingstyleuri(constantsns_uri ENC); - Java e ISD - Cliente I HelloWorldClientjava (continuação) URL url = new URL(endPoint); Response resp = callinvoke(url, ); if (respgeneratedfault()) { Fault fault = respgetfault(); Systemoutprintln( The Following Error Occured: ); Systemoutprintln( Fault Code = + faultgetfaultcode()); Systemoutprintln( Fault String = + faultgetfaultstring()); else { Parameter result = respgetreturnvalue(); Systemoutprintln(resultgetValue()); Pedido POST /soap/servlet/rpcrouter /10 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: 414 Action: <?xml version= 10 encoding= UTF-8?> <-ENV:Envelope xmlns:-env= http://schemasxmlsoaporg/soap/envelope/ xmlns:xsi= http://wwww3org/1999/schema-instance xmlns:xsd= http://wwww3org/1999/schema > <-ENV:Body> <nsl:getmessage xmlns:nsl= urn:helloworld -ENV:encodingStyle= http://schemasxmlsoaporg/soap/encoding/ > </nsl:getmessage> </-ENV:Body> </-ENV:Envelope> Chamando o serviço: > java HelloWorldClient - Cliente II - Request
Resposta /11 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 485 Date: Wed, 19 Dec 2001 04:10:28 GMT Server: apache Tomcat/401 (/11 Connector) Set-Cookie: JSESSIONID=D712520676C524504110A4C5D6E672E9;Path=/soap <?xml version= 10 encoding= UTF-8?> <-ENV:Envelope xmlns:-env= http://schemasxmlsoaporg/soap/envelope/ xmlns:xsi= http://wwww3org/1999/schema-instance xmlns:xsd= http://wwww3org/1999/schema > <-ENV:Body> <nsl:getmessageresponse xmlns:nsl= urn:helloworld -ENV:encodingStyle= http://schemasxmlsoaporg/soap/encoding/ > <return xsi:type= xsd:string >Hello World!</return> </nsl:getmessageresponse> </-ENV:Body> </-ENV:Envelope> Apresentação Introdução Protocolos base para a Conclusão - Response Conclusão - Lista Bibliografia: http://wwwimeuerjbr/~tpe_g01