La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Essential Web Services : Programando con.NET y WSE 2.0 Eduardo Mangarelli Gabriel Cor

Presentaciones similares


Presentación del tema: "Essential Web Services : Programando con.NET y WSE 2.0 Eduardo Mangarelli Gabriel Cor"— Transcripción de la presentación:

1 Essential Web Services : Programando con.NET y WSE 2.0 Eduardo Mangarelli Gabriel Cor

2 Agenda Arquitecturas Orientadas a Servicios ASMX WebMethods WSE 2.0 Básico Características principales de WSE 2.0 API de Mensajería de WSE 2.0

3 Como era antes Machine A RPC (TCP) Machine B RPC NDR RegistryRegistry IDL proxy IDL stub discovers machine B 1 2 Communications protocol Message format Description language 3 Discovery mechanism IDL 3 request response

4 Sin estándares ni interop Tecnologías de objetos diferían en muchas maneras Interoperabilidad muy compleja Encierra a los clientes en la misma tecnología DCOMCORBA RPCIIOP NDRCDR IDLOMG IDL RPC Protocol Message Format Description Windows RegistryNaming ServiceDiscovery Java RMI IIOP or JRMP Java Ser. Format Java RMI Registry or JNDI

5 Hacia adelante Los desarrolladores están cansados de estar atados a una tecnología La clave es diseñar una arquitectura que no tenga pre-supuestos acerca de … PlataformaLenguajeObjetosRPC Service Oriented Architecture (SOA)

6 El nuevo mundo de SOA SOA requiere una visión diferente del mundo Servicios autónomos Fronteras explícitas, asumir heterogeneidad Integración basada en formatos de mensaje XML (compartir esquemas, no clases) Compatibilidad basada en políticas

7 Web Services Las tecnologías de invocaciónremota (Web services/remoting) son los bloques de construcción de SOA Los Webservices representan una revolución basada en XML de tecnologías distribuidas Diseñados alrededor de la interoperatbilidad Protocolos de comunicación estándar Formatos de representación de datos estándar Lenguajes de descripción estándar Mecanismos de descubrimiento estándar

8 Definición de Web Services Una aplicación o servicio que… Se comunica por protocolos abiertos de Internet Procesa los mensajes XML empaquetados en SOAP Describe los mensajes usando un esquema XML Provee una descripción de su interfaz con WSDL Puede ser descubierto via UDDI Web Service

9 XML Namespaces Perfil básico de Web Services (WS-I) XSD SOAP WSDL UDDI Portable type system Mensajes serializados Empaquetado Descripción de Endpoint Registro de endpoints Wire protocols Description languages Discovery mechanisms Detalles en ws-i.org

10 UDDI Server A la manera de WebServices Machine A HTTP + SOAP Machine B Invoke XML WSDL proxy WSDL stub 1 2 Communications protocol Message format Description language 3 Discovery mechanism Web Service WSDL WSDL WSDL WSDL request response

11 UDDI Server A la manera WebServices Machine A TCP + SOAP Machine B Send XML Message XML 1 2 Communications protocols Message format Description language 3 Discovery mechanism Web Service WSDL WSDL WSDL WSDL one-way request XML delayed notification 2 SMTP + SOAP 1

12 Es el perfil básico suficiente? El perfil básico (XSD, SOAP, WSDL, UDDI) permite una comunicación básica Intercambios XML Simples Entre fronteras heterogéneas y servicios autónomos Compartiendo esquemas que permiten abstracciones útiles La mayoría de las aplicaciones distribuidas necesitan más…

13 Temas Necesarios Los Web Services tienen muchas necesidades en común Modelo de seguridad orientado a mensaje Mensajería confiable Soporte a transacciones Mecanismos de direccionamiento/ruteo Mensajería asincrónica Metadata para políticas/capacidades Soporte a datos binarios

14 Framework SOAP SOAP provee el framework para atacar estos temas Distinción entre Header/Body permite extensiones xmlns:soap="...">

15 Extendiendo SOAP SOAP por si mismo no define headers Con Well-known headers las aplicaciones pueden negociar WS-* extiende SOAP con headers estándar Ahora se necesitan implementaciones

16 Stack de protocolos WS-* k Microsoft está trabajando de cerca con partners para desarrollar un protocolo completo de WS-* Ataca la mayoría de los temas vistos Construido sobre SOAP de una manera neutra al transporte Para ofrecer mensajes seguros, confiables y transaccionales

17 Stack WS-* Foundation Applications & Application Infrastructure Transports Connected Applications Management Business Process … SecurityReliabilityTransactions Messaging XML Metadata HTTPTCPSMTP …

18 WS-* Specifications (Resumen) MessagingWS-AddressingWS-Eventing MTOM (Attachments) ReliabilityWS-ReliableMessagingSecurityWS-SecurityWS-TrustWS-SecureConversationWS-FederationTransactionsWS-CoordinationWS-AtomicTransactionWS-BusinessActivityMetadataWS-PolicyWS-PolicyAssertionsWS-PolicyAttachmentWS-SecurityPolicyWS-DiscoveryWS-MetadataExchange Ver Especificación en MSDN Especificación

19 Plataforma.NET de Web Services ASMX es la plataforma actual de WS Soporta el perfil básico de servicios simples No implementa WS-* WSE 2.0 es una extensión Puede usarse para extender el comportamiento de ASMX Puede usarse sin ASMX Provee soporte a varias especificaciones WS-* Indigo es la próxima generación de WS Va a proveer una solución completa WS-*

20 Resumen hasta ahora Un Web Sevice es accesible por protocolos estándar XML es un formato de representación de datos SOAP es un framework XML para mensajería Los esquemas XML describen mensajes XML WSDL describe como invocar Web services UDDI es un repositorio de descripción de servicios WS-* extiende SOAP con headers estándar

21 ASMX WebMethods

22 WebMethods WebMethods mapea métodos a mensajes SOAP Los métodos se calfiican con el atributo [WebMethod] Se encuentra en el namespace System.Web.Services Construido sobre HTTP y un stack XML Ofrece alta producctividad (solo hay que escribir los métodos) _ _ Public Function Add(ByVal n1 As Integer, ByVal n2 As Integer) As Integer Return n1 + n2 Return n1 + n2 End Function

23 Web Service Namespace Especifica el namespace XML en la clase Usa el atributo [WebService] [WebService(Namespace=http://www.paradigma.com.uy/MathService) public class MathService { [WebMethod] [WebMethod] public int Add(int n1, int n2) public int Add(int n1, int n2) { return n1 + n2; return n1 + n2; }}

24 Infraestructura del WebMethod ASP.NET provee la infraestructura para procesar WebMethods La clase del WebMethod está ligada a un punto de entrada.asmx El manejador procesa los mensajes de entrada SOAP

25 using System.Web.Services; public class MathService { [WebMethod] [WebMethod] public int Add(int n1, int n2) public int Add(int n1, int n2) { return n1 + n2; return n1 + n2; }} Un punto de entrdada.asmx math.asmx math.cs

26 Instalando un WebMethod Una vez implementada, la clase debe ser instalada El assembly de pone en el bin del directorio virtual o en el GAC El archivo.asmx se pone en el directorio virtual \inetpub \wwwroot \wwwroot \math \math math.asmx math.asmx \bin \bin math.dll math.dll Directorio virtual Subdirectorio bin

27 .asmx y compilación JIT El archivo.asmx puede contener código del WebMethod Se compila JIT en la primera invocación using System.Web.Services; public class MathService { [WebMethod] [WebMethod] public int Add(int n1, int n2) public int Add(int n1, int n2) { return n1 + n2; return n1 + n2; }}

28 Funcionalidad WebMethod El manejador.asmx del WebMethod provee cuatro áreas de funcionalidad Enviar los mensajes SOAP a los métodos CLR Serialización/deserialización de objetos Generación automática de documentación/WSDL Modelo de extensibilidad

29 Method Dispatching POST /math/math.asmx HTTP/1.1 SOAPAction: "urn:math:Mul" WebService language="C#" class="MathService" %> class="MathService" %> using System.Web.Services; public class MathService { [WebMethod] [WebMethod] public int Add(int n1, int n2) { public int Add(int n1, int n2) { return n1 + n2; return n1 + n2; } [WebMethod] [WebMethod] public int Sub(int n1, int n2) { public int Sub(int n1, int n2) { return n1 - n2; return n1 - n2; } [WebMethod] [WebMethod] public int Mul(int n1, int n2) { public int Mul(int n1, int n2) { return n1 * n2; return n1 * n2; }......}.asmxhandler IIS

30 Serialización de objetos basada en XML Los WebMethods mapean entre XML y los objetos Construido sobre el XmlSerializer Asegura que los objetos mapeen a XML y los tipos a XSD Garantiza la interoperabilidad con otras plataformas No maneja las complejidades de los modelos de objetos modernos…

31 Deserialización WebMethod Deserialize n1n2 System.Integer WebService language="C#" class="MathService" %> class="MathService" %> using System.Web.Services; public class MathService { [WebMethod] [WebMethod] public int Add(int n1, int n2) { public int Add(int n1, int n2) { return n1 + n2; return n1 + n2; } [WebMethod] [WebMethod] public int Sub(int n1, int n2) { public int Sub(int n1, int n2) { return n1 - n2; return n1 - n2; } [WebMethod] [WebMethod] public int Mul(int n1, int n2) { public int Mul(int n1, int n2) { return n1 * n2; return n1 * n2; }......}.asmxhandler

32 Usando tipos complejos Los WebMethods pueden manejar la mayoría de los objetos Los objetos pueden ser usados como entrada/salida Los objetos mapean a objetos complejos XSD public class Point { public double x; public double x; public double y; public double y;} public class Geometry { [WebMethod] [WebMethod] public double Distance(Point orig, Point dest) { public double Distance(Point orig, Point dest) { // implementation omitted // implementation omitted }}

33 Ejemplo de tipo complejo xmlns="urn:geometry"> 5 5 request response

34 Limitaciones No todos los tipos del CLR son serializables y pueden romper escenarios de interoperabilidad Grafos no jerárquicos Estructuras de datos genéricos (DataSet, Collection, etc.) Objetos polimórficos Si lo importante es la interoperabilidad, se debe simplificar

35 WebMethods y Errores SOAP define como manejar errores Elemento de falla SOAP en el Body del mensaje Código de estado 500 (Internal Server Error) HTTP El manejador.asmx traduce las excepciones a fallas Todas las excepciones del CLR se capturan por la infraestructura Se puede lanzar un SoapException para controlar los detalles

36 Generando documentación/WSDL El manejador.asmx genera la documentación Es retornada para los requests GET sin query string El manejador.asmx genera WSDL Se usa '?wsdl' en el query string (ej: math.asmx?wsdl) Los clientes pueden utilizar el WSDL para crear clases proxy

37 WSDL y la generación de código...... public abstract class MathService : WebService {......} service.dll wsdl.exe /server public class MathService : SoapHttpClientProtocol {......} wsdl.exe csc.exe. asmx ?wsdl

38 Modelo de extensibilidad WebMethods El manejador.asmx provee el modelo Permite pre/post procesamiento de mensajes SOAP Existen puntos de entrada disponibles antes/despues de la serialización/deserialización Conocido como el SoapExtension framework Machine B 2 1 Web Service SOAP Envelope deserialize stage serialize stage

39 Limitaciones WebMethod Los WebMethods solo soportan el perfil básico de WS-I No las especificaciones adicionales WS-* Provee puntos de extensibilidad Los WebMethods solo soportan HTTP

40 Resumen hasta ahora ASP.NET provee un framework de WebServices WS-I completo El manejador WebMethod (.asmx) provee toda la maquinaria HTTP/XML Envía los mensajes SOAP al CLR Los parámetros son marshaleados con la clase XmlSerializer Generación automática de documentación/WSDL Modelo de extensibilidad

41 Introducción a WSE 2.0

42 La plataforma de la próxima generación La plataforma de Web services debe evolucionar para cubrir las necesiades comunes (WS-*) Menajes seguros, confiables y transaccionales ¿Cómo extendemos ASMX para que lo haga?

43 SoapExtension Framework ASMX provee un framework de extensiones Se puede escribir una clase que será llamada Antes y después de cada mensaje SOAP Antes y después de cada punto de entrada a un WebMethod

44 Etapas SoapExtension Las extensiones se llaman en cada etapa ASMX Handler Web service class [WebMethod] public int add int x, int y) int x, int y){ return x+y; return x+y;} XmlSerializer Extension called (1) Extension called (2) Extension called (3) Extension called (4)

45 Clases SOAP Extension Una clase que derive de SoapExtension public class ValidationExtension : SoapExtension { public override object GetInitializer(Type serviceType) { public override object GetInitializer(Type serviceType) { // class-wide static initialization // class-wide static initialization } public override object GetInitializer( public override object GetInitializer( LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute) { LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute) { // method-wide static initialization // method-wide static initialization } public override void Initialize(object initializer) { public override void Initialize(object initializer) { // per-instance initialization // per-instance initialization } public override void ProcessMessage(SoapMessage message) { public override void ProcessMessage(SoapMessage message) { // perform pre/post-processing just before/after // perform pre/post-processing just before/after // message deserialization/serialization // message deserialization/serialization }}

46 Configurando una SOAP Extension Las clases de extensión pueden ser asociadas con cualquier WebMethod en una aplicación La clase se especifica en el web.config Se llama para cada WebMethod en una aplicació La clase puede ser asociada con un WebMethod específico El método se califica con un atributo personalizado que especifique la extensión La extensión se llama para ese WebMethod

47 Configurando una SOAP Extension Para todos los WebMethod priority="1" group="0" />

48 WSE 2.0 Microsoft creo los Web Services Enhancements (WSE) Está en la versión 2.0 Provee un SoapExtension para usar con WebMethods Provee un API de transporte de mensajes neutral que no depende de ASMX Implementa varias especificaciones WS-*

49 Soporte WSE 2.0 a WS-* MessagingWS-AddressingWS-Eventing MTOM (Attachments) ReliabilityWS-ReliableMessagingSecurityWS-SecurityWS-TrustWS-SecureConversationWS-FederationTransactionsWS-CoordinationWS-AtomicTransactionWS-BusinessActivityMetadataWS-PolicyWS-PolicyAssertionsWS-PolicyAttachmentWS-SecurityPolicyWS-DiscoveryWS-MetadataExchange Implementadas en WSE 2.0

50 WSE 1.0 y 2.0 WSE 2.0 puede ser instalada side-by-side con WSE 1.0 Usa un nombre de assembly diferente Usa un namespace diferente La misma token pública WSE 1.0 WSE 2.0 AssemblyMicrosoft.Web.ServicesMicrosoft.Web.Services2 NamespaceMicrosoft.Web.ServicesMicrosoft.Web.Services2 Version Public Key Token 31bf3856ad364e3531bf3856ad364e35

51 Comenzando a usar WSE 2.0 Para comenzar a usar WSE en un WebMethod 1. Agregar una referencia a Microsoft.Web.Services2 2. Configurar el WebServicesExtension 3. Agregar using/imports a los namespaces que se necesiten 4. Extender el código del WebMethod apropiadamente // general extension classes using Microsoft.Web.Services2; // if you plan to use WS-Security using Microsoft.Web.Services2.Security;...

52 Configuración en web.config priority="1" group="0" />

53 Usando SoapContext Dentro de un WebMethod, la información WSE está disponible via la clase SoapContext [WebService(Namespace="http://example.org/wse/")] public class Endpoint1 : WebService { [WebMethod] [WebMethod] public string Echo() public string Echo() { SoapContext reqCtx = RequestSoapContext.Current; SoapContext reqCtx = RequestSoapContext.Current; SoapContext resCtx = ResponseSoapContext.Current; SoapContext resCtx = ResponseSoapContext.Current;... // use Soapcontext to interface with the WS-*... // use Soapcontext to interface with the WS-* // implementations // implementations }}

54 Usando WSE en el cliente Los clientes wsdl.exe puede utilizar WSE Cambiar la clase base a WebServicesClientProtocol // wsdl.exe generated proxy... public class Endpoint1 : // manually change the base class // manually change the base class Microsoft.Web.Services2.WebServicesClientProtocol { Microsoft.Web.Services2.WebServicesClientProtocol { Endpoint1 e = new Endpoint1(); SoapContext reqCtx = e.RequestSoapContext; SoapContext resCtx = e.ResponseSoapContext;... // use Soapcontext to interface with the WSA // implementations // implementations

55 Configuración adicional de WSE Se configura WSE con una nueva sección config (microsoft.web.services2) Se debe registrar la sección antes de usarla

PublicKeyToken=31bf3856ad364e35" />......

56 microsoft.web.services La sección en el config se usa para configurar: SeguridadPolíticaRuteoDiagnósticosFiltros

57 Integración con Visual Studio.NET WSE 2.0 provee integración con Visual Studio.NET Elegir edición Developer al isntalar Clic derecho en proyectoy seleccionar WSE 2 Settings La herramienta automatiza la configuración del config

58 Herramienta WSE Settings Permite … Agregar la referencia al assembly WSE Configurar el SoapExtension Configurar el soporte a protocolo WS-*

59 Integración Cliente con Visual Studio.NET Puede habilitarse WSE en proyectos cliente con la herramienta Cunado se agrega una Web Reference, genera dos clases proxy Una que usa WSE (ej: MathServiceWse) Y una que no lo usa (ej: "MathService")

60 WSE 2.0 Tracing WSE ofrece tracing de mensajes built-in Registra todos los mensajes SOAP de entrada/salida Registra los match de políticas // enable tracing in app.config or web.config output="outputtrace.xml"/>...

61 Características claves de WSE 2.0

62 Soporte a seguridad WSE 2.0 WSE 2.0 soporta WS-Security Autenticación (UsernameToken, X.509, Kerb) Integridad (XML signatures) Privacidad (XML encryption) WSE 2.0 soporta WS-Trust y WS-SecureConversation Usando tokens de seguridad de contexto Conversación segura automática WSE 2.0 soporta seguridad basada en roles IPrincipal, IsInRole, etc.

63 Soporte a Policy WSE 2.0 WSE 2.0 soporta WS-Policy Una policy es un archivo de configuración que especifica los requerimientos para los mensajes También soporta WS-PolicyAssertion y WS-SecurityPolicy WSE 2.0 usa las policies de dos maneras Fuerza las políticas cuando se reciben los mensajes Puede aplicar políticas (para modificar el mensaje) cuando se envían WSE 2.0 soporta custom policy

64 WSE 2.0 Addressing y Routing WSE 2.0 usa WS-Addressing para rutear y entregar mensajes WSE 2.0 provee un manejador de ruteo Soporta WS-Referral para instrucciones de ruteo Soporta ruteo basado en contenido WSE 2.0 provee opciones de ruteo seguro

65 API de Mensajería WSE 2.0

66 API de Mensajería WSE ASMX está atado a HTTP, RPC, y métodos Hace pensar en client/server El API de mensajería de WSE 2.0 ofrece un modelo más flexible Basado en mensaje - (not necesariamente método) Independiente de transporte (in-proc, TCP, and HTTP) Permite mensajería asincrónica Patrones de intercambio de mensajes personalizados (MEPs)

67 Senders y Receivers WSE permite pensar en términos de senders y receivers Algunos nodos envían mientras otros reciben mensajes Los roles son completamente intercambiables Expuestos via SoapSender y SoapReceiver Sender Receiver and SenderReceiver

68 Transparencia de transporte WSE 2.0 permite enviar mensajes por diferentes transportes In-proc, TCP, and HTTP out-of-the-box Transportes personalizados SOAP intermediaries initial sender ultimate receiver HTTP SMTP MSMQ FTP

69 SoapReceiver SoapReceiver encapsula el proceso de recibir un mensajes SOAP public class MathReceiver : SoapReceiver { protected override void Receive(SoapEnvelope e) protected override void Receive(SoapEnvelope e) { // implement Receive here // implement Receive here }}... Uri receiverUri = new EndpointReference( new Uri("soap.tcp://localhost/math")); new Uri("soap.tcp://localhost/math")); MathReceiver math = new MathReceiver(); SoapReceivers.Add(receiverUri, math);...

70 SoapSender SoapSender encapsula el proceso de enviar un mensaje SOAP a una URI... SoapEnvelope env = CreateAddMessage(); env.Context.Action = "urn:math:add"; SoapSender ss = new SoapSender(new EndpointReference( EndpointReference( Uri("soap.tcp://localhost/math"))); Uri("soap.tcp://localhost/math")));ss.Send(env);...

71 SoapClient y SoapServer SoapClient y SoapServer ofrecen abstracciones de alto nivel Construidos sobre SoapSender y SoapReceiver Mensajes de request/response y de correlación automática public class MathService : SoapService { [SoapMethod("urn:math:add")] [SoapMethod("urn:math:add")] public SoapEnvelope Add(SoapEnvelope e) public SoapEnvelope Add(SoapEnvelope e) {... // implement Add here... // implement Add here }......}

72 WseWsdl2.exe WseWsdl2.exe genera código SoapClient de definiciones WSDL El código generado deriva de SoapClient Se puede usar esta clase para enviar mensajes SOAP a receptores SOAP via WSE 2.0

73 Resumen Microsoft's Web Services Enhancements (WSE) provee implementación WS-* para usar en.NET hoy WSE 2.0 extiende el framework de WebMethod WSE 2.0 provee integración con Visual Studio.NET

74 Referencias MSDN WS Developer Center

75 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.


Descargar ppt "Essential Web Services : Programando con.NET y WSE 2.0 Eduardo Mangarelli Gabriel Cor"

Presentaciones similares


Anuncios Google