Live Meeting Technique N°3 Thomas LEBRUN – MVP WPF/Silverlight Florent SANTIN – MVP Team System Julien CORIOLAND - MSP
DCOM COM+ MSMQ Enterprise Services Web Services XML.NET Remoting … Chaque technologie dispose de son modèle de programmation spécifique
Interopérabilité avec dautres plateformes ASMX Programmation par attribut Enterprise Services Support des protocoles WS-* WSE Programmation orienté message System.Messaging Extensibilité Disponibilité transparente.NET Remoting
Unification des couches de distribution actuelles Idéal pour du mono-machine, du pluri- machines ou à travers Internet Interopérabilité avec des applications tournant sur dautres plateformes Unification Interopérabilité Renforce les « best practices » pour construire des applications distribuées Permet le développement de services faiblement couplés Orienté Service
20,379 lines security 5,988 lines reliable messaging 25,507 lines transactions Total lines 56,296 4,442 lines infrastructure class HelloService { [WebMethod] public String Hello(String Greeting) { X509CertificateCollection collection = new X509CertificateCollection(); IntPtr blob = Marshal.AllocHGlobal(Marshal.SizeOf( typeof(CRYPTOAPI_BLOB))); IntPtr data = (IntPtr)((int)blob + Marshal.SizeOf(typeof(CRYPTOAPI_BLOB))); … SeqAckRange range = new SeqAcknRange(id, low, high ); SeqAckRange[] ranges = { range }; ReliableQueue.ProcessAcks( ranges ); … BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction); … return Greeting; }
10 lines security 1,804 lines reliable messaging 25,507 lines transactions Total lines 27,321 class HelloService { [WebMethod] public String Hello(String Greeting) { foreach ( SecurityToken tok in requestContext.Security.Tokens { X509SecurityToken token = tok as X509SecToken } … SeqAckRange range = new SeqAcknRange(id,low,high ); SeqAckRange[] ranges = { range }; ReliableQueue.ProcessAcks( ranges ); … BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction); … return Greeting; }
1 code + 2 config security 0 code + 1 config reliable messaging 2 code + 1 config transactions Total lines: 3 code + 4 config [ServiceContract] class HelloService { [OperationContract] [PrincipalPermission(SecurityAction.Demand, Role = Adminstrators")] [TransactionFlow(TransactionFlowOption.Mandatory)] [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] String Hello(String Greeting) {return Greeting;} }
Lhôte: Héberge le service Le contrat: Interface qui définit les opérations implémentées par le service Le service: Qui implémente linterface Des points de terminaisons (endpoints): Exposent le service
Héberge le service WCF Utilisation de la classe ServiceHost Peut-être de différent type: Application console Service Windows Site Web Etc.
Définit les opérations qui seront implémentées par le service 2 attributs indispensables: ServiceContract: Indique quune interface est un contrat de service OperationContract: Indique quune méthode est une opération dun contrat de service
Classe qui implémente linterface définissant le contrat de service Définit toute la logique métier du service WCF: Accès à une base de données Accès à un annuaire Active Directory Accès au système de fichiers Etc.
Comporte au moins 3 éléments (ABC): Address: Adresse (emplacement réseau) du service Binding: Protocole de communication (transport, encodage, sécurité, etc.) 9 Bindings proposés en standard: BasicHttpBinding WSHttpBinding NetTcpBinding Contract: Linterface qui représente le contrat de service
WCF: From A To …
WCF propose une approche unifiée du développement dapplications orientées service Peu de code est nécessaire: Presque tout passe par le fichier de configuration Nous navons couvert quune petite partie: WCF est une technologie complexe ! A vous de lapprofondir…