1 / 47

Haciendo visible el camino a .NET IV Encuentro de programadores Microsoft & Danysoft

Arquitecturas orientadas a servicios .NET y Servicios Web: Creación y extensión con WSE 2.0 Leonardo Diez Dolinski | Danysoft. Haciendo visible el camino a .NET IV Encuentro de programadores Microsoft & Danysoft. Agenda. Introducción a XML Servicios Web Desarrollo de Servicios Web con .NET

mick
Download Presentation

Haciendo visible el camino a .NET IV Encuentro de programadores Microsoft & Danysoft

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitecturas orientadas a servicios.NET y Servicios Web: Creación y extensión con WSE 2.0Leonardo Diez Dolinski | Danysoft Haciendo visible el camino a .NETIV Encuentro de programadores Microsoft & Danysoft

  2. Agenda • Introducción a XML • Servicios Web • Desarrollo de Servicios Web con .NET • Servicios web avanzados: WSE 2.0

  3. Introducción a XML

  4. Documentos XML¿Por qué XML? • Estándar para intercambio de datos • Entendible a los humanos • Múltiples plataformas • Fácil de extender • Define tanto contenido como estructura • Separado de la presentación

  5. Documentos XMLEstructura Declaración XML Comentario <?xml version=“1.0” encoding=“utf-8”?> <!-– Ejemplo de comentario --> <Pedidos> <Pedido descuento=“no”> <idarticulo>12345</idarticulo> <nombre>Lápiz</nombre> </Pedido> </Pedidos> Elemento de documento Atributo Elemento Texto contenido

  6. Documentos XMLNamespaces <Pedidos xmlns=“http://mycompany.com”> <Pedido> <idarticulo>12345</idarticulo> </Pedido> </Pedidos> Namespace por defecto Namespace explícito <myns:Pedidos xmlns:myns=“http://mycompany.com”> <myns:Pedido> <myns:idarticulo>12345</myns:idarticulo> </myns:Pedido> </myns:Pedidos>

  7. Procesar XMLXMLDOM • Representación en memoria de un documento <?xml version=“1.0” encoding=“utf-8”?> <Pedidos> <!-– Ejemplo de comentario --> <Pedido descuento=“no”> <idarticulo>12345</idarticulo> <nombre>Lápiz</nombre> </Pedido> </Pedidos> root Pedidos comentario Pedido descuento idarticulo nombre

  8. Procesar XMLXMLDOM (II) • Implementado en la clase XmlDocument • Ventajas • Óptimo para lecturas repetidas • Fácil de modificar • Inconvenientes • Parsing de todo el documento • Alto consumo de memoria • No está indexado XmlDocument doc = new XmlDocument(); doc.LoadXml(xml);

  9. Procesar XMLAcceso secuencial • Ahorro de memoria • El documento se procesa mientras se lee • Óptimo cuando • Sólo accedemos a un elemento • Sólo procesamos cada elemento una vez • Estamos hidratando una clase

  10. Procesar XMLAcceso secuencial (II) • Leer secuencialmente un documento • XmlTextReader XmlTextReader reader = new XmlTextReader(“MiDocumento.xml”); while(reader.Read()) { if(reader.LocalName == “idarticulo”) { Console.WriteLine(reader.ReadString()); } }

  11. Procesar XMLAcceso secuencial (III) • Escribir secuencialmente un documento • XmlTextWriter • Conectable a cualquier XML en memoria • Vuelca su contenido • Permite personalización de formato StringWriter stringWriter = new StringWriter(); XmlTextWriter writer = new XmlTextWriter(stringWriter); writer.WriteStartElement("Pedidos"); writer.WriteComment("Comentario"); writer.WriteEndElement();

  12. Procesar XMLXPath • Lenguaje para realizar consultas sobre XML • Basado en las rutas de archivo • Muy sencillo Operador Descripción Ejemplo / Hijo Hijo Empleado / Nombre / // Descendientes recursivos Empleados // Nombre . Contexto actual . // Nombre .. Padre .. / Nombre @ Atributo Empleado / @ID * Comodín Empleado / *

  13. Procesar XMLXPath (II) • XmlDocument admite sentencias XPath • Búsquedas lentas • Elementos no indexados • Versión optimizada con XPathDocument XmlNode node = xmlDocument.SelectSingleNode("Pedidos/Pedido/nombre");

  14. Procesar XMLEsquemas XSD • Definen la estructura de un documento • Formato: XML • Basándose en tipos: • Estándar: xs:string, xs:long • Simples: Especializaciones de los estándar • Complejos: Estructuras de datos

  15. Procesar XMLEsquemas XSD (II) <?xml version="1.0"?> <xs:schema targetNamespace="http://tempuri.org/messagein" xmlns="http://tempuri.org/messagein" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" > <xs:element name="Pedido"> <xs:complexType> <xs:sequence> <xs:element name="idarticulo" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="nombre" type="xs:string" minOccurs="1" maxOccurs="1"/> </xs:sequence> <xs:attribute name="descuento" type="xs:string" /> </xs:complexType> </xs:element> </xs:schema> <?xml version="1.0"?> <Pedido descuento="no" xmlns="http://tempuri.org/messagein"> <idarticulo>12345</idarticulo> <nombre>Bolsa</nombre> </Pedido>

  16. Procesar XMLSerialización XML • Las clases .NET son serializables en XML • Código autogenerado y compilado • El XML puede ser moldeado con atributos en la clase • XmlAttribute, XmlIgnore, XmlArray… • Herramienta xsd.exe • Genera el código de una clase a partir de un XSD • Genera un XSD a partir de una clase

  17. XmlSerializer Procesar XMLSerialización XML (II) Clases .NET XSD.EXE XSD.EXE XML XSD

  18. demo Serialización XML

  19. Servicios web

  20. Protocolo de comunicaciones 1 Formato de mensaje 2 Lenguaje de descripción 3 Mecanismo de Discovery 4 Arquitecturas distribuidasAntes 3 IDL Máquina A Máquina B 2 petición NDR IDLproxy IDLstub respuesta RPC (TCP) Registro Registro 1 4 Inspección máquina B

  21. Arquitecturas distribuidasAntes (II) • Múltiples tecnologías para hacer lo mismo • No interoperables entre sí • Ligados a una plataforma DCOM CORBA Java RMI RPC Protocol RPC IIOP IIOP or JRMP Message Format NDR CDR Java Ser. Format Description IDL OMG IDL Java Discovery Windows Registry Naming Service RMI Registry or JNDI

  22. Arquitecturas distribuidasAhora • Los usuarios no quieren cerrarse a una plataforma • Es necesaria una arquitectura independiente… • De la plataforma • Del lenguaje • De los objetos • De los mecanismos de llamada • Bienvenido a SOA… • Service Oriented Arquitecture

  23. Arquitecturas distribuidasSOA • SOA ve el mundo de una forma distinta • Servicios autónomos • Fronteras explícitas • Plataformas dispares • Integración basada en XML • Se comparte el esquema, no la clase

  24. Arquitecturas distribuidasServicios Web • Los servicios web son la clave de SOA • Redefinición de las tecnologías distribuidas basada en XML • Comunicación vía protocolos de Internet • HTTP, SMTP, FTP… • SOAP como formato de mensaje • WSDL como definición de servicios • UDDI como localizador

  25. Servicios WebProtocolos Servicios publicados Servicio 1 Publicación mediante UDDI Servicio 1 Descubrimiento mediante UDDI Servicio Servicio Web Aplicación Cliente Registro UDDI Descripción mediante WSDL XML Schema WSDL Invocación/Acceso mediante SOAP Transporte mediante HTTP / SMTP / WAP Mensaje SOAP

  26. Servicios WebEjemplo SOAP POST /webservice3/service1.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://mycompany.com/webservices/Multiplicar" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> </soap:Header> <soap:Body> <Multiplicar xmlns="http://mycompany.com/webservices/"> <n1>2</n1> <n2>3</n2> </Multiplicar> </soap:Body> </soap:Envelope> HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <MultiplicarResponse xmlns="http://mycompany.com/webservices/"> <MultiplicarResult>int</MultiplicarResult> </MultiplicarResponse> </soap:Body> </soap:Envelope>

  27. Servicios WebEjemplo WSDL <types> <s:schema elementFormDefault="qualified" targetNamespace="http://mycompany.com/webservices/"> <s:element name="Multiplicar"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="n1" type="s:int" /> <s:element minOccurs="1" maxOccurs="1" name="n2" type="s:int" /> </s:sequence> </s:complexType> </s:element> <s:element name="MultiplicarResponse"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="MultiplicarResult" type="s:int" /> </s:sequence> </s:complexType> </s:element> <s:element name="int" type="s:int" /> </s:schema> </types> <?xml version="1.0" encoding="utf-8"?> <definitions> <types> </types> <message> </message> <portType> </portType <binding> </binding> <service> </service> </definitions> <message name="MultiplicarSoapIn"> <part name="parameters" element="s0:Multiplicar" /> </message> <message name="MultiplicarSoapOut"> <part name="parameters" element="s0:MultiplicarResponse" /> </message> <binding name="Service1Soap" type="s0:Service1Soap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http“ style="document" /> <operation name="Multiplicar"> <soap:operation soapAction="http://mycompany.com/webservices/Multiplicar“ style="document" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding> <portType name="Service1Soap"> <operation name="Multiplicar"> <input message="s0:MultiplicarSoapIn" /> <output message="s0:MultiplicarSoapOut" /> </operation> </portType> <service name="Service1"> <port name="Service1Soap" binding="s0:Service1Soap"> <soap:address location="http://server/webservice/service1.asmx" /> </port> </service>

  28. Desarrollo de Servicios Web con .NET

  29. Biz Tier Logic HTML OS Services XML XML Arquitectura .NETGeneración de aplicaciones .NET Otros servicios Otros servicios XML Servicios Web Formularios Web XML Browsers estándar Lógica aplicación Clientes inteligentes Servicios SO Servicios building blocks XML Dispositivos móviles

  30. Implementación .NETExposición de servicios web • ASP.NET permite exponer clases .NET como servicios web • Atributos [WebService], [WebMethod] • Traduce peticiones SOAP • Genera automáticamente WSDL • Acceso a toda la funcionalidad ASP.NET • Sesión • Seguridad • Extensiones • …

  31. Implementación .NETConsumo de servicios web • Herramienta WSDL.exe • Genera un proxy a partir de un WSDL • Llamada por “add reference” en VS.NET • Clase derivada de SoapHttpClientProtocol • Con métodos semejantes al Web Service • Métodos comunes • Autentificación • Proxies • Llamadas asíncronas

  32. demo Servicios Web con .NET

  33. Implementación .NETTipos complejos • .NET utiliza la serialización XML • Recepción de peticiones SOAP • Envío de respuestas SOAP • .NET utiliza la herramienta xsd • Generación del WSDL • Generación del proxy

  34. demo Tipos complejos

  35. Servicios Web avanzados WSE 2.0

  36. WS-I¿Es suficiente? • El estándar básico (SOAP, WSDL, UDDI) sólo cubre una comunicación simple • Llamadas a servicios • Definición de interfaces • Inspección de funcionalidad • Las aplicaciones distribuidas necesitan más • Seguridad • Mensajería fiable • Transacciones • …

  37. Especificaciones WS-*El futuro • Stack completo basado en servicios web • En desarrollo por los principales fabricantes de software Aplicaciones conectadas Procesos de negocio Administración … Transacciones Seguridad Fiabilidad Metadatos Mensajería XML HTTP TCP SMTP …

  38. Mensajería WS-Addressing WS-Eventing MTOM (Attachments) Fiabilidad WS-ReliableMessaging Seguridad WS-Security WS-Trust WS-SecureConversation WS-Federation Transacciones WS-Coordination WS-AtomicTransaction WS-BusinessActivity Metadatos WS-Policy WS-PolicyAssertions WS-PolicyAttachment WS-SecurityPolicy WS-Discovery WS-MetadataExchange Especificaciones WS-*Estándares Todas las especificaciones en http://msdn.microsoft.com/webservices/understanding/specs/default.aspx

  39. Web Services Enhancements¿Qué es? • Extensión de los Servicios Web de .NET • Implementa varias especificaciones WS-* • Plenamente soportado • Pero implementa especificaciones en borrador • Integrado con Visual Studio Descargable en http://msdn.microsoft.com/webservices/building/wse/default.aspx

  40. Mensajería WS-Addressing WS-Eventing MTOM (Attachments) Fiabilidad WS-ReliableMessaging Seguridad WS-Security WS-Trust WS-SecureConversation WS-Federation Transacciones WS-Coordination WS-AtomicTransaction WS-BusinessActivity Metadatos WS-Policy WS-PolicyAssertions WS-PolicyAttachment WS-SecurityPolicy WS-Discovery WS-MetadataExchange Web Services EnhancementsEstándares soportados

  41. Web Services EnhancementsDesarrollo • En cliente • Visual Studio crea dos proxies en cada referencia • <ServiceName> • <ServiceName>WSE • En servidor • Mismo código • Configuración en web.config • Funcionalidad adicional disponibleen SoapContext

  42. Disponible seleccionando Visual Studio Tools en la instalación Configuración accesible en Proyecto / WSE Settings 2.0 Web Services EnhancementsIntegración con Visual Studio

  43. Web Services EnhancementsCaracterísticas principales • WS-Security • Autenticación (Usuario/Password, X509, Kerberos) • Integridad (firma digital) • Privacidad (cifrado) • WS-Trust y WS-SecureConversation • Establecimiento de diálogos seguros • WS-Policy • Fichero de configuración que especifica requisitos para los mensajes

  44. Web Services EnhancementsCaracterísticas principales (II) • WS-Addressing • Routing de mensajes • Especificados con WS-Referral • Permite routing según contenido • WS-Attachments • Envío de ficheros binarios

  45. demo WSE

  46. Más información • Danysoft • Información, artículos técnicos, www.danysoft.com • Servicios Profesionales, sp@danysoft.com • Software, utilidades, licencias y libros: www.danyshop.com, info@danysoft.com

  47. Gracias por su asistencia • Para cualquier consulta, no dude en contactar con Danysoft: • Servicios Profesionales: 902 343484 | sp@danysoft.com • Software, utilidades y licencias: 902 123146 | info@danysoft.com • www.danysoft.com

More Related