Windows Communication Foundation

WCF

C'est l'un des quatre composants majeurs du framework .NET 3.0 (avec WPF, CardSpace et WF). Le modèle de programmation WCF est une couche d'abstraction qui unifie et simplifie la mécanique d'intégration des services Web, .NET Remoting, Microsoft Transaction Server, et Microsoft Message Queuing.

Cette couche permet en outre la redistribution des rôles:
  * Le développeur conçoit et développe son service sans se soucier de son implémentation à cible. C'est-à-dire qu'il ne s'intéresse qu'aux caractéristiques structurantes du service pour son intégration au sein d'une Architecture orientée services : le service fonctionne-t-il en mode singleton, en mode asynchrone, avec un callback, etc.
  * L’intégrateur (ou l’administrateur), lui, détermine le protocole mais aussi le niveau et le mode de sécurisation du service ainsi développé.
WCF utilise des messages SOAP pour les communications entre processus. Quand un processus WCF discute avec un processus non WCF, le langage XML est utilisé pour les messages SOAP. Pour les messages entre processus WCF, les messages SOAP sont encodés au format binaire.

Un service WCF est composé de trois parties :
  * une classe service 
  * un environnement hôte 
  * un ou plusieurs points finaux (Endpoint)

Point de Terminaison (Endpoint)

Un client se connecte à un service WCF via un Endpoint. Chaque service expose son contrat via un ou plusieurs Endpoint. Un endpoint a une adresse (url) et des bindings qui exposent comment les données seront transferées.
A/B/C : Address, Binding, Contract
Depuis le framework 3.5 on peut également utiliser un encodeur JSON.

Exemple de Endpoint :
<code>
<service name="MyService">
    <endpoint address="net.tcp://localhost:1234/Svc" binding="netTcpBinding" contract="IMyService" />
</service>
</code>
====Adresse====
  * Spécifie où se trouve le service
  * Définie par une URI
  * Spécifiée de façon impérative (code )ou déclarative (fichier de configuration)

==== Binding ====
Un binding détermine les protocoles de communication qui seront utilisés pour un service, les mécanismes de sécurité...
Un binding peut être attribué à un ou plusieurs Endpoint à la fois.

=== Méthode de Transport ===
  * HTTP
  * HTTPS
  * TCP
  * Named Piped
  * ...

=== Format d’encodage ===
  * Text
  * Binary
  * Custom

=== Contraintes de sécurité ===
  * Confidentiality, integrity, authN, authZ, federation
  * Credentials: X509, User/Pwd, Kerberos, SAML, InfoCard, Custom

=== Contraintes de garantie de remise ===
  * Transport independent QoS (in order, exactly once)
  * Volatile and durable queues for availability
=== Support des transactions ===
  * Shared transactions for “synchronous” operations
  * Transactional queues for “asynchronous” operations

^Binding^Configuration Element^Description^
|BasicHttpBinding|<basicHttpBinding>|A binding that is suitable for communicating with WS-Basic Profile conformant Web services, for example, ASP.NET Web services (ASMX)-based services. This binding uses HTTP as the transport and text/XML as the default message encoding.|
|WSHttpBinding|<wsHttpBinding>|A secure and interoperable binding that is suitable for non-duplex service contracts.|
|WS2007HttpBinding|<ws2007HttpBinding>|A secure and interoperable binding that provides support for the correct versions of the Security, ReliableSession, and TransactionFlow binding elements.|
|WSDualHttpBinding|<wsDualHttpBinding>|A secure and interoperable binding that is suitable for duplex service contracts or communication through SOAP intermediaries.|
|WSFederationHttpBinding|<wsFederationHttpBinding>|A secure and interoperable binding that supports the WS-Federation protocol, enabling organizations that are in a federation to efficiently authenticate and authorize users.|
|WS2007FederationHttpBinding|<ws2007FederationHttpBinding>|A secure and interoperable binding that derives from WS2007HttpBinding and supports federated security.|
|NetTcpBinding|<netTcpBinding>|A secure and optimized binding suitable for cross-machine communication between WCF applications.|
|NetNamedPipeBinding|<netNamedPipeBinding>|A secure, reliable, optimized binding that is suitable for on-machine communication between WCF applications.|
|NetMsmqBinding|<netMsmqBinding>|A queued binding that is suitable for cross-machine communication between WCF applications.|
|NetPeerTcpBinding|<netPeerTcpBinding>|A binding that enables secure, multi-machine communication.|
|WebHttpBinding|<webHttpBinding>|A binding used to configure endpoints for WCF Web services that are exposed through HTTP requests instead of SOAP messages.|
|MsmqIntegrationBinding|<msmqIntegrationBinding>|A binding that is suitable for cross-machine communication between a WCF application and existing Message Queuing (also known as MSMQ) applications.|

Commentaires

Posts les plus consultés de ce blog

Base de Données Sybase IQ

Sécurité des Applications

Principes de la Programmation Orientée Objet