Está en la página 1de 70

Taller de Sistemas de Informacin 1

Clase 5 WCF

Que es WCF?
Windows Communication Foundation (WCF) es un SDK para el desarrollo y puesta en produccin 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 Ingeniera Montevideo, Uruguay

Que es WCF?

Aunque podemos construir servicios sin WCF, en la practica construirlos utilizando WCF es significativamente mas sencillo

INCO - Facultad de Ingeniera Montevideo, Uruguay

Que es WCF?

WCF es la implementacin de Microsoft de un set de estndares de la industria, que definen entre otras cosas, interaccin entre servicios, conversin de tipos, marshalling, unmarshalling, protocolos, etc.

INCO - Facultad de Ingeniera Montevideo, Uruguay

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 Ingeniera Montevideo, Uruguay

Que es WCF?

La mayora de la funcionalidad de WCF esta incluida en un solo assembly, System.ServiceModel.dll en el namespace System.ServiceModel

INCO - Facultad de Ingeniera Montevideo, Uruguay

Que es WCF?
WCF es parte de .NET 3.0, y adems 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 Ingeniera Montevideo, Uruguay

Servicios
Un servicio es una unidad de funcionalidad, expuesta al mundo En ese aspecto, es el prximo paso evolutivo en el pasaje de funciones, a objetos a componentes a servicios

INCO - Facultad de Ingeniera Montevideo, Uruguay

Servicios

Arquitectura general

INCO - Facultad de Ingeniera Montevideo, Uruguay

Computacin distribuida
La esencia de este tipo de soluciones, esta en que los proveedores de servicios y los consumidores de servicios, se encuentran en locaciones fsicas diferentes Generalmente la comunicacin es resuelta a travs de una red

INCO - Facultad de Ingeniera Montevideo, Uruguay

10

Corba

INCO - Facultad de Ingeniera Montevideo, Uruguay

11

.NET Remoting

INCO - Facultad de Ingeniera Montevideo, Uruguay

12

Servicios

La orientacin a servicios, es un set abstracto de principios y buenas practicas, para la construccin de aplicaciones orientadas a servicios

INCO - Facultad de Ingeniera Montevideo, Uruguay

13

Servicios
Una aplicacin orientada a servicios (SOA), agrega servicios en una unidad (aplicacin) lgica Es similar a la forma en que un componente o una aplicacin orientada a objetos, combina objetos

INCO - Facultad de Ingeniera Montevideo, Uruguay

14

Servicios

INCO - Facultad de Ingeniera Montevideo, Uruguay

15

Servicios
Un servicio puede ser local o remoto Puede estar desarrollado por una o mltiples partes, utilizando una o mltiples tecnologas Inclusive puede ejecutar en diferentes lneas de tiempo

INCO - Facultad de Ingeniera Montevideo, Uruguay

16

Servicios

Dentro de un servicio, vamos a encontrar conceptos como


o o o o o

Lenguajes Tecnologas Plataformas Versiones Frameworks

Sin embargo, entre servicios, solo los mecanismos de comunicacin establecidos son los que valen

INCO - Facultad de Ingeniera 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

Un Windows form, una pagina ASP.NET, otro servicio, etc.

INCO - Facultad de Ingeniera 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 Ingeniera Montevideo, Uruguay

19

Servicios
Como la implementacin 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 Ingeniera Montevideo, Uruguay

20

Servicios

Los metadatos son publicados utilizando un formato predefinido, neutral tecnolgicamente, por ejemplo, utilizando WSDL sobre HTTP-GET, o algn otro estndar de la industria para intercambio de metadatos

INCO - Facultad de Ingeniera 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 informacin y consumirla como clases CLR

INCO - Facultad de Ingeniera Montevideo, Uruguay

22

Execution Boundaries
Con WCF, el cliente nunca interactuara con el servicio directamente, aun en casos locales, o ejecucin 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 mtodos administrativos

INCO - Facultad de Ingeniera Montevideo, Uruguay 23

Execution Boundaries
Ejecucin en la misma maquina

INCO - Facultad de Ingeniera Montevideo, Uruguay

24

Execution Boundaries
Ejecucin en mltiples maquinas

INCO - Facultad de Ingeniera Montevideo, Uruguay

25

Transparencia locacional

En el pasado, las anteriores tecnologas para computacin distribuida (DCOM, Remoting) aspiraban a proveer el mismo ambiente de programacin para el cliente, sin importar si el objeto es remoto o local

INCO - Facultad de Ingeniera 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 Ingeniera Montevideo, Uruguay

27

Transparencia locacional
El problema con este enfoque, es que la comunicacin 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 implementacin

INCO - Facultad de Ingeniera Montevideo, Uruguay

28

Transparencia locacional

Tenemos aspectos complejos, como


o o o o o

Ciclo de vida de los objetos Confiabilidad Manejo del estado Escalabilidad Seguridad

Todo esto es mucho mas complejo, todo porque tratamos de simular un modelo local

INCO - Facultad de Ingeniera Montevideo, Uruguay

29

Transparencia locacional
WCF trata de proveerle al cliente el mismo modelo de programacin, sin importar donde este localizado el servicio Sin embargo, el enfoque de WCF es el opuesto, toma el modelo de programacin remota, y lo lleva al caso local Siempre debemos comunicarnos a travs de un proxy

INCO - Facultad de Ingeniera Montevideo, Uruguay

30

Transparencia locacional

INCO - Facultad de Ingeniera Montevideo, Uruguay

31

Transparencia locacional

INCO - Facultad de Ingeniera Montevideo, Uruguay

32

Direcciones
En WCF, todo servicio esta asociado con una direccin nica La direccin provee dos elementos importantes

o o

La localizacin del servicio El protocolo de transporte (transport schema) usado para comunicarnos con el servicio

INCO - Facultad de Ingeniera Montevideo, Uruguay

33

Transport schemas

WCF soporta los siguientes esquemas


o o o o

HTTP TCP Peer network IPC (Inter-Process Communication sobre named pipes) MSMQ

INCO - Facultad de Ingeniera Montevideo, Uruguay

34

Direcciones

Las direcciones siempre tienen el formato:


o

[base address]/[optional URI]

La direccin base siempre esta en este formato:


o

[transport]://[machine or domain][:optional port]

INCO - Facultad de Ingeniera 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 Ingeniera Montevideo, Uruguay

36

Contratos
En WCF, todos los servicios exponen contratos Un contrato es una forma estndar de describir lo que hace el servicio Esta descripcin es neutral a nivel de plataforma

INCO - Facultad de Ingeniera 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 Ingeniera 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 Ingeniera Montevideo, Uruguay 39

Service Contract
El atributo ServiceContract mapea una interfaz o una clase CLR a un contrato independiente de la tecnologa En este proceso de exposicin, no interesan aspectos como la visibilidad de la clase o la interfaz

INCO - Facultad de Ingeniera Montevideo, Uruguay

40

Service Contract
En conjunto con lo anterior, ningn miembro de la clase o interfaz ser parte del contrato, a menos que lo especifiquemos explcitamente Debemos hacerlo utilizando el atributo OperationContract, el cual podemos aplicar a mtodos

INCO - Facultad de Ingeniera 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 Ingeniera Montevideo, Uruguay 42

Data Contract
Permite definir los elementos intercambiados en los diferentes contratos de los servicios Es una forma de normalizar la serializacin de la informacin a travs de la conexin

INCO - Facultad de Ingeniera Montevideo, Uruguay

43

Data Contract
[DataContract] public class User { [DataMember] public string Name; [DataMember] public string Address; //..etc.. }

INCO - Facultad de Ingeniera 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 tecnologa de definir las excepciones que una operacin puede provocar

INCO - Facultad de Ingeniera 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 Ingeniera 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 Ingeniera Montevideo, Uruguay 47

Fault Contract

En la funcin ponemos
[OperationContract] [FaultContract(typeof(MathFault))] int Divide(int n1, int n2);

INCO - Facultad de Ingeniera Montevideo, Uruguay

48

Fault Contract

Lo que nos habilita a hacer

throw new FaultException<MathFault>( new MathFault( Division, Division by zero));

INCO - Facultad de Ingeniera Montevideo, Uruguay

49

Faults

Estas pueden ser procesadas por el cliente cuando ocurran, en forma similar a una excepcin

try { ... catch (FaultException<MathFault> mathFault) { Console.WriteLine(mathFault.Detail.ProblemType); Console.ReadLine(); wcfClient.Abort(); }

INCO - Facultad de Ingeniera Montevideo, Uruguay

50

Hosting
La clase que implementa el servicio WCF no puede existir en un vaco Todo servicio WCF debe ser hosteado en un proceso de Windows, denominado, el host process Un solo host process puede hostear mltiples servicios, y el mismo servicio puede ser hosteado por mltiples host processes

INCO - Facultad de Ingeniera Montevideo, Uruguay

51

Hosting

El hosting puede ser provisto por


o o o

IIS (Internet Information Services) WAS (Windows Activation Service) O, en un proceso Windows provisto por el desarrollador

INCO - Facultad de Ingeniera 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 Ingeniera 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 implementacin del servicio El enfoque es muy similar al utilizado por los servicios web ASMX

INCO - Facultad de Ingeniera Montevideo, Uruguay

54

IIS Hosting
<%@ ServiceHost Language = "C#" Debug = "true" CodeBehind = "~/App_Code/MyService.cs" Service = "MyService" %>

INCO - Facultad de Ingeniera Montevideo, Uruguay

55

Bindings

Existen mltiples aspectos en la comunicacin entre dos servicios


o

Tenemos varios patrones de comunicacin, sincrnicos, asincrnicos, etc. Tenemos mltiples protocolos de transporte para los mensajes Tenemos varios formatos de encoding en los mensajes

INCO - Facultad de Ingeniera Montevideo, Uruguay

56

Bindings

Tenemos varias opciones para el tema de la seguridad La entrega del mensaje puede ser confiable o no confiable Podemos tener que interoperar con otros servicios y o clientes Podemos tener que interoperar con clientes legados

INCO - Facultad de Ingeniera 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 comunicacin exitosa

INCO - Facultad de Ingeniera Montevideo, Uruguay

58

Bindings

Para simplificar este proceso de eleccin, WCF agrupa estos aspectos de comunicacin, en grupos denominados bindings

INCO - Facultad de Ingeniera Montevideo, Uruguay

59

Bindings

Un binding es un conjunto de opciones, consistente entre si, relacionadas con:


o o o o o o o

protocolo de transporte encoding de mensajes patrones de comunicacin confiabilidad seguridad propagacin de transacciones interoperabilidad
INCO - Facultad de Ingeniera 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 Ingeniera 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 Ingeniera Montevideo, Uruguay

62

Encodings disponibles

INCO - Facultad de Ingeniera Montevideo, Uruguay

63

Seleccin del binding

INCO - Facultad de Ingeniera Montevideo, Uruguay

64

Entonces
Todo servicio esta asociado con una direccin (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 Ingeniera Montevideo, Uruguay

65

Endpoints
Esta terna que gobierna el servicio, se conoce como el ABC del servicio WCF formaliza esta relacin en la forma de un endpoint El endpoint es la fusin de la address, el binding y el contract

INCO - Facultad de Ingeniera Montevideo, Uruguay

66

Endpoints

INCO - Facultad de Ingeniera 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 Ingeniera 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 Ingeniera Montevideo, Uruguay

69

Arquitectura de WCF

INCO - Facultad de Ingeniera Montevideo, Uruguay

70

También podría gustarte