Windows Communication foundation. Service Oriented Architecture SOA Les architectures des...

29
WCF Windows Communication foundation

Transcript of Windows Communication foundation. Service Oriented Architecture SOA Les architectures des...

Page 1: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

WCFWindows Communication foundation

Page 2: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Service Oriented Architecture SOA• Les architectures des applications

informatiques modernes repose sur le paradigme de blocs de services.

• Ces blocks de services doivent être accessibles et consommables rapidement et avec le moins de contraintes techniques spécifique (indépendance de technologie et de plateforme).

• Une première réponse a été apportée par les services web, mais il existe d’autres technologies.

Page 3: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Technologies distribuées chez Microsoft• COM• DCOM.• COM+ (transaction, appel asynchrone)• MS Message Queue (MSMQ).• Enteprise services (wrapper .Net de COM+)• Web Services.• .Net Remoting (natif .net).• …

Page 4: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Problématique• Toutes ces technologies sont fortement

couplées à l’infrastructure de communication du service qu’elles exposent.

• Le choix du protocole de communication est de la décision du développeur et non celui de l’administrateur système.

• L’évolution d’une infrastructure à une autre n’est pas forcement simple à mettre en place.

• Le code source contient la logique de communication.

Page 5: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Objectif de WCF• WCF n’est pas un nouveau protocole de communication, mais tentative une

unification • Proposer un modèle de programmation unifié pour l’ensemble des

technologies distribuées de Microsoft.• Permettre de construire des applications indépendantes du mécanisme de

communication sous-jacent.• WCF est une réponse structurée et intégrée au framework .net

Page 6: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Modèle de programmation unifié

Interopérabilitéavec d’autresplateformes

ASMX SOAP

Programmationpar

attribut

Enterprise Services

Support desprotocoles

WS-*

WSE

Programmationorienté

message

System.Messaging

ExtensibilitéDisponibilité transparente

.NET Remoting

Page 7: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Structure d’un service WCF Un hôte qui héberge le service et procure l’environnement d’exécution. Un contrat de service qui définit via une interface et des entités les

opérations implémentées par le service. Le service qui implémente l’interface. Des points de terminaison (end point) qui permettent d’exposer le service.

Page 8: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

WCF dans le .net Framework• Le framework 3.0

– Implémentation de WPF.– Implémentation de WCF.– Implémentation de WF.– Implémentation de CardSpace.

• Le framework 3.0 repose sur le même runtime que le framework 2.0.• Intégré en natif dans VisualStudio 2008 mais pris en charge dès VS 2005.

Page 9: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Définition des contracts QUOI (que mets a disposition votre service) Les opérations implémentées par le service. La structure des données utilisées par le service. Les attributs DataContract et DataMenber permettent de spécifier les

éléments a intégrer dans l’entité du contrat.

Page 10: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Définition des Bindings COMMENT (quel protocole sont utilisés) Définition du protocole de transport. Définition de l’encodage des messages. Définition des information de cryptage et de sécurité.

Page 11: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Définition des Adresses OU (localisation du service) Url utilisée pour accéder au service.

Page 12: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Points de terminaisons Ils sont composés d’au moins trois éléments (ABC)

Address. Localisation du service. Binding. Protocole de communication (transport, encodage, securite,

…). Contract. Contenu du service.

Page 13: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Les applications clientes Les applications qui consomment un service WCF ont besoin de connaitre:

Le canal d’envoi. Le contrat mis en œuvre. Les entités (si présente) L’adresse du service.

Page 14: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

TP 2Réalisation d’une application d’hébergement du service.Gestion des exceptions dans le service.

Page 15: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Hébergement d’un service

Page 16: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Les différents modes d’hébergement Dans IIS (principalement pour les applications web). Dans une application Windows (principalement pour les tests et le

développement). Dans un service Windows (pour des applications intranets et orientée

process)

Page 17: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Hébergement des services La classe ServiceHost est responsable du chargement du service et de la

configuration des points de terminaisons. IIS interagit avec cette classe de manière automatique. Les services et applications Windows doivent implémenter cette classe.

La classe ServiceHost expose des événements et des propiétés permettant de suivre son état.

Page 18: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Les différents états d’un service• Created : L’instance du service à été créer. • Opening : Le service est en cours d’ouverture.• Opened : Le service et est à l’écoute.• Closing : Le service est en cours de fermeture, il fini le traitement des

requêtes en cours.• Closed : Le service est fermé et n’accepte plus de requête.• Faulted : Le service a rencontrer une erreur fatale, est doit être fermé.

Page 19: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Transition d’états Lorsque l’instance de l’objet ServiceHost est créé celui-ci est dans l’état Created.

Dans cet état le service peut être configurer. L’appel de la méthode Open (ou BeginOpen) démarre le service et le passe en état

Opening. Durant l’état Opening le service tente de créer les piles de canaux pour chaque points de

terminaisons définis. Sur une exception se produit le service passe en état Faulted. Si tous les canaux sont ouverts avec succès le service passe dans l’état Opened.

En état Opened le service traite les requêtes des clients et les dirige vers le service. Si une exception est générer a ce stade le service passe en état Faulted.

En état Faulted les service ne traite plus aucune demande de requête client, a ce stade vous pouvez toujours examiner les propriétés du service pour tenter de déterminer la cause de l’exception. Vous devez impérativement faire avorter le service (abord()) pour l’arrêter correctement. Il est possible de revenir en état Openned depuis cet état.

Vous arrêtez un service via l’appel de la méthode Close (ou BeginClose) ou Abord, le service passe alors en état Closing, il n’accepte plus de nouvelle requête entrante, mais termine le traitement de requêtes en cours, sauf dans le cas de la méthode Abord.

Dans l’état Closed, le service est éliminé de l’objet ServiceHost et ses ressources sont libérées. Cela explique qu’il faille rappeler le constructeur du service pour le redémarrer.

Page 20: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Diagramme de transition d’état

Page 21: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Gestion des instances de service• Il est possible de modifier la façon dont le runtime WCF crée une instance

du service, grâce à la propriété InstanceContextMode de l’attribut ServiceBehavior.

• Exemple:[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]Public Class Service: Iservice…

• PerCall :Une instance de service est créée à chaque appel d’une opération.

• PerSession :Une instance de service est démarrée pour chaque session cliente.

• Single : Une instance unique du service est créée pour tous les services et toutes les sessions, elle est créée lors du premier appel.

Page 22: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Traitement des exceptions dans un environnement SOA

Page 23: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Les sources d’exception dans WCFErreur dans le traitement coté serveur.Réseau physique indisponible ou défaillant.Mauvais formatage des messages par le client.Indisponibilité du serveur.Indisponibilité du client.

Page 24: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Spécificité de l’environnement SAOLe Framework .net offre déjà un service de

gestion d’exceptions, mais celui-ci est natif à l’environnement et n’offre aucune ouverture sur des plateformes non Microsoft, ce qui contraire à la notion de SOA.

WCF doit donc être capable de formater les exceptions et de les propager dans un format compréhensible par le plus grand nombre d’environnement.

Page 25: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Utilisation des exceptions SOAP Une partie de la spécification SOAP décrit la mise en forme et le

traitement des erreurs (SOAP Fault) en format SOAP. Cela permet de propager des erreurs entre le service et le client.

WCF propose une classe System.ServiceModel.FaultException qui implémente cette spécification SOAP pour renvoyer des messages d’erreurs aux applications clientes.

Throw new FaultException(« erreur de connexion à la base de données », new FaultCode(« DataBaseAccess »));

Toute les opérations de service sont susceptibles de renvoyer au client un message FaultException.

Générer une exception via FaultException, ne permet pas de typer les exceptions, le client doit analyser la valeur de FaultCode, mais celui-ci peut être n’importe quelle chaine de caractères. Le client n’a donc aucun moyen de connaitre les types d’exceptions pouvant être lever par l’appel à une méthode de service.

L’utilisation de FaultException s’apparente donc à l’utilisation de Exception pour lever une exception.

Page 26: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Exceptions fortement typées WCF implémente un mécanisme de gestion d’exceptions typées. L’utilisation de l’attribut FaultContract, dans la définition des opérations de

contrat, permet de spécifier au client la liste des exceptions susceptibles d’être levées par la méthode de service.

[FaultContract(typeof(DataSourceFaultException))][OperationContract] List<Categorie> GetCategories();

La définition des FaultContract doit donc être sérialisable et le schéma de données doit être inclus dans le contrat de données exposé par le service.

[DataContract]public class DataSourceFaultException{[DataMember]public string Data;

[DataMember]public string Message;

[DataMember]public string Source;}

Les exceptions fortement typées non spécifiées dans les opérations de contrats ne sont pas propagées vers le client.

Page 27: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Gestion des exceptions inattendues Les exceptions inattendues sont des exceptions qui se produisent sur le

serveur et qui ne sont pas catchées. Vous pouvez indiquer à WCF de générer des FaultException lorsqu’une

exception inattendue est levée. Dans le code via l’attribut

[ServiceBehavior(IncludeExceptionDetailInFaults=True)] devant la classe implémentant le service.

Dans le fichier de configuration dans la balise serviceBehavior.

Il est fortement déconseiller d’utilisé l’attribut car cela nécessite la recompilation du code pour modifier le comportement du service.

Page 28: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

Gestion des messages inattendus Les clients WCF communiquent généralement avec le service par

l’intermédiaire d’un objet proxy, généré à partir du contrat de service du service, a un instant T. Avec l’évolution de votre service, il peut arriver, si les proxys des clients ne sont pas mis à jours, qu’une méthode ne soit plus disponible ou que son prototype ait été modifié dans le service.

Dans ce cas le service est incapable de répondre à la demande du client, car elle ne correspond plus à une opération de contrat.

La classe ServiceHost de WCF offre la possibilité de surveiller les demandes clients qui n’aboutissent pas via l’événement UnknownMessageReceived.

Cette événement permet de connaitre les clients non à jours, mais surtout les tentatives frauduleuse d’accès à votre service.

Page 29: Windows Communication foundation. Service Oriented Architecture SOA Les architectures des applications informatiques modernes repose sur le paradigme.

TP 3