Apresentação WebService e Schema XML

Preview:

Citation preview

Schema XML Schema XML & &

Web ServicesWeb Services

Jeferson BitencourtRoberto Marini SteckXavier C Neto

HistóricoHistóricoDTD - Definição de Tipo de

Documento;DTD foi o primeiro padrão

fortemente utilizado para definição e validação de XMLs;

Utilizado para validações do SGML;

Em 2001 se iniciou a mudança para XSD;

DTD Exemplo DTD Exemplo <!DOCTYPE NEWSPAPER [

<!ELEMENT NEWSPAPER (ARTICLE+)><!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)><!ELEMENT HEADLINE (#PCDATA)><!ELEMENT BYLINE (#PCDATA)><!ELEMENT LEAD (#PCDATA)><!ELEMENT BODY (#PCDATA)><!ELEMENT NOTES (#PCDATA)>

<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED><!ATTLIST ARTICLE EDITOR CDATA #IMPLIED><!ATTLIST ARTICLE DATE CDATA #IMPLIED><!ATTLIST ARTICLE EDITION CDATA #IMPLIED>

<!ENTITY NEWSPAPER "Vervet Logic Times"><!ENTITY PUBLISHER "Vervet Logic Press"><!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press">

]>

XML ShemaXML ShemaÉ uma linguagem baseada no formato

XML para validar documentos XML;Foi recomendada e evoluída pelo

W3C;XSD (XML Schema Definition),

documento que descreve a estrutura de um documento XML;

Todas as linguagens de programação possuem APIs para trabalhar com XSD;

Suportam amplo tipo de dados;Suportam namespaces;Suportam criação de tipos derivados

dos tipos básicos;Suportam criação de estrutura

complexas para validação, como ranges de dados e limites;

Suportam relacionamentos entre tipos de dados no Schema(reaproveitamento);

XML ShemaXML Shema

XML Schema – Tipos ;XML Schema – Tipos ;Existem cinco conjuntos de tipos de

dados pré-definidos em XSD. Esses conjuntos de tipos de dados são:

I. Numéricos - xsd:float, xsd:double, xsd:decimal, xsd:integer, xsd:negativeInteger , entre outros;

II. Data/Hora - xsd:dateTime, xsd:time, xsd:gYear , entre outros

III.String - xsd:string, xsd:normalizedString, xsd:token

IV.Binários - xsd:hexBinary, xsd:base64BinaryV. Booleanos - xsd:boolean

A primeira linha é sempre a definição padrão de um XML;

Na segunda, a definição de no mínimo o namespace de tipos básicos, onde é possível adicionar outras definições de tipos, incluindo a sua;

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">...</xs:schema>

XML Schema – EstruturaXML Schema – Estrutura

XML Schema – EstruturaXML Schema – Estrutura

Elementos do XML<xsd:element name="endereco"

type="xsd:string" minOccurs="0" maxOccurs="1"/>

Atributos dos Elementos<xsd:attribute name="datacadastro"

type="xsd:dateTime" use="optional"/>

Elementos Complexos, para que esses elementos sejam declarados é necessário utilizar tag “complexType”;

Podemos ter elementos complexos ‘dentro’ de elementos complexos;

<xsd:element name="cliente"> <xsd:complexType> <xsd:element name="nome" type="xsd:string"/> <xsd:element name="endereco"

type="xsd:string"/> <xsd:element name="cep" type="xsd:integer"/> </xsd:complexType> </xsd:element>

XML Schema – EstruturaXML Schema – Estrutura

Posso criar Restrições para validação da definição do XML;

<xs:element name="password">  <xs:simpleType>    <xs:restriction base="xs:string">      <xs:minLength value="5"/> <xs:maxLength value="8"/>    </xs:restriction>  </xs:simpleType></xs:element>

<xs:element name="car“ ><xs:simpleType>  <xs:restriction base="xs:string">    <xs:enumeration value="Audi"/>    <xs:enumeration value="Golf"/>    <xs:enumeration value="BMW"/>  </xs:restriction></xs:simpleType>

XML Schema – EstruturaXML Schema – Estrutura

XML Schema – EstruturaXML Schema – EstruturaGrupos sequence, all e choice. Define a ordem correta e obrigatória dos elementos.<xsd:sequence> <xsd:element name="nome" type="xsd:string"/> <xsd:element name="datanasc" type="xsd:date"/> </xsd:sequence>

Obriga apenas que os elementos constem no documento<xsd:all> <xsd:element name="nome" type="xsd:string"/> <xsd:element <xsd:element name="telefone"

type="xsd:string"/> </xsd:all>

Obriga que somente um dos elementos especificados conste no documento xml

<xsd:choice> <xsd:element name="CPF" type="xsd:string"/> <xsd:element name="RG" type="xsd:string"/> </xsd:choice>

XML Schema - ExemploXML Schema - Exemplo<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">  <xs:complexType>    <xs:sequence>      <xs:element name="orderperson" type="xs:string"/>      <xs:element name="shipto">        <xs:complexType>          <xs:sequence>            <xs:element name="name" type="xs:string"/>            <xs:element name="address" type="xs:string"/>            <xs:element name="city" type="xs:string"/>            <xs:element name="country" type="xs:string"/>          </xs:sequence>        </xs:complexType>      </xs:element>      <xs:element name="item" maxOccurs="unbounded">        <xs:complexType>          <xs:sequence>            <xs:element name="title" type="xs:string"/>            <xs:element name="note" type="xs:string" minOccurs="0"/>            <xs:element name="quantity" type="xs:positiveInteger"/>            <xs:element name="price" type="xs:decimal"/>          </xs:sequence>        </xs:complexType>      </xs:element>    </xs:sequence>    <xs:attribute name="orderid" type="xs:string" use="required"/>  </xs:complexType></xs:element></xs:schema>

SOASOASOA é uma arquitetura para

computação distribuída;SOA não é somente WebService;A arquitetura SOA pode possuir

vários componentes de integração e serviços:- Enterprise Service Bus- WebService- Business Process Mamagement- Legacy Services

Defining a Service More PreciselyIt is important to be clear about what we mean when we use the word "service" in the SOA context. Typically

we are thinking about a business service, such as making a hotel reservation or buying a computer online, but keep in mind that these services do not include a visible element. Services do not have a frontend-they expose either functionality or data with which other programs can interact through web browsers, desktop applications, or even other services.

These services might implement business functions like searchForAvailability or setShippingMethod. In this respect they are distinctly different from technical services, which might provide messaging or transactional functions such as updating data or monitoring transactions. By design, SOA deliberately decouples business services from technical services so that your implementation does not require a specific underlying infrastructure or system. In short, a SOA service is the encapsulation of a high-level business concept.

A SOA service is composed of three parts:A service class that implements the service to be providedA host environment to host the serviceOne or more endpoints to which clients will connectAll communication with a service happens through the endpoints. Each endpoint specifies a contract (which

we will discuss in greater detail later in this chapter) that defines which methods of the service class will be accessible to the client through that specific endpoint.

Because the endpoints have their own contracts, they may expose different (and perhaps overlapping) sets of methods. Each endpoint also defines a binding that specifies how a client will communicate with the service and the address where the endpoint is hosted.

You can think of SOA services in terms of four basic tenets:Boundaries are explicit.Services are autonomous.Schemas and contracts are shared, but not classes.Compatibility is based on policy.These fundamental tenets help drive the design of the services you'll create, so it's worth exploring each in

detail.

WebServiceWebServiceÉ uma solução padronizada utilizada

na integração de sistemas diferentes;Utiliza XMLs para troca de

informações;Permite integrar diferentes

plataformas;Pode ser implementada em qualquer

linguagem;Permite aplicação de segurança em

vários níveis;

How Does it Work?The basic Web services platform is XML + HTTP.XML provides a language which can be used

between different platforms and programming languages and still express complex messages and functions.

The HTTP protocol is the most used Internet protocol.Web services platform elements:SOAP (Simple Object Access Protocol)UDDI (Universal Description, Discovery and

Integration)WSDL (Web Services Description Language)We will explain these topics later in the tutorial.

SOAP - Simple Object Access SOAP - Simple Object Access Protocol Protocol O padrão W3C não determina o protocolo de

transporte dos dados para o WebService .... mas mensagens SOAP são documentos XML que aderem a uma especificação fornecida pelo órgão W3C.

É baseado em XML e possui XSD que o define;Permite Extensões do Protocolo para

evoluções;SOAP é independente do protocolo de

comunicação da rede, Http, TCP/IP, MQ, JMS ...SOAP é independente do plataforma e

lingugem de programação. Existem programas Cobol Mainframe que geram este protocolo para comunicação;

SOAP - Simple Object Access SOAP - Simple Object Access Protocol Protocol

SOAP Message;SOAP Envelope, que possui

informações de ‘entrega’ da mensagem para processamento;

SOAP Header, onde temos informações de como processar a mensagem e apliaçação de extensões;

SOAP Body, onde são adicionadas os dados(payloads) e as descrições de falhas(faults);

WSDL - Web Service Description WSDL - Web Service Description LanguageLanguageEspecificação desenvolvida pela

W3C para descrever Web Service em formato XML;

Também define a localização(end point) do Serviço;

Aceita que a definição dos dados das mensagens esteja em seu arquivo;

Permite extensões no modelo;

<?xml version="1.0" encoding="UTF-8"?>     <wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/"  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">       <wsdl:message name="somaRequest">        <wsdl:part name="valor1" type="xsd:int"/>        <wsdl:part name="valor2" type="xsd:int"/>      </wsdl:message>      <wsdl:message name="somaResponse">        <wsdl:part name="somaReturn" type="xsd:int"/>      </wsdl:message>      <wsdl:portType name="Servico">        <wsdl:operation name="soma" parameterOrder="valor1 valor2">          <wsdl:input message="impl:somaRequest" name="somaRequest"/>          <wsdl:output message="impl:somaResponse" name="somaResponse"/>        </wsdl:operation>      </wsdl:portType>      <wsdl:binding name="ServicoSoapBinding" type="impl:Servico">        <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>        <wsdl:operation name="soma">          <wsdlsoap:operation soapAction=""/>          <wsdl:input name="somaRequest">            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"/>          </wsdl:input>          <wsdl:output name="somaResponse">            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"   use="encoded"/>          </wsdl:output>        </wsdl:operation>      </wsdl:binding>      <wsdl:service name="ServicoService">        <wsdl:port binding="impl:ServicoSoapBinding" name="Servico">          <wsdlsoap:address location="http://localhost:8080/axis/Servico.jws"/>        </wsdl:port>      </wsdl:service>   </wsdl:definitions>

WSDL - ExemploWSDL - Exemplo

UDDIUDDI

Web Service – FuncionamentoWeb Service – Funcionamento

Referência do W3CReferência do W3C

ExemplosExemplosNota Fiscal EletronicaDDACorreios

Colcoar um WebService apontando para os correios

Até mainframe consegue responder ws exemplo IBM

Vantagens e Vantagens e desvantagensdesvantagens

Futuro Rest WebServiceBenefícos sobre o soapContras

Recommended