Cercar en aquest blog

27/3/09

WCF (Windows Communication Foundation)

Windows Communication Foundation (WCF) de Microsoft és el model de programació unificat per a la construcció d'aplicacions orientades a serveis. Permet als desenvolupadors construir la seguretat, la fiabilitat, i la transacció a través de solucions que integrin les plataformes i interoperar amb les inversions existents.


Fonaments de WCF
Windows Communication Foundation (WCF) és un conjunt d'APIs per a la creació de sistemes que s'envien missatges, entre els serveis i els clients dels serveis. La mateixa infraestructura i API s'utilitzen per crear aplicacions que es comuniquen amb altres aplicacions en el mateix equip o en una màquina que resideix en una altre empresa i s'accedeix a través d'Internet.

Missatges i extrems (Messaging and Endpoints)
WCF es basa en el concepte de comunicació basat en missatges, i tot el que pot ser modelat com un missatge (per exemple, una petició HTTP o un missatge de MSMQ) poden ser representats de manera uniforme en el model de programació. Això permet una API unificada a través de diferents mecanismes de transport.
El model distingeix entre clients, que són aplicacions que inicien la comunicació, i serveis, que són aplicacions que esperan als clients per comunicar-se amb ells i respondre a aquesta comunicació.
Els missatges s'envien entre extrems.
S’han d’establir criteris, valorar i definir tota la informació necessària per a l'intercanvi de missatges.
Un servei exposa una sol licitud o més punts finals (així com a zero o més paràmetres d'infraestructura), i el client genera un punt final que és compatible amb un dels criteris de valoració del servei. Descriu un punt final que es basa en la manera en que els missatges han de ser enviats o intercanviats. Un servei pot exposar la informació com a metadades que els clients puguin utilitzar per generar clients (proxys) i contractes per tal de poder establir la comunicació amb les piles (conjunt de canals) del servei.


Protocols de comunicació

Un element de la comunicació és el protocol de transport que viatjara per la pila (canal). Es poden crear més mecanismes de transport utilitzant extensions del WCF.

Un altre element necessari en la pila de comunicació és la codificació que s'especifica de quina manera cada missatge està formatat. WCF proporciona les següents codificacions:

Codificació de text, una codificació interoperable.
Mecanisme de transmissió del missatge d'Optimització (MTOM) de codificació, que és una forma interoperable, eficient per a l'enviament de dades binaries no estructurades d'un servei.
Codificació binària per a la transferència eficient.

Es poden generar més mecanismes de codificació (per exemple, una codificació de compressió) fent ús dels punts d'extensió del model d ‘operacions de WCF.

Patrons missatge

WCF admet diversos models de missatgeria, incloent sol licitud-resposta, en un sol sentit, i la comunicació dúplex. Les diferents modalitats de transport donen suport a les diferents modalitats de missatges i, per tant l'API de WCF en temps d’execució afageix seguretat i fiabilitat en l’intercanvi de missatges.


Termes WCF

Altres conceptes i termes utilitzats en la documentació de WCF Són els següents.

Missatge

Un missatge és una unitat autònoma de dades que podrà constar de diverses parts, inclòs un cos i les capçaleres.

A service is a construct that exposes one or more endpoints, with each endpoint exposing one or more service operations.Un servei és una construcció que exposa un o diversos paràmetres, amb una exposició de cada punt final i operacions de servei.

Un punt final és una construcció en la que viatgen els missatges enviats o rebuts (o ambdós). Es compon d'un lloc (una adreça) que defineix on es poden enviar missatges, l'especificació d'un mecanisme de comunicació (vinculant) que es descriu com s'han d'enviar els missatges, i una definició d'un conjunt de missatges que poden ser enviats o rebuts (o ambdós) en aquest lloc (un contracte de serveis) que descriu el que es pot enviar el missatge.
Un servei de WCF s'exposa al món com una col lecció de punts finals (canals).

Aplicació de punt final

Un punt final exposat per la sol licitud i que correspon a un contracte de serveis executats per l'aplicació.

Infraestructura de punt final.

Un punt final que s'exposa a través de la infraestructura per facilitar la funcionalitat que es requereix o és facilitada pel servei que no es refereixi a un contracte de serveis.

Per exemple, un servei pot tenir un punt final que proporciona la infraestructura d'informació de metadades.


Adreça

Una adreça específica el lloc on es reben missatges. S'especifica com un Uniform Resource Identifier (URI). La part de l'esquema de noms URI és el mecanisme de transport a utilitzar per arribar a l' adreça, com ara HTTP i TCP. La jerarquia de la URI conté una ubicación única i el format depèn del mètode de transport. El punt final de l' adreça li permet crear adreces úniques per a cada punt final en un servei, o, en determinades condicions, es pot compartir una adreça en els extrems.



L'exemple següent mostra una adreça mitjançant el protocol net.tcp amb un port no predeterminat:



net.tcp://server.domain.com:8000/DalDBIService/Service.svc


Element vinculant


Un element vinculant representa una part de la unió, com ara el transport, una codificació, una implementació d'una infraestructura a nivell de protocol (com WS-ReliableMessaging), o qualsevol altre component de la comunicació pila.








Controladors de Funcionament


Un controlador és un component que controla diversos aspectes de temps d'execució d'un servei, un punt final, una operació, o un client. Els controladors s'agrupen d'acord a l'àmbit d'aplicació: controladors comuns afecten tots els punts finals a nivell general, el servei només afecta els controladors relacionats amb els aspectes de serveis, al punt final només afecten els controladors relacionats amb les propietats de punt final, i el funcionament a nivell de conductes afecten a les diferents operacions. Per exemple, un controlador és la regulació, que especifica com reacciona quan un un excés de missatges amenacen amb desbordar la seva capacitat de manipulació. Un controlador variable, d'altra banda, els controls només els aspectes relatius a les variables, com ara com i on trobar una credencial de seguretat.


Enllaços proporcionats pel sistema


WCF inclou diferents sistemes d'enllaços. Es tracta de col leccions d'elements vinculants que estan optimitzats per a situacions específiques. Per exemple, el WSHttpBinding està dissenyat per a la interoperabilitat amb els serveis que implementen diferents especificacions WS-*. Aquests enllaços predefinits estalvien temps presentant únicament les opcions que poden ser correctament aplicades a la situació específica. Si un predefinit vinculant no compleix els seus requisits, es pot crear el seu propi vinculant.


Configuració versus codificació


El control d'una sol licitud es pot fer ja sigui a través de la codificació, a través de la configuració, o mitjançant una combinació d'ambdós. La configuració té l'avantatge de permetre que algú que no sigui el promotor (per exemple, un administrador de xarxa) pugui configurar els paràmetres de servei de client i sense haver de recompilar el codi escrit. Configuració no només li permet establir els valors com les adreces de punt final, sinó que també permet un major control per la qual cosa li permet afegir punts finals, fixacions, i comportaments. Codificació permet als desenvolupadors mantenir un control estricte sobre tots els components del servei o client, i qualsevol ajustament realitzat a través de la configuració pot ser inspeccionat i, si cal anul lat des del codi.


Explotació del servei








Un servei és un procediment d'operació que es defineix en una part de codi que implementa la funcionalitat per a una operació. Aquesta operació està exposada als clients com els mètodes d'un client WCF. El mètode pot tornar un valor, i pot tenir un nombre opcional d'arguments, o no tenen arguments, i tornar sense resposta. Per exemple, una operació que funciona com un simple "Hola" es pot utilitzar com una notificació de la presència d'un client i començar una sèrie d'operacions.

Contracte de servei

El contracte de serveis utilitza múltiples llaços junts en les operacions relacionades amb una sola unitat funcional. El contracte pot definir els ajustos de nivell de servei, tals com l'espai de noms del servei, el corresponent contracte de devolució de trucada, i altres ajustaments. En la majoria dels casos, el contracte es defineix per la creació d'una interfície de programació en l'idioma de la seva elecció i l'aplicació de la ServiceContractAttribute atribuit a l’ interfície. El codi de servei real es el resultat d’ aplicar la interfície.

Un contracte d'operació es defineix el tipus de retorn i paràmetres d'una operació. En crear una interfície que defineix el contracte de serveis, que significa un contracte d'operació mitjançant l'aplicació dels OperationContractAttribute atribuir a cada mètode de definició, que és part del contracte. Les operacions poden ser modelades tenint un sol missatge, o tenint un conjunt de tipus de missatges. En aquest últim cas, el sistema determinarà el format dels missatges que han d'intercanviar per l'operació.

Un missatge contracte descriu el format d'un missatge. Per exemple, declarar els elements que han d'anar a les capçaleres i al cos, quin nivell de seguretat s'ha d'aplicar als elements del missatge, i així successivament.

Culpa contracte(Excepció)

Un contracte de culpa es pot associar amb un servei d'operació per indicar els errors que es poden retornar a la persona que truca (client). Una operació pot tenir zero o més defectes associats a ella.. Aquests errors (transmesos en SOAP) es basa en les fallides com les excepcions en el model de programació.



Contracte de dades


Els tipus de dades que utilitza un servei, haurà de ser descrita a les metadades per tal que puguin interoperar amb altres per al servei. Les descripcions dels tipus de dades són coneguts com les dades del contracte, i els tipus es poden utilitzar en qualsevol part d'un missatge, per exemple, com a paràmetres o tipus de retorn. Si el servei és senzill utilitzant només els tipus, no hi ha necessitat d'utilitzar les dades explícitament els contractes.

Allotjament

Un servei ha d'estar allotjat en algun procés. Un host és una aplicació que controla la vida útil del servei. Els serveis poden ser acollits o auto-administrats per un procés d'acollida existent.

Auto-servei allotjat

Un auto-és un servei allotjat que s'executa dins d'un procés de sol licitud, que el desenvolupador ha creat. (Classe ServiceHost)

Procés d'acollida Negreta

Un procés d'acollida és una aplicació que està dissenyat per acollir els serveis. Aquests inclouen Internet Information Services (IIS), Serveis d'activació de Windows (WAS), i serveis de Windows. En aquests escenaris amfitrió, l'amfitrió controla la vida del servei. Per exemple, si utilitza IIS, pot crear un directori virtual que conté el servei de muntatge i arxiu de configuració. Quan es rep un missatge, IIS inicia el servei i controla la seva vida.

Instàncies

Un servei té un model d'instància. Hi ha tres models d'instàncies: "únic", en què un sol objecte servei CLR atent tots els clients, "per trucada", en la qual un nou objecte CLR es crea per tractar a cada client de trucada, i "en cada període de sessions", en què un conjunt CLR d'objectes es creen, un per a cada període de sessions. L'elecció d'un model d'instància depèn dels requisits de l'aplicació i el patró d'ús d'espera del servei.

Aplicació client

Una aplicació client és un programa que els intercanvis de missatges amb un o més extrems. L'aplicació client comença per la creació d'una instància d'un client de WCF i els mètodes, funcions i propietats que pot invocar del servei WCF. És important assenyalar que una única aplicació pot ser tant un client i un servei.

Canal Negreta

Un canal és una aplicació concreta d'un element vinculant. La unió representa la configuració, i el canal està associat amb l'aplicació de la configuració. Per tant, la configuració defineix un canal associat a cada element vinculant. El conjunt de canals defineixen la pila de canals que es poden utilizar per invocar el servei (canal pila).

WCF client

Un client de WCF és una aplicació client que exposa a la construcció de les operacions dels serveis com els mètodes (al. NET Framework, llenguatge de programació de la seva preferència, tals com Visual Basic o Visual C #). Qualsevol aplicació pot acollir un (o més) WCF client, inclosa una sol licitud que allotja un servei. Per tant, és possible crear un servei que inclou el conjunt operacions dels clients altres serveis.

Un client de WCF pot ser generat automàticament utilitzant l'eina d'utilitat ServiceModel metadades (Svcutil.exe) i apuntant en funcionament un servei que publica metadades.

Metadades

Les metadades d'un servei ens descriuen les característiques del servei que una entitat externa a d'entendre per comunicar-se amb el servei. Les metadades poden ser consumits per la utilitat de les metadades ServiceModel Tool (Svcutil.exe) per generar un client de WCF i que acompanya a la configuració d'una aplicació client pot utilitzar per interactuar amb el servei.

Les metadades exposades pel servei inclou l'esquema XML de documents, que defineixen les dades del contracte del servei, i els documents WSDL, que descriuen els mètodes del servei.

Quan està activada, les metadades del servei es generen automàticament pel conjunt d'operacions pel servei d'inspecció i els seus criteris de valoració. Per publicar les metadades d'un servei, s’ha d’especificar explícitament en el comportament del servei.


Seguretat

WCF inclou la seguretat a la confidencialitat (xifrat de missatges per prevenir escoltes), integritat (els mitjans per a la detecció de la manipulació amb el missatge), l'autenticació (els mitjans per a la validació dels servidors i clients), i l'autorització (el control d'accés als recursos). Aquestes funcions són proporcionades per qualsevol dels mecanismes de seguretat existents, com TLS sobre HTTP (també conegut com HTTPS), o mitjançant l'aplicació d'una o més dels diversos WS-* especificacions de seguretat.

Per la seguretat del transport

Seguretat poden ser proporcionades per un dels tres modes: mode de transport, el mode de missatge de seguretat, i el transport amb el mode de missatge credencial. El mode de seguretat de transport s'especifica que la confidencialitat, integritat, autenticació i són proporcionades pels mecanismes de la capa de transport (per exemple, HTTPS). Quan s'utilitzi un transport com HTTPS, d'aquesta manera té l'avantatge de ser eficient en el seu acompliment, i siguin ben compreses per la seva prevalença a Internet. El desavantatge és que aquest tipus de seguretat s'aplica per separat en cada tram en la ruta de comunicació, fent de la comunicació sensibles a un atac “d’ home al mig”.

Per la seguretat en el missatge
Negreta
Missatge Especifica el mode de seguretat que la seguretat és proporcionada per l'aplicació d'una o més de les especificacions de seguretat, tals com l'especificació anomenada "de seguretat de Serveis Web: SOAP Message Security" (disponible a http://go.microsoft.com/fwlink/?LinkId = 94684). Cada missatge conté els mecanismes necessaris per garantir la seguretat durant el seu trànsit, i de permetre que els receptors per detectar la manipulació i per a desxifrar els missatges. En aquest sentit, la seguretat es encapsulada dins de cada missatge, d'extrem a extrem a través de múltiples salts. Perquè la informació de seguretat es converteix en part del missatge, també és possible incloure diversos tipus de credencials amb el missatge (es refereix a les reclamacions). Aquest enfocament també té l'avantatge de permetre que el missatge pot viatjar de forma segura a través de qualsevol transport, inclouent salts entre origen i de destí. El desavantatge d'aquest enfocament és la complexitat dels mecanismes de xifrat, i les implicacions que porta la seva correcta execució.

Transport amb el mode de missatge de credencial de seguretat

Aquest mode utilitza la capa de transport per proporcionar confidencialitat, autenticació i integritat dels missatges, mentre que cadascun dels missatges pot contenir múltiples credencials (reclamacions) requerida pels receptors del missatge.