Cercar en aquest blog

27/3/09

Arquitectura Orientada a serveis en .NET.

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.


Per desenvolupar amb aquest model cal partir del Farmework 3.0 de Microsoft. Una de les avatnatges més grans es que separa totalmet la capa de comunicació de la resta del negoci que implementa el servei. Fins a tal punt que modificar aquesta capa o canviar-la o afegir-ne una de nova es tant simple com escriure en el fitxer de configuració algunes comandes, i ni tant sols cal tornar a compilar el servei. Es poden especificar tant protocols estandars, com protocols no tant estandars com poden ser pipes o ques MSQM. També porta associats a la comunicació sistemes de validació, autorització i xifratge de missatges.

Per altre banda assegura que els missatges intercanviats entre client i servidor siguin coneguts per ambdós de manera específica (DataContracts, DataMembers) així com les operacions o funcinalitats ofertades pel Servei (OperationContract).


Per altre banda hem de pensar en quin mode de configuració usarem en cada cas. Si pensem una mica podem dir que quan més amunt estigui el servei, més estándard i quan més avall menys. Que vull dir amb això, doncs que els serveis que només siguin consumits per altres serveis (del nucli del sistema) cal que siguin efectius i farem servir protocols de baix nivell (tcp/ip, pipes si estan allotjats en el mateix servidor o ques). Si són serveis usats per aplicacions utilitzarem (http, SOAP, xml).


No cal remarcar que aquesta arquitectura aporta al sistema un radi de interoperatibilitat complert, el que vull dir amb això es que qualsevol servei es pot convertir en estándar (SOAP, Http, XML) modificant un fitxer de configuració (2 minuts), i canviar-ne el comportament en qualsevol moment.