Está en la página 1de 70

Taller de Sistemas de

Informacin 1
Clase 5
WCF
INCO - Facultad de Ingeniera Montevideo, Uruguay 2
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 C! como
servicios, y consumir otros servicios como
tipos C!
INCO - Facultad de Ingeniera Montevideo, Uruguay 3
Que es WCF?

"un#ue podemos construir servicios sin


WCF, en la practica construirlos utili$ando
WCF es si%nificativamente mas sencillo
INCO - Facultad de Ingeniera Montevideo, Uruguay 4
Que es WCF?

WCF es la implementacin de &icrosoft de


un set de est'ndares de la industria, #ue
definen entre otras cosas, interaccin entre
servicios, conversin de tipos, mars(allin%,
unmars(allin%, protocolos, etc)
INCO - Facultad de Ingeniera Montevideo, Uruguay 5
Que es WCF?

*na de las venta+as #ue provee WCF, es #ue


simplifica de so,remanera el tra,a+o con
servicios, comparado con plataformas
similares
INCO - Facultad de Ingeniera Montevideo, Uruguay 6
Que es WCF?

a mayor-a de la funcionalidad de WCF esta


incluida en un solo assem,ly,
System)Service&odel)dll en el namespace
System)Service&odel
INCO - Facultad de Ingeniera Montevideo, Uruguay 7
Que es WCF?

WCF es parte de )./0 1)2, y adem's


re#uiere )./0 3)2

Solo puede e+ecutar en sistemas operativos


#ue los soporten, como ser Windows 4ista
(cliente y servidor), Windows 56 S63,
Windows Server 3221 S67, etc)
INCO - Facultad de Ingeniera Montevideo, Uruguay 8
Servicios

*n servicio es una unidad de funcionalidad,


expuesta al mundo

/n ese aspecto, es el prximo paso evolutivo


en el pasa+e de funciones, a o,+etos a
componentes a servicios
INCO - Facultad de Ingeniera Montevideo, Uruguay 9
Servicios

"r#uitectura %eneral8
INCO - Facultad de Ingeniera Montevideo, Uruguay !
Computacin distribuida

a esencia de este tipo de soluciones, esta


en #ue los proveedores de servicios y los
consumidores de servicios, se encuentran en
locaciones f-sicas diferentes

9eneralmente la comunicacin es resuelta a


trav:s de una red
INCO - Facultad de Ingeniera Montevideo, Uruguay
Corba
INCO - Facultad de Ingeniera Montevideo, Uruguay 2
.NET emotin!
INCO - Facultad de Ingeniera Montevideo, Uruguay 3
Servicios

a orientacin a servicios, es un set


a,stracto de principios y ,uenas practicas,
para la construccin de aplicaciones
orientadas a servicios
INCO - Facultad de Ingeniera Montevideo, Uruguay 4
Servicios

*na aplicacin orientada a servicios (S;"),


a%re%a servicios en una unidad (aplicacin)
l%ica

/s similar a la forma en #ue un componente


o una aplicacin orientada a o,+etos,
com,ina o,+etos
INCO - Facultad de Ingeniera Montevideo, Uruguay 5
Servicios
INCO - Facultad de Ingeniera Montevideo, Uruguay 6
Servicios

*n servicio puede ser local o remoto

6uede estar desarrollado por una o m<ltiples


partes, utili$ando una o m<ltiples tecnolo%-as

=nclusive puede e+ecutar en diferentes l-neas


de tiempo
INCO - Facultad de Ingeniera Montevideo, Uruguay 7
Servicios

Dentro de un servicio, vamos a encontrar conceptos


como
o
en%ua+es
o
0ecnolo%-as
o
6lataformas
o
4ersiones
o
Framewor>s

Sin em,ar%o, entre servicios, solo los mecanismos


de comunicacin esta,lecidos son los #ue valen
INCO - Facultad de Ingeniera Montevideo, Uruguay 8
Servicios

/l cliente de un servicio es simplemente la


entidad #ue consume su funcionalidad

/l cliente puede ser casi cual#uier cosa )./0


o no )./0
o
*n Windows form, una pa%ina "S6)./0, otro
servicio, etc)
INCO - Facultad de Ingeniera Montevideo, Uruguay 9
Servicios

os servicios WCF pueden comunicarse


so,re una variedad de protocolos, no solo
?006

os clientes WCF pueden interoperar con


servicios WCF, y los servicios WCF pueden
interactuar con clientes no WCF
INCO - Facultad de Ingeniera Montevideo, Uruguay 2!
Servicios

Como la implementacin de un servicio es


opaca al mundo exterior, un servicio WCF
expone %eneralmente metadatos

/stos metadatos descri,en la funcionalidad


disponi,le, as- como posi,les formas de
comunicarse con el servicio
INCO - Facultad de Ingeniera Montevideo, Uruguay 2
Servicios

os metadatos son pu,licados utili$ando un


formato predefinido, neutral
tecnol%icamente, por e+emplo, utili$ando
WSD so,re ?006@9/0, o al%<n otro
est'ndar de la industria para intercam,io de
metadatos
INCO - Facultad de Ingeniera Montevideo, Uruguay 22
Servicios

*n cliente no WCF, puede importar los datos


en su am,iente nativo, creando los tipos de
datos necesarios para poder interactuar con
el servicio

o mismo ocurre con un cliente WCF, solo


#ue este puede importar la informacin y
consumirla como clases C!
INCO - Facultad de Ingeniera Montevideo, Uruguay 23
E"ecution #oundaries

Con WCF, el cliente nunca interactuara con


el servicio directamente, aun en casos
locales, o e+ecucin in@memory

/n ve$ de esto, el cliente siempre (a,la con


un proxy, el cual se encar%a de forwardear la
llamada al servicio

/l proxy expone las mismas operaciones #ue


el servicio, as- como otros m:todos
administrativos
INCO - Facultad de Ingeniera Montevideo, Uruguay 24
E"ecution #oundaries
E$ecucin en la misma ma%uina
INCO - Facultad de Ingeniera Montevideo, Uruguay 25
E"ecution #oundaries
E$ecucin en m&ltiples ma%uinas
INCO - Facultad de Ingeniera Montevideo, Uruguay 26
Transparencia locacional

/n el pasado, las anteriores tecnolo%-as para


computacin distri,uida (DC;&, !emotin%)
aspira,an a proveer el mismo am,iente de
pro%ramacin para el cliente, sin importar si
el o,+eto es remoto o local
INCO - Facultad de Ingeniera Montevideo, Uruguay 27
Transparencia locacional

/n el caso de una llamada local, el cliente


utili$a,a una referencia directa al o,+eto

Cuando tenia #ue interactuar con un o,+eto


remoto, utili$a,a un proxy
INCO - Facultad de Ingeniera Montevideo, Uruguay 28
Transparencia locacional

/l pro,lema con este enfo#ue, es #ue la


comunicacin remota es muc(o mas
comple+a #ue la local

0ratar de llevar el modelo remoto en local, no


es sencillo, presentando pro,lemas tanto de
desarrollo e implementacin
INCO - Facultad de Ingeniera Montevideo, Uruguay 29
Transparencia locacional

0enemos aspectos comple+os, como


o
Ciclo de vida de los o,+etos
o
Confia,ilidad
o
&ane+o del estado
o
/scala,ilidad
o
Se%uridad

0odo esto es muc(o mas comple+o, todo


por#ue tratamos de simular un modelo local
INCO - Facultad de Ingeniera Montevideo, Uruguay 3!
Transparencia locacional

WCF trata de proveerle al cliente el mismo


modelo de pro%ramacin, sin importar donde
este locali$ado el servicio

Sin em,ar%o, el enfo#ue de WCF es el


opuesto, toma el modelo de pro%ramacin
remota, y lo lleva al caso local

Siempre de,emos comunicarnos a trav:s de


un proxy
INCO - Facultad de Ingeniera Montevideo, Uruguay 3
Transparencia locacional
INCO - Facultad de Ingeniera Montevideo, Uruguay 32
Transparencia locacional
INCO - Facultad de Ingeniera Montevideo, Uruguay 33
'irecciones

/n WCF, todo servicio esta asociado con una


direccin <nica

a direccin provee dos elementos


importantes
o
a locali$acin del servicio
o
/l protocolo de transporte (transport sc(ema)
usado para comunicarnos con el servicio
INCO - Facultad de Ingeniera Montevideo, Uruguay 34
Transport sc(emas

WCF soporta los si%uientes es#uemas


o
?006
o
0C6
o
6eer networ>
o
=6C (=nter@6rocess Communication so,re named
pipes)
o
&S&A
INCO - Facultad de Ingeniera Montevideo, Uruguay 35
'irecciones

as direcciones siempre tienen el formatoB


o
C,ase addressDECoptional *!=D

a direccin ,ase siempre esta en este


formatoB
o
CtransportDBEECmac(ine or domainDCBoptional portD
INCO - Facultad de Ingeniera Montevideo, Uruguay 36
'irecciones

(ttpBEElocal(ostBF227

(ttpBEElocal(ostBF227E&yService

net)tcpBEElocal(ostBF223E&yService

net)pipeBEElocal(ostE&y6ipe

net)msm#BEElocal(ostEprivateE&yService

net)msm#BEElocal(ostE&yService
INCO - Facultad de Ingeniera Montevideo, Uruguay 37
Contratos

/n WCF, todos los servicios exponen


contratos

*n contrato es una forma est'ndar de


descri,ir lo #ue (ace el servicio

/sta descripcin es neutral a nivel de


plataforma
INCO - Facultad de Ingeniera Montevideo, Uruguay 38
Contratos

WCF define cuatro tipos de contrato


o
Service contracts
o
Data contracts
o
Fault contracts
o
&essa%e contracts
INCO - Facultad de Ingeniera Montevideo, Uruguay 39
Service Contract
[ServiceContract]
interface IMyContract {
[OperationContract]
string MyMethod(string text);
string MyOtherMethod(string text);
}
class MyService IMyContract {
p!"lic string MyMethod(string text) {
ret!rn #$ello # % text;
}
p!"lic string MyOtherMethod(string text) {
ret!rn #Cannot call this &ethod over 'C(#;
}
}
INCO - Facultad de Ingeniera Montevideo, Uruguay 4!
Service Contract

/l atri,uto ServiceContract mapea una


interfa$ o una clase C! a un contrato
independiente de la tecnolo%-a

/n este proceso de exposicin, no interesan


aspectos como la visi,ilidad de la clase o la
interfa$
INCO - Facultad de Ingeniera Montevideo, Uruguay 4
Service Contract

/n con+unto con lo anterior, nin%<n miem,ro


de la clase o interfa$ ser' parte del contrato,
a menos #ue lo especifi#uemos
expl-citamente

De,emos (acerlo utili$ando el atri,uto


;perationContract, el cual podemos aplicar a
m:todos
INCO - Facultad de Ingeniera Montevideo, Uruguay 42
)peration Contract
[ServiceContract]
interface IMyContract {
[OperationContract]
string MyMethod(string text);
string MyOtherMethod(string text);
}
class MyService IMyContract {
p!"lic string MyMethod(string text) {
ret!rn #$ello # % text;
}
p!"lic string MyOtherMethod(string text) {
ret!rn #Cannot call this &ethod over 'C(#;
}
}
INCO - Facultad de Ingeniera Montevideo, Uruguay 43
'ata Contract

6ermite definir los elementos intercam,iados


en los diferentes contratos de los servicios

/s una forma de normali$ar la seriali$acin


de la informacin a trav:s de la conexin
INCO - Facultad de Ingeniera Montevideo, Uruguay 44
'ata Contract
[DataContract]
p!"lic class )ser
{
[DataMember]
p!"lic string +a&e;
[DataMember]
p!"lic string ,ddress;
--..etc..
}
INCO - Facultad de Ingeniera Montevideo, Uruguay 45
Fault Contract

6ermite definir los diferentes tipos de errores


#ue puedo reci,ir a la (ora de interactuar con
un servicio

/s una forma independiente de la tecnolo%-a


de definir las GexcepcionesH #ue una
operacin puede provocar
INCO - Facultad de Ingeniera Montevideo, Uruguay 46
Fault Contract
[ServiceContract]
p!"lic class Calc!latorService
{
[OperationContract]
int /ivide(int a0 int ")
{
if ("112)
thro3 ne3 4xception(5/ivision "y 6ero78);
ret!rn a-";
}
}
INCO - Facultad de Ingeniera Montevideo, Uruguay 47
Fault Contract
-- /efine a &ath fa!lt data contract
[/ataContract(+a&espace1#http--Microsoft.ServiceModel.Sa&ples#)]
p!"lic class Math(a!lt
{
private string operation;
private string pro"le&9ype;
[/ataMe&"er]
p!"lic string Operation {
get { ret!rn operation; }
set { operation 1 val!e; }
}
[/ataMe&"er]
p!"lic string :ro"le&9ype {
get { ret!rn pro"le&9ype; }
set { pro"le&9ype 1 val!e; }
}
}
INCO - Facultad de Ingeniera Montevideo, Uruguay 48
Fault Contract

/n la funcin ponemos8
[OperationContract]
[(a!ltContract(typeof(Math(a!lt))]
int /ivide(int n;0 int n<);
INCO - Facultad de Ingeniera Montevideo, Uruguay 49
Fault Contract

o #ue nos (a,ilita a (acer8


thro3 ne3 (a!lt4xception=Math(a!lt>(
ne3 Math(a!lt(
5/ivision80
5/ivision "y 6ero8));
INCO - Facultad de Ingeniera Montevideo, Uruguay 5!
Faults

/stas pueden ser procesadas por el cliente


cuando ocurran, en forma similar a una
excepcin
try {
...
catch ((a!lt4xception=Math(a!lt> &ath(a!lt) {
Console.'rite?ine(&ath(a!lt./etail.:ro"le&9ype);
Console.@ead?ine();
3cfClient.,"ort();
}
INCO - Facultad de Ingeniera Montevideo, Uruguay 5
*ostin!

a clase #ue implementa el servicio WCF no


puede existir en un vac-o

0odo servicio WCF de,e ser (osteado en un


proceso de Windows, denominado, el (ost
process

*n solo (ost process puede (ostear m<ltiples


servicios, y el mismo servicio puede ser
(osteado por m<ltiples (ost processes
INCO - Facultad de Ingeniera Montevideo, Uruguay 52
*ostin!

/l (ostin% puede ser provisto por


o
==S (=nternet =nformation Services)
o
W"S (Windows "ctivation Service)
o
;, en un proceso Windows provisto por el
desarrollador
INCO - Facultad de Ingeniera Montevideo, Uruguay 53
IIS *ostin!

/ste (ostin% es muy interesante, ya #ue


permite #ue todo el ciclo de vida sea
controlado por el ==S, sin #ue el desarrollador
de,a preocuparse del proceso
INCO - Facultad de Ingeniera Montevideo, Uruguay 54
IIS *ostin!

a forma de reali$ar el deploy, es creando un


directorio virtual en el ==S, y colocando alli un
arc(ivo )svc, el cual identifica el code ,e(ind
#ue provee la implementacin del servicio

/l enfo#ue es muy similar al utili$ado por los


servicios we, "S&5
INCO - Facultad de Ingeniera Montevideo, Uruguay 55
IIS *ostin!
<%@ ServiceHost
Language = "C"
Debug = "true"
Co!e"e#in! =
"$%&pp'Co!e%M(Service)cs"
Service = "M(Service"
%*
INCO - Facultad de Ingeniera Montevideo, Uruguay 56
#indin!s

/xisten m<ltiples aspectos en la


comunicacin entre dos servicios
o
0enemos varios patrones de comunicacin,
sincrnicos, asincrnicos, etc)
o
0enemos m<ltiples protocolos de transporte para
los mensa+es
o
0enemos varios formatos de encodin% en los
mensa+es
INCO - Facultad de Ingeniera Montevideo, Uruguay 57
#indin!s

8
o
0enemos varias opciones para el tema de la
se%uridad
o
a entre%a del mensa+e puede ser confia,le o no
confia,le
o
6odemos tener #ue interoperar con otros
servicios y o clientes
o
6odemos tener #ue interoperar con clientes
le%ados
INCO - Facultad de Ingeniera Montevideo, Uruguay 58
#indin!s

Si empe$amos a contar todas las opciones


posi,les, veremos #ue las com,inaciones
son muc(as (varios cientos tal ve$)

"l%unas de estas opciones son mutuamente


excluyentes, y al%unas otras re#ueridas

Claramente, cliente y servicio de,en estar


alineados, si #ueremos tener una
comunicacin exitosa
INCO - Facultad de Ingeniera Montevideo, Uruguay 59
#indin!s

6ara simplificar este proceso de eleccin,


WCF a%rupa estos aspectos de
comunicacin, en %rupos denominados
bindin!s
INCO - Facultad de Ingeniera Montevideo, Uruguay 6!
#indin!s

*n ,indin% es un con+unto de opciones,


consistente entre si, relacionadas conB
o
protocolo de transporte
o
encodin% de mensa+es
o
patrones de comunicacin
o
confia,ilidad
o
se%uridad
o
propa%acin de transacciones
o
interopera,ilidad
INCO - Facultad de Ingeniera Montevideo, Uruguay 6
#indin!s por defecto

Iasic ,indin%

0C6 ,indin%

6eer networ> ,indin%

=6C ,indin%

We, Service (WS) ,indin%

Federated WS ,indin%

Duplex WS ,indin%

&S&A ,indin%

&S&A inte%ration ,indin%


INCO - Facultad de Ingeniera Montevideo, Uruguay 62
#indin!s

os ,indin%s son altamente extensi,les

6odemos tomar uno existente, y modificar


al%una de sus propiedades, en lu%ar de
comen$ar de 2
INCO - Facultad de Ingeniera Montevideo, Uruguay 63
Encodin!s disponibles
INCO - Facultad de Ingeniera Montevideo, Uruguay 64
Seleccin del bindin!
INCO - Facultad de Ingeniera Montevideo, Uruguay 65
Entonces+

0odo servicio esta asociado con una


direccin (address) #ue define donde se
encuentra el servicio

*n ,indin% #ue define como comunicarnos


con el servicio

*n contrato (contract) #ue define #ue (ace el


servicio
INCO - Facultad de Ingeniera Montevideo, Uruguay 66
Endpoints

/sta terna #ue %o,ierna el servicio, se


conoce como el "IC del servicio

WCF formali$a esta relacin en la forma de


un endpoint

/l endpoint es la fusin de la address, el


bindin! y el contract
INCO - Facultad de Ingeniera Montevideo, Uruguay 67
Endpoints
INCO - Facultad de Ingeniera Montevideo, Uruguay 68
Endpoint

Se confi%ura declarativa yEo


pro%ramaticamente al construir el servicio
<s(stem)serviceMo!e+*
<services*
<service name = "M(,amespace)M(Service"*
<en!point
a!!ress = "#ttp-%%+oca+#ost-.///%M(Service%"
bin!ing = "0sHttp"in!ing"
contract = "M(,amespace)1M(Contract"
%*
<%service*
<%services*
<%s(stem)serviceMo!e+*
INCO - Facultad de Ingeniera Montevideo, Uruguay 69
Endpoint
<service name = "M(Service"*
<en!point
a!!ress = "#ttp-%%+oca+#ost-.///%M(Service%"
bin!ing = "0sHttp"in!ing"
contract = "1M(Contract" %*
<en!point
a!!ress = "net)tcp-%%+oca+#ost-.//2%M(Service%"
bin!ing = "net3cp"in!ing"
contract = "1M(Contract" %*
<en!point
a!!ress = "net)tcp-%%+oca+#ost-.//4%M(Service%"
bin!ing = "net3cp"in!ing"
contract = "1M(Ot#erContract" %*
<%service*
INCO - Facultad de Ingeniera Montevideo, Uruguay 7!
,r%uitectura de WCF

También podría gustarte