samedi 21 août 2010

WCF

ASP.NET et les services Web

Depuis l'apparition du Framework .NET, l'environnement de développement Visual Studio permet de créer ou consommer un service Web en quelques clics grâce aux composants ASMX. Au-delà de cette facilité, la mise au point des caractéristiques étendues du service est à la charge du développeur, avec le risque de produire un service Web peu interopérable car muni d'une configuration exotique. En ce qui concerne la consommation de services Web, des points d'extension rendent possible les traitements spécifiques sur les messages, ce qui procure la possibilité d'exploiter n'importe quel service aux caractéristiques imprévues.

La diversité des technologies de transport, encodage, cryptographie, et l'évolution des standards a justifié la création de l'organisme Web Service Interoperability (WS-I), chargé d'identifier et de conseiller des profils de standards. Avec la publication du couple .NET 2.0/ASMX 2.0, la pile de composants Web Services s'enrichit du moyen de rendre un service Web conforme à ces standards en ajoutant une instruction devant l'interface du service.

Par ailleurs, afin de rester en phase avec l'évolution des standards et étendre la déclaration de conformité à la sécurité et à la fiabilité des échanges, Microsoft délivre aussi des compléments sous la forme d'une librairie qui étend ASMX via des points d'extension prévus à cet effet: Web Services Enhancements (WSE).

Windows Communication Foundation

Windows Communication Foundation (WCF) est un composant majeur du Framework .NET 3.0. C'est une refonte des services supportés par ASMX et WSE, étendue aux communications hors services Web. Cette nouvelle bibliothèque de classes a été pensée pour unifier l'accès aux différents moyens de communication de .NET. Là où l'architecte devait intégrer les interfaces de .NET Remoting, WSE, des Enterprises Services (Transactions distribuées) ou MSMQ, WCF fournit une vue homogène pour les besoins de communication.

WCF repose sur des messages échangés entre deux points selon les modalités définies par l'adressage, le mode de liaison et le contrat de service. Ces trois points sont résumés selon Microsoft par le triplet A, B et C : Address, Binding et Contract.
  • Address: Un point de destination (endpoint) d'une communication WCF doit avoir une adresse représentée sous forme d'un URI.
  • Binding: Une liaison comprend trois types d'éléments.
    1. Le protocole définit la sécurité, la fiabilité, le contexte de communication ou un protocole personnalisé pour les messages qui circuleront entre les points de destination. Dans cette catégorie figurent des spécifications telles que WSReliableMessaging ou WS-Federation.
    2. Le transport définit la couche réseau qui servira de base au transport des messages, par exemple tcp ou http.
    3. L'encodage définit la méthode de codage du contenu des messages, par exemple text/XML, Binary ou MTOM.
  • Contract: Le contrat expose les opérations que le service est capable d'assurer. En plus de la signature des opérations qui décrivent les données échangées dans les messages, la nature de l'échange est aussi déterminée par le contrat (uni- ou bidirectionnelle, synchrone ou asynchrone), ainsi que la mécanique de gestion des erreurs.

Toutes ces informations sont exposées dans un modèle objet unifié qui vise à assurer la productivité des développements quel que soit le niveau de spécificité de l'application distribuée à mettre en oeuvre. Le développeur gagne en temps de codage et évite l’éparpillement et les apprentissages de multiples
APIs. De plus WCF est extensible (possiblité d’ajouter ses protocoles, ses formats de compression, ses mécanismes de trace) en venant s’insérer dans le pipeline de traitements des messages.
Autre facteur de productivité, les bindings les plus courants, tels que ceux correspondants aux standards WS-BasicProfil et WS-Federation, sont prédéfinis. Ils peuvent toutefois être paramétrés dans les détails (algorithme de cryptage, types de clés, types de jeton de sécurité, etc.) pour assurer l'interopérabilité avec des services existants. D'autres bindings moins courants sont prédéfinis : peer-to-peer sur tcp, canaux nommés, échanges convoyés par MSMQ, ...

Liens intéressants

Aucun commentaire:

Enregistrer un commentaire