Endpoint:
Nombre del host que alberga el web service + nombre del web service.
Si el host fuera http://www.prueba.com y el web service BasicService, la URL completa, es decir, el endpoint sería http://www.prueba.com/BasicService
QName(Qualified name)
El web service puede dar soporte a una o más operaciones. Cada operación debe tener un nombre global único. Para ello, se declara un namespace que es como un paquete en Java pero con formato URL. El QName está formado por el namespace + el nombre de la operación.
RPC style web service
La operación concatenar puede tomar 2 parámetros, "s1" y "s2", ambos tipo String y devuelve como resultado otro String que es la concatenación de ambos parámetros.
Sin embargo, el tipo string debe ser de un lenguaje de programación neutral. Para ello, se usa la especificación XML schema.
En web services la llamada de la operación definida por un web service se denomina "mensaje de entrada" y cada parámetro se denomina "parte". El valor de retorno es el "mensaje de salida" y puede contener múltiples partes. Con estos términos podríamos definir la interface de la operación:
Para invocar esta operación, se podría mandar un elemento XML como mensaje de entrada:
<foo:concatenar xmlns:foo="http://prueba.com/bs">
<s1>abc</s1>
<s2>123</s2>
</foo:concatenar>
El resultado sería un mensaje de salida:
<foo:concatenar xmlns:foo="http://prueba.com/bs">
<retorno>abc123</retorno>
</foo:concatenar>
Este estilo de web service se llama "RPC Style" web service. Como puede observarse, el QName de la operación y el nombre de las partes se utilizan para crear los mensajes de entrada y salida.
Document style web service
Schema:
<xsd:schema
targetNamespace="http://ttdev.com/ss"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="concatRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="s1" type="xsd:string"/>
<xsd:element name="s2" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
El schema se incluye en la interface del web service:
Como puede observarse, una parte (un parámetro) puede ser declarado como un elemento particular (<concatRequest>) definido en un schema o como un elemento con un tipo particular (string definido en la especificación XML schema). En cualquier caso se identifica usando un QName.Cuando alguien invoque la operación, se mandará un mensaje de entrada con un elemento <concatRequest>
<foo:concatRequest xmlns:foo="http://ttdev.com/ss">
<s1>abc</s1>
<s2>123</s2>
</foo:concatRequest>Similarmente, para el mensaje de salida puedes especificar que contendrá una única parte, y que será un elemento <concatResponse>
<foo:concatResponse xmlns:foo="http://ttdev.com/ss">
abc123
</foo:concatResponse>
Comparación de los mensajes de entrada en RPC y Document style.
La principal diferencia es que en el estilo RPC no se puede validar contra un schema, mientras que en el estilo Document si. Por esta razón, Document se está convirtiendo en el estilo dominante.
Determinando la operación en un Document Style web service:
Port type
Binding
Los port types pueden ser accedidos utilizando diferentes formatos de mensaje. Hasta ahora se ha empleado el formato “Simple Object Access Protocol (SOAP)”. Otro tipo de formato podría ser texto plano.
Además del formato del mensaje, un port type puede permitir que el mensaje sea transportado en una petición HTTP POST o en un email. Cada combinación que se soporta se llama “binding”. La combinación más común es SOAP + HTTP. Port
Supón que hay mucha gente usando el web service y decides hacerlo accesible en más de un computador. Puedes desplegar el binding1 descrito arriba en las computadoras c1, c2 y c3 y desplegar el binding2 en c3. En este caso hay 4 puertos.
En las 3 computadoras habrá instalado cierto software que implementa el port type. No es necesario que sea el mismo software en las 3 computadoras; en c1 puede estar escrito en Java mientras que en c2 puede estar escrito en C#. Lo importante es que deben soportar todas las operaciones descritas en el port type y el formato de mensaje y transporte especificados en el binding.
Los ports se incluyen en la interface del web service.Target namespace
El namespace debe ser globalmente único, por ejemplo http://ttdev.com/ss. Este namespace tiene formato URL, puede haber gente que intente acceder a él como a una página web y cuando no funcione, pueden pensar que el web service es incorrecto. Para evitar esta confusión se debe emplear formato URN.
El namespace debe ser una URI. Hay dos tipos de URI (Uniform Resource Identifier). Una es URL como en http://prueba.com. Otra es URN con formato <tipo-objeto>:<id-objeto>
WSDL
Interface del web service.
Describe completamente el web service. El lenguaje de descripción se llama WSDL (Web Service Description Language).
Muy buena introducción.
ResponderEliminar