live meeting technique n°3 thomas lebrun – mvp wpf/silverlight florent santin – mvp team system...
TRANSCRIPT
Présentation de Windows Communication
FoundationLive Meeting Technique N°3
Thomas LEBRUN – MVP WPF/SilverlightFlorent 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
Historique de la communication
Modèle de programmation unifiée
Interopérabilitéavec d’autresplateformes
ASMX
Programmationpar
attribut
Enterprise Services
Support desprotocoles
WS-*
WSE
Programmationorienté
message
System.Messaging
ExtensibilitéDisponibilité transparente
.NET Remoting
Les avantages de WCF• 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 d’autres 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
Productivité: Visual Studio 2003
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; }}
Productivité: Visual Studio 2003 & WSE
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; }}
Productivité: Visual Studio & WCF
1 code + 2 configsecurity
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;}}
<bindings> <wsHttpBinding> <binding name="Binding1" transactionFlow="true"> <security mode="Message"> <message clientCredentialType="Windows“/> </security> <reliableSession enabled="true" /> </binding> </wsHttpBinding></bindings>
L’hô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 l’interface
Des points de terminaisons (endpoints):◦ Exposent le service
Composition d’un service WCF
Héberge le service WCF◦ Utilisation de la classe ServiceHost
Peut-être de différent type:◦ Application console◦ Service Windows◦ Site Web◦ Etc.
L’hôte
Définit les opérations qui seront implémentées par le service
2 attributs indispensables:◦ ServiceContract: Indique qu’une interface est un
contrat de service◦ OperationContract: Indique qu’une méthode est
une opération d’un contrat de service
Le contrat
Classe qui implémente l’interface 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.
Le service
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: L’interface qui représente le contrat de service
Les points de terminaison
DémoWCF: From A To …
WCF propose une approche unifiée du développement d’applications orientées service
Peu de code est nécessaire:◦ Presque tout passe par le fichier de configuration
Nous n’avons couvert qu’une petite partie:◦ WCF est une technologie complexe !◦ A vous de l’approfondir…
Conclusions