Taller de Sistemas de Información 1. Clase 5 WCF

Documentos relacionados
Taller: Introducción a Windows Communication Foundation

Introducción a los Servicios Web. Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Service Oriented Architecture: Con Biztalk?

2524 Developing XML Web Services Using Microsoft ASP.NET

Documentación Técnica Conector

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

Web Services en Java. Taller de Programación. Instituto de Computación Facultad de Ingeniería Universidad de la República

Contenido. Introducción

Workflows? Sí, cuántos quiere?

PORTAL DE INTEGRACIÓN DE BANCOS DE INFORMACIÓN DISPERSOS A TRAVÉS DE WEB SERVICES Autor: Ing. Walther Antonioli Ravetto

Capítulo 5. Cliente-Servidor.

Internet Information Server

INTRODUCCIÓN A LA PROGRAMACIÓN WEB UNIDAD. Estructura de contenidos: cisvirtual@ucv.edu.pe. 1.

JAVA EE 5. Arquitectura, conceptos y ejemplos.

5.1 Introducción a Servicios Web

ENCUENTA - CONTABILIDAD Net. Definiciones generales

Windows Server Windows Server 2003

Servicios Web: Orquestación y coreografías

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

Unidad II. Interfaz Grafica (continuación ) Basado en clases de Ing. Carlos A. Aguilar

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

Ingeniería de Software en SOA

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

PROYECTO FINAL DE CARRERA Manual Instalación.

Tema 6: Comparativa CORBA/Servicios Web

Visual Studio 2008 es el conjunto de herramientas de

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Taller de Sistemas de Información 3. Presentación SCA

POSGRADO EXPERTO.NET DESARROLLO DE SOFTWARE

LICITACIÓN N L13045 NUEVO SISTEMA LEY DE TRANSPARENCIA

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Service Oriented Architecture

servicios. El API es definido al nivel de código fuente y proporciona el nivel de

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

1 EL SISTEMA R/3 DE SAP AG

4 ARQUITECTURA DE COMUNICACIONES

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Introducción a SOA (II) Huibert Aalbers Senior Certified Software IT Architect

MS_10263 Developing Windows Communication Foundation Solutions with Microsoft Visual Studio 2010

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

2.2.- Paradigmas de la POO

Parte III. Características del proyecto. Web corporativa. Aplicación gestión. Comandas. Gestión cocina.

Historia de revisiones

SISTEMAS DISTRIBUIDOS DE REDES 3.- ESTANDAR CORBA Características

Célula UABC-Live.net. Universidad Autónoma. de Baja California. Facultad de Ciencias Químicas.

Servicios Web. Andrés Pastorini. TRIA Tecnólogo Informático

CAPÍTULO 3 DISEÑO DE LA ARQUITECTURA

En los últimos años, se ha presentado una enorme demanda por servicios portátiles,

SERVICIO NACIONAL DE APRENDIZAJE SENA SISTEMA INTEGRADO DE GESTIÓN Procedimiento Ejecución de la Formación Profesional Integral GUÍA DE APRENDIZAJE

INSTITUTO TECNOLOGICO DE LAS AMERICAS (ITLA) Nombre: Brayhan E. Acosta Hiciano. Matricula: Materia: Sistema Operativo III

Visión General de GXportal. Última actualización: 2009

Contenido. Capítulo 1 Visual Studio.net 2013: Introducción. Capítulo 2 Visual C# 6.0: Introducción. Alfaomega

Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

TEMA 5. Otras arquitecturas distribuidas IV. Web Services

SISTEMAS DE INFORMACIÓN III TEORÍA

Modelo de Objetos Distribuidos

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Técnicas de Diseño CRM 1

MARCO DE REFERENCIA PARA LA GESTIÓN DE TI EN EL ESTADO COLOMBIANO

Taller de Sistemas de Información 1. Clase 2 Sistemas de información Arquitectura

Capítulo V. Implementación

Desarrollo de Servicios Web con JBuilder

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

Desarrollo y servicios web

ESTUDIO DE LA PLATAFORMA

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET

Aspectos Básicos de Networking

RMI [Remote Method Invocation]

Instalación del Software Magaya

Gerencia de Procesos de Negocio (Business Process Management, BPM). Lic. Patricia Palacios Zuleta

MONITORING WINDOWS WITH NETCRUNCH 7 P A G E 1

10 razones para cambiarse a un conmutador IP

Descripción. Este Software cumple los siguientes hitos:

Oracle vs Oracle por Rodolfo Yglesias Setiembre 2008

CAPÍTULO 5. DESARROLLO Y PRUEBAS

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Introducción. - Gráfica tomada del Artículo de José David Parra

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

Capítulo 1 Documentos HTML5

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano

computadoras que tienen este servicio instalado se pueden publicar páginas web tanto local como remotamente.

DISEÑO MICROCURRICULAR

Título: Optimización de Procesos de Negocio con SOA / BPM Nombre y Apellido: Mario Bolo bolo@ar.ibm.com Fecha: 15/08/2012

Desarrollo de Software con

Curso: Sistemas Operativos II Plataforma: Linux SAMBA

E-Government con Web Services

Arquitectura y Diseño de la Solución

SERVIDOR DNS DINÁMICO EN WINDOWS 2000/2003 SERVER.

Práctica sobre compartición de instancias remotas.

Windows Server 2012: Identidad y Acceso. Módulo 2: Descripción General de Windows Server 2012 Remote Desktop Services.

Introducción a las Redes de Computadoras. Obligatorio

Tutorial BMS Server Studio UDP

F A B R I C I O M U Ñ O Z S. T E N I E N T E T É C N I C O D E A V I A C I Ó N

Capítulo 5. Análisis del software del simulador del sistema de seguridad

Almacenamiento virtual de sitios web HOSTS VIRTUALES

Transcripción:

Taller de Sistemas de Información 1 Clase 5 WCF

Que es WCF? Windows Communication Foundation (WCF) es un SDK para el desarrollo y puesta en producción de servicios en plataforma Windows WCF provee un runtime para los servicios, permitiendo exponer tipos CLR como servicios, y consumir otros servicios como tipos CLR INCO - Facultad de Ingeniería Montevideo, Uruguay 2

Que es WCF? Aunque podemos construir servicios sin WCF, en la practica construirlos utilizando WCF es significativamente mas sencillo INCO - Facultad de Ingeniería Montevideo, Uruguay 3

Que es WCF? WCF es la implementación de Microsoft de un set de estándares de la industria, que definen entre otras cosas, interacción entre servicios, conversión de tipos, marshalling, unmarshalling, protocolos, etc. INCO - Facultad de Ingeniería Montevideo, Uruguay 4

Que es WCF? Una de las ventajas que provee WCF, es que simplifica de sobremanera el trabajo con servicios, comparado con plataformas similares INCO - Facultad de Ingeniería Montevideo, Uruguay 5

Que es WCF? La mayoría de la funcionalidad de WCF esta incluida en un solo assembly, System.ServiceModel.dll en el namespace System.ServiceModel INCO - Facultad de Ingeniería Montevideo, Uruguay 6

Que es WCF? WCF es parte de.net 3.0, y además requiere.net 2.0 Solo puede ejecutar en sistemas operativos que los soporten, como ser Windows Vista (cliente y servidor), Windows XP SP2, Windows Server 2003 SP1, etc. INCO - Facultad de Ingeniería Montevideo, Uruguay 7

Servicios Un servicio es una unidad de funcionalidad, expuesta al mundo En ese aspecto, es el próximo paso evolutivo en el pasaje de funciones, a objetos a componentes a servicios INCO - Facultad de Ingeniería Montevideo, Uruguay 8

Servicios Arquitectura general INCO - Facultad de Ingeniería Montevideo, Uruguay 9

Computación distribuida La esencia de este tipo de soluciones, esta en que los proveedores de servicios y los consumidores de servicios, se encuentran en locaciones físicas diferentes Generalmente la comunicación es resuelta a través de una red INCO - Facultad de Ingeniería Montevideo, Uruguay 10

Corba INCO - Facultad de Ingeniería Montevideo, Uruguay 11

.NET Remoting INCO - Facultad de Ingeniería Montevideo, Uruguay 12

Servicios La orientación a servicios, es un set abstracto de principios y buenas practicas, para la construcción de aplicaciones orientadas a servicios INCO - Facultad de Ingeniería Montevideo, Uruguay 13

Servicios Una aplicación orientada a servicios (SOA), agrega servicios en una unidad (aplicación) lógica Es similar a la forma en que un componente o una aplicación orientada a objetos, combina objetos INCO - Facultad de Ingeniería Montevideo, Uruguay 14

Servicios INCO - Facultad de Ingeniería Montevideo, Uruguay 15

Servicios Un servicio puede ser local o remoto Puede estar desarrollado por una o múltiples partes, utilizando una o múltiples tecnologías Inclusive puede ejecutar en diferentes líneas de tiempo INCO - Facultad de Ingeniería Montevideo, Uruguay 16

Servicios Dentro de un servicio, vamos a encontrar conceptos como o o o o o Lenguajes Tecnologías Plataformas Versiones Frameworks Sin embargo, entre servicios, solo los mecanismos de comunicación establecidos son los que valen INCO - Facultad de Ingeniería Montevideo, Uruguay 17

Servicios El cliente de un servicio es simplemente la entidad que consume su funcionalidad El cliente puede ser casi cualquier cosa.net o no.net o Un Windows form, una pagina ASP.NET, otro servicio, etc. INCO - Facultad de Ingeniería Montevideo, Uruguay 18

Servicios Los servicios WCF pueden comunicarse sobre una variedad de protocolos, no solo HTTP Los clientes WCF pueden interoperar con servicios WCF, y los servicios WCF pueden interactuar con clientes no WCF INCO - Facultad de Ingeniería Montevideo, Uruguay 19

Servicios Como la implementación de un servicio es opaca al mundo exterior, un servicio WCF expone generalmente metadatos Estos metadatos describen la funcionalidad disponible, así como posibles formas de comunicarse con el servicio INCO - Facultad de Ingeniería Montevideo, Uruguay 20

Servicios Los metadatos son publicados utilizando un formato predefinido, neutral tecnológicamente, por ejemplo, utilizando WSDL sobre HTTP-GET, o algún otro estándar de la industria para intercambio de metadatos INCO - Facultad de Ingeniería Montevideo, Uruguay 21

Servicios Un cliente no WCF, puede importar los datos en su ambiente nativo, creando los tipos de datos necesarios para poder interactuar con el servicio Lo mismo ocurre con un cliente WCF, solo que este puede importar la información y consumirla como clases CLR INCO - Facultad de Ingeniería Montevideo, Uruguay 22

Execution Boundaries Con WCF, el cliente nunca interactuara con el servicio directamente, aun en casos locales, o ejecución in-memory En vez de esto, el cliente siempre habla con un proxy, el cual se encarga de forwardear la llamada al servicio El proxy expone las mismas operaciones que el servicio, así como otros métodos administrativos INCO - Facultad de Ingeniería Montevideo, Uruguay 23

Execution Boundaries Ejecución en la misma maquina INCO - Facultad de Ingeniería Montevideo, Uruguay 24

Execution Boundaries Ejecución en múltiples maquinas INCO - Facultad de Ingeniería Montevideo, Uruguay 25

Transparencia locacional En el pasado, las anteriores tecnologías para computación distribuida (DCOM, Remoting) aspiraban a proveer el mismo ambiente de programación para el cliente, sin importar si el objeto es remoto o local INCO - Facultad de Ingeniería Montevideo, Uruguay 26

Transparencia locacional En el caso de una llamada local, el cliente utilizaba una referencia directa al objeto Cuando tenia que interactuar con un objeto remoto, utilizaba un proxy INCO - Facultad de Ingeniería Montevideo, Uruguay 27

Transparencia locacional El problema con este enfoque, es que la comunicación remota es mucho mas compleja que la local Tratar de llevar el modelo remoto en local, no es sencillo, presentando problemas tanto de desarrollo e implementación INCO - Facultad de Ingeniería Montevideo, Uruguay 28

Transparencia locacional Tenemos aspectos complejos, como o Ciclo de vida de los objetos o Confiabilidad o Manejo del estado o Escalabilidad o Seguridad Todo esto es mucho mas complejo, todo porque tratamos de simular un modelo local INCO - Facultad de Ingeniería Montevideo, Uruguay 29

Transparencia locacional WCF trata de proveerle al cliente el mismo modelo de programación, sin importar donde este localizado el servicio Sin embargo, el enfoque de WCF es el opuesto, toma el modelo de programación remota, y lo lleva al caso local Siempre debemos comunicarnos a través de un proxy INCO - Facultad de Ingeniería Montevideo, Uruguay 30

Transparencia locacional INCO - Facultad de Ingeniería Montevideo, Uruguay 31

Transparencia locacional INCO - Facultad de Ingeniería Montevideo, Uruguay 32

Direcciones En WCF, todo servicio esta asociado con una dirección única La dirección provee dos elementos importantes o La localización del servicio o El protocolo de transporte (transport schema) usado para comunicarnos con el servicio INCO - Facultad de Ingeniería Montevideo, Uruguay 33

Transport schemas WCF soporta los siguientes esquemas o o o o o HTTP TCP Peer network IPC (Inter-Process Communication sobre named pipes) MSMQ INCO - Facultad de Ingeniería Montevideo, Uruguay 34

Direcciones Las direcciones siempre tienen el formato: o [base address]/[optional URI] La dirección base siempre esta en este formato: o [transport]://[machine or domain][:optional port] INCO - Facultad de Ingeniería Montevideo, Uruguay 35

Direcciones http://localhost:8001 http://localhost:8001/myservice net.tcp://localhost:8002/myservice net.pipe://localhost/mypipe net.msmq://localhost/private/myservice net.msmq://localhost/myservice INCO - Facultad de Ingeniería Montevideo, Uruguay 36

Contratos En WCF, todos los servicios exponen contratos Un contrato es una forma estándar de describir lo que hace el servicio Esta descripción es neutral a nivel de plataforma INCO - Facultad de Ingeniería Montevideo, Uruguay 37

Contratos WCF define cuatro tipos de contrato o o o o Service contracts Data contracts Fault contracts Message contracts INCO - Facultad de Ingeniería Montevideo, Uruguay 38

Service Contract [ServiceContract] interface IMyContract { [OperationContract] string MyMethod(string text); string MyOtherMethod(string text); } class MyService : IMyContract { public string MyMethod(string text) { return "Hello " + text; } public string MyOtherMethod(string text) { return "Cannot call this method over WCF"; } } INCO - Facultad de Ingeniería Montevideo, Uruguay 39

Service Contract El atributo ServiceContract mapea una interfaz o una clase CLR a un contrato independiente de la tecnología En este proceso de exposición, no interesan aspectos como la visibilidad de la clase o la interfaz INCO - Facultad de Ingeniería Montevideo, Uruguay 40

Service Contract En conjunto con lo anterior, ningún miembro de la clase o interfaz será parte del contrato, a menos que lo especifiquemos explícitamente Debemos hacerlo utilizando el atributo OperationContract, el cual podemos aplicar a métodos INCO - Facultad de Ingeniería Montevideo, Uruguay 41

Operation Contract [ServiceContract] interface IMyContract { [OperationContract] string MyMethod(string text); string MyOtherMethod(string text); } class MyService : IMyContract { public string MyMethod(string text) { return "Hello " + text; } public string MyOtherMethod(string text) { return "Cannot call this method over WCF"; } } INCO - Facultad de Ingeniería Montevideo, Uruguay 42

Data Contract Permite definir los elementos intercambiados en los diferentes contratos de los servicios Es una forma de normalizar la serialización de la información a través de la conexión INCO - Facultad de Ingeniería Montevideo, Uruguay 43

Data Contract [DataContract] public class User { [DataMember] public string Name; [DataMember] public string Address; } //..etc.. INCO - Facultad de Ingeniería Montevideo, Uruguay 44

Fault Contract Permite definir los diferentes tipos de errores que puedo recibir a la hora de interactuar con un servicio Es una forma independiente de la tecnología de definir las excepciones que una operación puede provocar INCO - Facultad de Ingeniería Montevideo, Uruguay 45

Fault Contract [ServiceContract] public class CalculatorService { [OperationContract] int Divide(int a, int b) { if (b==0) throw new Exception( Division by zero! ); return a/b; } } INCO - Facultad de Ingeniería Montevideo, Uruguay 46

Fault Contract // Define a math fault data contract [DataContract(Namespace="http://Microsoft.ServiceModel.Samples")] public class MathFault { private string operation; private string problemtype; } [DataMember] public string Operation { get { return operation; } set { operation = value; } } [DataMember] public string ProblemType { get { return problemtype; } set { problemtype = value; } } INCO - Facultad de Ingeniería Montevideo, Uruguay 47

Fault Contract En la función ponemos [OperationContract] [FaultContract(typeof(MathFault))] int Divide(int n1, int n2); INCO - Facultad de Ingeniería Montevideo, Uruguay 48

Fault Contract Lo que nos habilita a hacer throw new FaultException<MathFault>( new MathFault( Division, Division by zero )); INCO - Facultad de Ingeniería Montevideo, Uruguay 49

Faults Estas pueden ser procesadas por el cliente cuando ocurran, en forma similar a una excepción try {... catch (FaultException<MathFault> mathfault) { Console.WriteLine(mathFault.Detail.ProblemType); Console.ReadLine(); wcfclient.abort(); } INCO - Facultad de Ingeniería Montevideo, Uruguay 50

Hosting La clase que implementa el servicio WCF no puede existir en un vacío Todo servicio WCF debe ser hosteado en un proceso de Windows, denominado, el host process Un solo host process puede hostear múltiples servicios, y el mismo servicio puede ser hosteado por múltiples host processes INCO - Facultad de Ingeniería Montevideo, Uruguay 51

Hosting El hosting puede ser provisto por o IIS (Internet Information Services) o WAS (Windows Activation Service) o O, en un proceso Windows provisto por el desarrollador INCO - Facultad de Ingeniería Montevideo, Uruguay 52

IIS Hosting Este hosting es muy interesante, ya que permite que todo el ciclo de vida sea controlado por el IIS, sin que el desarrollador deba preocuparse del proceso INCO - Facultad de Ingeniería Montevideo, Uruguay 53

IIS Hosting La forma de realizar el deploy, es creando un directorio virtual en el IIS, y colocando alli un archivo.svc, el cual identifica el code behind que provee la implementación del servicio El enfoque es muy similar al utilizado por los servicios web ASMX INCO - Facultad de Ingeniería Montevideo, Uruguay 54

IIS Hosting <%@ ServiceHost Language = "C#" Debug = "true" CodeBehind = "~/App_Code/MyService.cs" Service = "MyService" %> INCO - Facultad de Ingeniería Montevideo, Uruguay 55

Bindings Existen múltiples aspectos en la comunicación entre dos servicios o Tenemos varios patrones de comunicación, sincrónicos, asincrónicos, etc. o Tenemos múltiples protocolos de transporte para los mensajes o Tenemos varios formatos de encoding en los mensajes INCO - Facultad de Ingeniería Montevideo, Uruguay 56

Bindings o Tenemos varias opciones para el tema de la seguridad o La entrega del mensaje puede ser confiable o no confiable o Podemos tener que interoperar con otros servicios y o clientes o Podemos tener que interoperar con clientes legados INCO - Facultad de Ingeniería Montevideo, Uruguay 57

Bindings Si empezamos a contar todas las opciones posibles, veremos que las combinaciones son muchas (varios cientos tal vez) Algunas de estas opciones son mutuamente excluyentes, y algunas otras requeridas Claramente, cliente y servicio deben estar alineados, si queremos tener una comunicación exitosa INCO - Facultad de Ingeniería Montevideo, Uruguay 58

Bindings Para simplificar este proceso de elección, WCF agrupa estos aspectos de comunicación, en grupos denominados bindings INCO - Facultad de Ingeniería Montevideo, Uruguay 59

Bindings Un binding es un conjunto de opciones, consistente entre si, relacionadas con: o protocolo de transporte o encoding de mensajes o patrones de comunicación o confiabilidad o seguridad o propagación de transacciones o interoperabilidad INCO - Facultad de Ingeniería Montevideo, Uruguay 60

Bindings por defecto Basic binding TCP binding Peer network binding IPC binding Web Service (WS) binding Federated WS binding Duplex WS binding MSMQ binding MSMQ integration binding INCO - Facultad de Ingeniería Montevideo, Uruguay 61

Bindings Los bindings son altamente extensibles Podemos tomar uno existente, y modificar alguna de sus propiedades, en lugar de comenzar de 0 INCO - Facultad de Ingeniería Montevideo, Uruguay 62

Encodings disponibles INCO - Facultad de Ingeniería Montevideo, Uruguay 63

Selección del binding INCO - Facultad de Ingeniería Montevideo, Uruguay 64

Entonces Todo servicio esta asociado con una dirección (address) que define donde se encuentra el servicio Un binding que define como comunicarnos con el servicio Un contrato (contract) que define que hace el servicio INCO - Facultad de Ingeniería Montevideo, Uruguay 65

Endpoints Esta terna que gobierna el servicio, se conoce como el ABC del servicio WCF formaliza esta relación en la forma de un endpoint El endpoint es la fusión de la address, el binding y el contract INCO - Facultad de Ingeniería Montevideo, Uruguay 66

Endpoints INCO - Facultad de Ingeniería Montevideo, Uruguay 67

Endpoint Se configura declarativa y/o programaticamente al construir el servicio <system.servicemodel> <services> <service name = "MyNamespace.MyService"> <endpoint address = "http://localhost:8000/myservice/" binding = "wshttpbinding" contract = "MyNamespace.IMyContract" /> </service> </services> </system.servicemodel> INCO - Facultad de Ingeniería Montevideo, Uruguay 68

Endpoint <service name = "MyService"> <endpoint address = "http://localhost:8000/myservice/" binding = "wshttpbinding" contract = "IMyContract" /> <endpoint address = "net.tcp://localhost:8001/myservice/" binding = "nettcpbinding" contract = "IMyContract" /> <endpoint address = "net.tcp://localhost:8002/myservice/" binding = "nettcpbinding" contract = "IMyOtherContract" /> </service> INCO - Facultad de Ingeniería Montevideo, Uruguay 69

Arquitectura de WCF INCO - Facultad de Ingeniería Montevideo, Uruguay 70