36
Architectur e SOA et service WCF Architecture d’application Hugo St-Louis

Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Embed Size (px)

Citation preview

Page 1: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Architecture SOA et service WCFArchitecture d’applicationHugo St-Louis

Page 2: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Plan Historique Architecture SOA Service WCF Conclusion

Page 4: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Les applications distribués Une application distribuée est une application dont

tous les éléments qui la composent (classes, persistance, logique métier) sont distants géographiquement et communiquent entre eux via des réseaux locaux d’entreprise ou par Internet en utilisant le protocole IP.

L’utilisateur final n’a pas conscience de la nature distribuée de l’applicatif car il utilise une interface – Web ou autre –, dont le but est de fédérer tous les éléments distants pour atteindre l’objectif de l’application tout en masquant tous les mécanismes d’accès.

Page 5: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Technologies pour applications distribuées Le principe même des applications

distribuées n’est pas nouveau. Beaucoup de technologies et de protocoles, souvent incompatibles entre eux ont été mis en œuvre pour permettre aux composants d’une application distribuée, de communiquer entre eux.

Page 6: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Technologies pour applications distribuées

COM (Component Object Model) : technologie de communication inter application propre à l’environnement Windows. Cette technologie ne permet pas de construire à proprement parler des applications distribuées mais sert d’interface pour faire communiquer des applications sur une même machine. (les différents logiciels de la suite bureautique Microsoft Office par exemple).

DCOM (Distributed Component Object Model) : version Distribuée de COM. Corba:  Common Object Request Broker Architecture, est une 

architecture logicielle, pour le développement de composants et d’Object Request Broker ou ORB. Ces composants, qui sont assemblés afin de construire des applications complètes, peuvent être écrits dans des langages de programmation distincts, être exécutés dans des processus séparés, voire être déployés sur des machines distinctes.

.Net Remoting : technologie de communication inter application incluse dans le Framework .Net 2.0, basée sur un modèle client/serveur permettant la communication et la transmission d’objets entre les applications.

Page 7: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Technologies pour applications distribuées - RMI : équivalent Java du .Net

Remoting

Page 8: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Termes que vous avez peut-être déjà entendu parlé - Services Web : technologie permettant de faire communiquer des

composants entre eux, indépendamment de la plateforme sur laquelle ils sont hébergés, en utilisant un protocole de communication et un format de fichier unique et standardisé basé sur du XML. Contrairement aux technologies évoquées précédemment, grâce à la nature standardisée des échanges, il devient tout à fait possible de faire communiquer des modules hébergés sous Windows avec d’autres hébergés sous Linux ou Unix. C’est cette interopérabilité associée à une relative facilité de mise en oeuvre, qui fait que les services web sont aujourd’hui une des technologies les plus utilisées, pour construire des applications distribuées.

Middleware: est un logiciel tiers qui crée un réseau d'échange d'informations entre différentes applications informatiques. Le réseau est mis en œuvre par l'utilisation d'une même technique d'échange d'informations dans toutes les applications impliquées1 à l'aide de composants logiciels.

Page 9: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

La naissance du SOA Malgré le fait que des technologies comme

DCOM, RMI ou .Net Remoting permettent de transporter les objets et donc de dépasser les frontières de la machine grâce au réseau, on s’est souvent heurté à des problèmes de compatibilité entre plateformes, d’où le besoin d’une standardisation et la mise en commun des protocoles (SOAP, XML, …). De là est née la notion d’architecture orientée services (SOA).

Page 10: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Les 4 grands principes du SOA

La définition du service est explicite : Un service est une classe exposée à travers les réseaux. Le but

de ce service est de fournir une prestation bien définie (exemple : fournir la date et l’heure dans un pays donné). Les détails d’un service (la manière dont il doit être appelé, les paramètres à spécifier…) sont contenus dans un document standardisé, qui fait office de contrat entre le client et le serveur.

Les services sont autonomes : Un service se doit d’être totalement autonome. On doit pouvoir

le remplacer ou le déplacer sans que cela affecte d’autres services. Un service implémente ses propres composants et ses propres méthodes d’accès aux données, il ne doit dépendre d’aucun élément externe.

Page 11: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Les 4 grands principes du SOA Les clients et les services ne partagent que des

contrats : On a vu dans le premier principe du SOA, que les

services exposent des contrats pour exposer aux clients leurs fonctionnalités et comment les utiliser. Cette interface est la seule chose que le serveur partage avec le client. Comme en programmation orientée objet, le client n’a pas a connaitre comment procède le service pour arriver à ses fins. En aucun cas, le service et le client ne doivent partager du code.

La compatibilité est basée sur les règles : L’accès à un service devrait être sécurisé, en utilisant un

nom d’utilisateur et un mot de passe par exemple.

Page 12: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Éléments du SOA Il n'existe pas à proprement parler de

spécifications officielles d'une architecture SOA, néanmoins les principales notions fédératrices que l'on retrouve dans une telle architecture sont les suivantes : La notion de service, c'est-à-dire une fonction

encapsulée dans un composant que l'on peut interroger à l'aide d'une requête composée d'un ou plusieurs paramètres et fournissant une ou plusieurs réponses. Idéalement chaque service doit être indépendant des autres afin de garantir sa réutilisabilité et son interopérabilité.

Page 13: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Éléments du SOA La description du service, consistant à décrire les paramètres

d'entrée du service et le format et le type des données retournées. Le principal format de description de services est WSDL (Web Services Description Language), normalisé par le W3C.

La publication (en anglais advertising) et la découverte (discovery) des services. La publication consiste à publier dans un registre (en anglais registry ou repository) les services disponibles aux utilisateurs, tandis que la notion de découverte recouvre la possibilité de rechercher un service parmi ceux qui ont été publiés. Le principal standard utilisé est UDDI (Universal Description Discovery and Integration), normalisé par l'OASIS.

L'invocation, représentant la connexion et l'interaction du client avec le service. Le principal protocole utilisé pour l'invocation de services est SOAP (Simple Object Access Protocol).

Page 14: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Standards de l’architectureLes standards sont un élément clé d’une SOA, ils assurent l’interopérabilité

Transporte

SOAPW3C

Simple ObjectAccess Protocol

Spec pour Repository/Registry

UDDIMicrosoft, IBM, HP

Universal DescriptionDiscovery and Integration

WSDLW3C

Web ServicesDescription Language

Décrit le contrat

Les trois piliers des Services Web

Page 15: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

WCF SOA est une architecture

Ce n’est pas un ou des produits Par conséquent, Microsoft se devait de

donner son interprétation de la solution. Ils ont donc créé WCF.

Page 16: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

WCF WCF est une technologie qui permet de faciliter la

mise en place des applications distribuées en servant de socle commun aux architectures orientées services (SOA : Service Oriented Architecture). WCF se veut être un modèle uniforme de distribution de services :

- Faiblement couplé pour plus de souplesse ; - Adapté à toutes situations et besoins de

communication : Disponibilité ; Interopérabilité ; Sécurité.

Page 17: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Les bases fondamentales de WCF

Première étape : définition du contrat. On définit les signatures des méthodes composant notre service WCF, et du format des données à échanger.

Seconde étape : implémentation du contrat. On implémente les services.

Troisième étape : configuration du service. On définit les endPoints, autrement dit les points d’accès au service.

Quatrième étape : hébergement des services dans une application .NET.

Page 18: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Contrats

Contrats de ServiceDéfinit les opérations, communications, comportements.

Contrats de DonnéeDéfinit les types de données et de paramètres.

Contrats d’erreur (Fault)Définit les types d’erreur

Contrats de Message Définit les formats de message

Contrats de ServiceDéfinit les opérations, communications, comportements.

Contrats de DonnéeDéfinit les types de données et de paramètres.

Contrats d’erreur (Fault)Définit les types d’erreur

Contrats de Message Définit les formats de message

Page 19: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Contrat de services

[ServiceContract] – Ensemble d’opérations[OperationContract] – Méthode unique[ServiceContract] – Ensemble d’opérations[OperationContract] – Méthode unique

[ServiceContract]public interface IService{ [OperationContract] string GetData(int value);}

public class ConcreteService : IService{ public string GetData(int value) { ... }

public string OtherMethod() { ... }}

Page 20: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Contrat de données

[DataContract] – Un type = un data contrat[DataMember] – Membres du contrat

[DataContract] – Un type = un data contrat[DataMember] – Membres du contrat

[DataContract]public class CustomType{ [DataMember] public bool MyFlag { get; set; }

[DataMember] public string MyString { get; set; }

}

Page 21: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Transfert de données

Sur un réseau les données sont sérialisées.Le Framework .Net contient déjà un attribut de sérialisationSi vous voulez utiliser des type de données pour les transféré, assurez-vous qu’elle soit sérialisable.

Sur un réseau les données sont sérialisées.Le Framework .Net contient déjà un attribut de sérialisationSi vous voulez utiliser des type de données pour les transféré, assurez-vous qu’elle soit sérialisable.

Page 22: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Contrat de données

DataContract: céer spécifiquement pour WCF

Les attributs contiennent les propriétés nom et namespace

DataMember: spécifie quelle propriété fera partie du contrat

EmitDefaultValue, IsRequired, Name, Order properties

DataContract: céer spécifiquement pour WCF

Les attributs contiennent les propriétés nom et namespace

DataMember: spécifie quelle propriété fera partie du contrat

EmitDefaultValue, IsRequired, Name, Order properties

Page 23: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Contrat de données

[DataContract(Name="Contact")] public class Person { [DataMember(IsRequired=true, Name="SurName")] public string LastName; public string FirstName; //Not included in contract }

Page 24: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Erreurs SOAP

Trois types d’exceptions possibles:

Erreur de CommunicationErreur inattendue du serviceErreur contextuelle du service

Les exceptions .NET sont spécifique à cette technologieToutes les exceptions sur le réseaux seront du type SOAP Faults

Trois types d’exceptions possibles:

Erreur de CommunicationErreur inattendue du serviceErreur contextuelle du service

Les exceptions .NET sont spécifique à cette technologieToutes les exceptions sur le réseaux seront du type SOAP Faults

Page 25: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Erreurs

Pour WCF, les SOAP faults sont des objets de type FaultException Les services doivent émettre des FaultExceptions et non des Exceptions

Pour WCF, les SOAP faults sont des objets de type FaultException Les services doivent émettre des FaultExceptions et non des Exceptions

Page 26: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Contrats d’erreur

Spécifie le type des Exceptions, émis par une opérationSpécifie le type des Exceptions, émis par une opération

[ServiceContract] public interface IEmployeeService { [OperationContract] [FaultContract(typeof(FaultException))] public void AddEmployee(Employee e); }

Page 27: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Code du serveur

Toujours émettre des Exceptions de type Fault ExceptionsToujours émettre des Exceptions de type Fault Exceptions

public class EmployeeService { public void AddEmployee(Employee e) { ... throw new FaultException (errorMsg);

} }

Page 28: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Code du client

EmployeeServiceProxy proxy = new EmployeeServiceProxy(); try { ... proxy.AddEmployee(emp); } catch(FaultException e) { //Will catch all other types of Fault exceptions... }

Page 29: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Exceptions durant le développement

<system.serviceModel> <services> <service name = "EmployeeService" behaviorConfiguration = "Debugging"> ... </service> </services> <behaviors> <serviceBehaviors> <behavior name = "Debugging"> <serviceDebug includeExceptionDetailInFaults = "true"/> </behavior> </serviceBehaviors> </behaviors></system.serviceModel>

Page 30: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Points de terminaison (end points)

WCF repose sur trois éléments : Address

Où se trouve le service ?adresse à laquelle le client doit se connecter pour utiliser le service.

Binding Comment parler au service ?

protocole à utiliser par le client pour communiquer avec le service.

WCF repose sur trois éléments : Address

Où se trouve le service ?adresse à laquelle le client doit se connecter pour utiliser le service.

Binding Comment parler au service ?

protocole à utiliser par le client pour communiquer avec le service.

Page 31: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Adresse

Combinaison du transport, nom du server, port & path

Le transport est défini par le type de bindingExamples

http://localhost:8001net.tcp://localhost:8002/MyServicenet.pipe://localhost/MyPipenet.msmq://localhost/private/MyServicenet.msmq://localhost/MyService

Combinaison du transport, nom du server, port & path

Le transport est défini par le type de bindingExamples

http://localhost:8001net.tcp://localhost:8002/MyServicenet.pipe://localhost/MyPipenet.msmq://localhost/private/MyServicenet.msmq://localhost/MyService

Page 32: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Binding

TransportHTTPTCPMSMQ

Formats d’encodage des messages Plain textBinary Message Transmission Optimization Mechanism (MTOM)

Communication SécuriséesNo security Transport security Message securityAuthenticating and authorizing callers

TransportHTTPTCPMSMQ

Formats d’encodage des messages Plain textBinary Message Transmission Optimization Mechanism (MTOM)

Communication SécuriséesNo security Transport security Message securityAuthenticating and authorizing callers

Page 33: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Adresse et binding

La configuration du fichier de configuration sera couverte plus en détail dans le cours de « Composants et Services »

La configuration du fichier de configuration sera couverte plus en détail dans le cours de « Composants et Services »

Page 34: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Hébergements possibles

IISHTTP seulement

WAS (Windows Activation Service)

Utilisable avec n’importe quel transport Vista and Windows Server 2008

Self hostingUtilisable avec n’importe quel transportHébergée dans Console, WinForms, …

IISHTTP seulement

WAS (Windows Activation Service)

Utilisable avec n’importe quel transport Vista and Windows Server 2008

Self hostingUtilisable avec n’importe quel transportHébergée dans Console, WinForms, …

Page 35: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Un peu d’algo?SI Vous avez des questions ALORS

Posez-les

SINONExécuter l’exercice

Page 36: Architecture SOA et service WCF Architecture dapplication Hugo St-Louis

Exercice Allons comprendre dans Visual Studio

maintenant