Architecture SOA et service WCFArchitecture d’applicationHugo St-Louis
Plan Historique Architecture SOA Service WCF Conclusion
PolymorphismeEncapsulationClasses & héritage
Basée sur les messageSchema & ContratLiaisons via des règles
1980
2000
Basée sur les interfacesChargement dynamiqueNotion de métadonnées
1990
Orienté objet
Orientation Service
Orientation composant
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.
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.
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.
Technologies pour applications distribuées - RMI : équivalent Java du .Net
Remoting
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.
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).
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.
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.
É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é.
É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).
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
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.
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é.
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.
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
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() { ... }}
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; }
}
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.
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
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 }
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
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
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); }
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);
} }
Code du client
EmployeeServiceProxy proxy = new EmployeeServiceProxy(); try { ... proxy.AddEmployee(emp); } catch(FaultException e) { //Will catch all other types of Fault exceptions... }
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>
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.
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
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
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 »
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, …
Un peu d’algo?SI Vous avez des questions ALORS
Posez-les
SINONExécuter l’exercice
Exercice Allons comprendre dans Visual Studio
maintenant
Top Related