Windows Communication Foundation Agenda Architettura .NET
Transcription
Windows Communication Foundation Agenda Architettura .NET
Agenda Windows Communication Foundation Concetti e Archittetture Pietro Brambati Pietro.brambati@microsoft.com Blog: http://blogs.msdn.com/pietrobr Introduzione al .Net Framework 3.0 I Web Service (WS) un semplice esempio Windows Communication Foundation Obbiettivi e architettura Contratto Binding e Behaviour Sicurezza Developer Evangelist Microsoft Certified Application Developer Microsoft Certified Professional Developer | Web Developer Architettura .NET Framework 3.0 C++ C# J# « Common Language Specification WPF WCF Web Services ASP.NET INTRODUZIONE AL .NET FRAMEWORK 3.0 WF User Interface Data and XML Base Class Library Common Language Runtime WCS Visual Studio 2005 VB Indipendenza dalla piattaforma e dal linguaggio 1(7qXQ¶LPSOHPHQWD]LRQHGL&/, Common Language Infrastructure CLI è uno standard ECMA, definito con C# ECMA-334, ECMA-335 Esistono già altre implementazioni di CLI: SSCLI (Microsoft, per Windows, FreeBSD e Macintosh) Mono (per Linux) DotGNU Intel OCL (Open CLI Library) « .Net Framework 3.0 in pillole Nuove interfacce utente Windows Presentation Foundation SOA Windows Communication Foundation (WCF) Workflow aziendali Windows Workflow Foundation (WF) Identità digitale Windows CardSpace (WCS) I Web Services in pillole Dal punto di vista logico: Sono basati su standard aperti e condivisi tra molte aziende Espongono funzionalità come servizio Possono essere invocati in modo indipendente dai Sistemi operativi, Piattaforme e Linguaggi ³Una funzione su HTTP´ Implementazione Microsoft: Sono parte di ASP.NET (file in formato .asmx) .Net Framework 2.0 WEB SERVICE UN SEMPLICE ESEMPIO Devono essere accedibili da una URL su Internet Information Service (IIS) Un Web Service non ha Interfaccia Utente (UI) Il web browser non è il client di riferimento Architettura di base Processo Application Domain Creare un semplice Web Service IIS HTTP/S Application Domain Proxy Metodo WinForm o WebForm WS (asmx) [WebMethod(Description="Obtains a nice welcome message")] public string HelloWorld() { return "Hello World"; } Con Visual Studio 2005 bastano poche righe di codice ed un attributo Evoluzione delle architetture distribuite Mainframe Business Logic DBMS T PCs Client/Server DBMS Business Logic Business Logic GUI Web WCF Multi-Tier DBMS Business Logic Browser Web Services Clients ServiceOriented DBMS Business Logic Business Logic WCF Obbettivi WCF: Scenari architetturali Computer Windows Fornire un modello unificato di programmazione per diverse tecnologie e API Processo Applicazione Interoperabilità tra piattaforme .NET Remoting Processo Comunicazione tra processi ASP.Net Web Service Applicazione WCF WCF Comunicazione efficiente tra applicazioni .Net Enterprice Services (successore di COM+) Servizi di Transazionalità Comunicazione Comunicazione tra processi remoti tra piattaforme eterogenee Web Services Enhancements (WSE) WS-* Processo Microsoft Message Queuing (MSMQ) Per applicazioni asincrone, non sempre connesse Applicazione Implementa le best practices per costruire applicazioni distribuite basate sui principi della service orientation Interoperabile con applicazioni di altre piattaforme con ampio supporto per WS*-Architecture WS-*: Architettura e protocolli Security Trust Secure Conversation Reliability Reliable Messaging « Messaging (SOAP, Addressing, MTOM) Piattaforme NON- Windows Il Message Bus e O¶LQWHURSHUDELOLWj Applicazioni e Infrastruttura Transactions Atomic Transaction Coordination Business Activity Computer Windows Application Data Contract (WSDL, Policy, Discovery, MEX) Security Management Business Process Metadata Connected Applications WCF Message Contract Service Contracts Contract Metadata Behavior Instance Behavior Service Runtime Error Behavior Transaction Behavior Throttling Behavior Activation Behavior SOAP Security Channel HTTP Channel SOAP Reliability Channel TCP Channel App App WSE BizTalk Adapter Altri Stack Inspection Facilities Concurrency Behavior WCF Messaging UDP Channel X-Proc Channel Cmd/Control Facilities Text/XML Encoder Queue Channel Binary Encoder NT Service COM+ Activation and Hosting Foundation WAS Avalon *.EXE WS-Federation WS-Secure Conversation Infrastructure WS-Management and Profiles (XML, XSD, XPath) Devices Profile Metadata Network Assurances WS-Business Activity WS-Atomic Transaction WS-Trust XML App Policy and Binding g WS-Security WS-Reliable Messaging SOAP WS-Addressing UDDI WS-Coordination WS-* Protocols WS-Policy Messaging HTTP TCP WS-Metadata Exchange SMTP « Trasporto XML Schema Foundation XML Infoset XML 1.0 WSDL MTOM XML Namespaces MIME SOAP / HTTP Endpoint WCF Architettura Applicazioni « Error Behavior Metadata Behavior Instance Behavior Throttling Behavior Transaction Behavior Type Integ. Behavior Concurrency Service Model Messaging HTTP Channel « Hosting Environments Secure Channel « WAS ASP.NET WPF Text/XML Encoder Queue Channel WinForm Service Endpoint Behavior Reliable Channel TCP Channel Caller Message Endpoint Endpoint Binary Encoder NT Service COM+ Address, Binding, Contract Metadata Metadata Caller Service C B A Message A B C A B C Address Binding Contract (Where) (How) (What) Caller Service C B A Message A B C A B C Behaviors Runtime Metadata Caller Service Bv Bv Metadata C B A Message Caller A B C Bv Bv A B C Bv Bv Service C B A Message Proxy Address, Contract, Binding Client Code Service Code Contract Proxy Binding Dispatcher Protocol #1 Protocol #n Protocol #n Encoder Encoder Address Message B C Bv A B C Bv ServiceHost<T>() WCF: il contratto Service Contracts Descrivono le operazioni di un servizio Mappano i tipi CLR con il WSDL Nel body del messaggio SOAP Data Contracts Binding Protocol #1 Transport A Transport Descrivono la struttura dei dati Mappano I tipi CLR con XSD Nel body del messaggio SOAP Message Contracts Definiscono la struttura del messagio Mappano I tipi CLR ai messaggi SOAP Puoi inserire elementi nell¶KHDGHU62$3 Modellare il Request/Reply ³2Qthe ZLUH´tutto è asincrono La correlazione tra la risposta e la richiesta può essere modellata in due modi Synchronous (bloccante) method call [OperationContract] MathResponse DoMsgMath(MathRequest msg); Utilizzando un pattern asincrono [OperationContract(AsyncPattern=true)] IAsyncResult BeginDoMsgMath(MathRequest msg, AsyncCallback cb, object state); Service Contract: OneWay [ServiceContract] public interface IOneWayCalculator { [OperationContract(IsOneWay=true)] void DoMath(MathRequest request); } MathResponse EndDoMsgMath(IAsyncResult call); /¶LPSOHPHQWD]LRQH del client e del server possono essere diverse! Service Contract: Duplex Dentro i Binding Binding [ServiceContract(SessionMode=SessionMode.Required, CallbackContract=typeof(ICalculatorResults)] public interface ICalculatorProblems { [OperationContract(IsOneWay=true)] void DoMath(MathRequest request); } public interface ICalculatorResults { [OperationContract(IsOneWay=true)] void DisplayResults(MathResponse response); } HTTP Transport Text Security Encoders Encoders RM TX Protocol Protocol TCP HTTP Text Security RM MSMQ IPC Binary TX .NET Custom Custom Custom Binding: Caratteristiche Binding in Config file Trasporto TCP, HTTP, Named Pipes, Peer Channel, MSMQ, Custom Encoding <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service serviceType="CalculatorService"> Text, Binary, MTOM, Custom Sicurezza End-to-End Claims Based Trasporto, Messaggio Confidentiality, Integrity, AuthN, AuthZ, Federation & CardSpace X.509, Username/Password, Kerberos, SAML, Custom <endpoint address="Calculator" bindingSectionName="basicProfileBinding" contractType="ICalculator" /> End-to-End Reliable Messaging Transport-Independent QoS (In-Order / Exactly-Once) Volatile e Durable Queues per Availability Transazioni WS-AtomicTransaction per coordinare transazioni su sistemi eterogenei Two-Phase Commit protocol </service> </services> </system.serviceModel> </configuration> OleTransaction per sistemi WCF Binding in WCF Custom Bindings Binding Interop Security Session TX Duplex BasicHttpBinding BP 1.1 N, T N N n/a WSHttpBinding WS M, T N, T, RS N, Sì n/a WSDualHttpBinding WS M RS N, Sì Sì WSFederationBinding Federation M N, RS N, Sì No NetTcpBinding .NET T, M T ,RS N, Sì Sì NetNamedPipeBinding .NET T T, N N, Sì Sì NetPeerTcpBinding Peer T N N Sì NetMsmqBinding .NET T, M N N, Sì No MsmqIntegrationBinding MSMQ T N N, Sì n/a N = None | T = Transport | M = Message | B = Both | RS = Reliable Sessions <bindings> <customBinding> <customBinding> <binding name="ReliableTCP"> <reliableSession LQDFWLYLW\7LPHRXW ´ ordered="true"/> <binaryMessageEncoding/> <tcpTransport transferMode="Buffered"/> </binding> </customBinding> </customBinding> </bindings> Behaviour Modificano il comportamento a run-time del servizio Partecipano alla creazione del canale e ne può modificare il comportamento Per estendere WCF Behaviour: diversi tipi Service (IServiceBehaviour) (e.g Tracing degli Endpoint) Contract (IContractBehaviour) Operation (IOperationBehavior) EndPoint (IEndpointBehavior) WCF e la Sicurezza Concetti Principali Credenziali Informazioni scambiate da tra XQ¶entità e O¶DOWUD Usata per stabilire O¶LGHQWLWj del mittente Claims Info relative ad XQ¶entità che possono essere derivate dalle credenziali Possono essere usati per access control, personalizzazione, auditing, etc. Security Mode Utilizzato per specificare O¶DXWHQWLFD]LRQH ed i meccanismi di sicurezza Message, Transport o entrambi Sicurezza: obbiettivi Autenticazione Riconoscere mittente/destinatario Autorizzazione Verifico i permessi in base alle credenziali Confidenzialità I messaggi devono essere visibili solo al mittente e al destinatario Integrità Nessuno deve poter manomettere i messaggi WCF Scenari di sicurezza a livello di trasporto ³7UDQVSRUWlevel VHFXULW\´ Confidenzialità Integrità Autenticazione Vantaggi Compatibilità con sistemi esistenti Veloce; implementabile con hardware Svantaggi Hop-to-hop Set limitato di credenziali e claims Dipendenza dal trasporto! Non è un approccio Serviced-Oriented WCF Scenari di sicurezza WCF Scenari di sicurezza Transport Security Transport Security w/ Client Certificate <services> <service name="Samples.Service"> HQGSRLQWDGGUHVV ´https://MyServer:81/svc" ELQGLQJ ´wsHttpBinding" bindingConfiguration ´TransportSec" contract="Samples.IShoppingCart"/> </service> </services> <services> <service name="Samples.Service"> HQGSRLQWDGGUHVV ´https://localhost:6060/service" ELQGLQJ ´wsHttpBinding" bindingConfiguration="Binding1" contract="Samples.IShoppingCart"/> </service> </services> <bindings> <wsHttpBinding> <binding name="TransportSec´! VHFXULW\PRGH ´Transportµ! </binding> </wsHttpBinding> </bindings> WCF Scenari di sicurezza Transport Security w/ Client Certificate Client Code proxy.ClientCredentials.ClientCertificate.SetCertificate( ´&1 $OLFHµStoreLocation.CurrentUser, StoreName.My); Config <client> <endpoint address="https://localhost/CartService/service.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IShoppingCart" contract="IShoppingCart" behaviorConfiguration="ClientCertificate"/> </client> <behaviors> <endpointBehaviors> <behavior name="ClientCertificate"> <clientCredentials> <clientCertificate findValue="CN=Alice" storeLocation="CurrentUser" storeName="My"/> </clientCredentials> </behavior> </endpointBehaviors> </behaviors> <bindings> <wsHttpBinding> <binding name="Binding1´! VHFXULW\PRGH ´7UDQVSRUWµ! <transport clientCredentialType ´Certificateµ! </security> </binding> </wsHttpBinding> </bindings> WCF Scenari di sicurezza Transport Security con Windows AuthN <services> <service name="Samples.Service"> HQGSRLQWDGGUHVV ´KWWSVORFDOKRVWVHUYLFH ELQGLQJ ´wsHttpBinding" bindingConfiguration="Binding1" contract="Samples.IShoppingCart"/> </service> </services> <bindings> <wsHttpBinding> ELQGLQJQDPH %LQGLQJ´! VHFXULW\PRGH ´7UDQVSRUWµ! <transport clientCredentialType ´:LQGRZVµ! </security> </binding> </wsHttpBinding> </bindings> WCF Scenari di sicurezza WS-Security Sicurezza basata sul messaggio Sicurezza applicata direttamente al messaggio Confidenzialità Integrità Autenticazione Vantaggi End-to-end security Supporto per molti tipi di credenziali e claims Indipendente dal trasporto Estendibile Applicabile in modo selettivo sul contenuto del messaggio WS-Trust 'HILQLVFHLPHFFDQLVPL³62$3based´SHU ottenere relazioni fidate Richiedendo e restituendo security tokens. Sfrutta un meccanismo di scambio di token Ci sono diversi modelli di trusting Tutti si basano sul concetto che ci deve essere qualcuno che garantisce per un altro Spesso sarà il client a richiedere che qualcuno lo presenti al server ,OFOLHQWGRYUjDVXDYROWDUHQGHUVL³FUHGLELOH´ (tramite un Token) al Trust Server Servizi offerti Autenticazione Firma digitale Encryption Non ripudio Evita i replay-attack Specifica come inserire i security token (e.g certificato X509 nel messaggio SOAP WCF Scenari di sicurezza Message Security <services> <service name="Samples.Service"> HQGSRLQWDGGUHVV ´KWWSORFDOKRVWVHUYLFH ELQGLQJ ´wsHttpBinding" bindingConfiguration="Binding1" contract="Samples.IShoppingCart"/> </service> </services> <bindings> <wsHttpBinding> ELQGLQJQDPH %LQGLQJ´! VHFXULW\PRGH ´0HVVDJHµ! </binding> </wsHttpBinding> </bindings> WCF Scenari di sicurezza Credenziali Federate WCF Scenari di sicurezza Credenziali Federate T Security Token Scopo: Facilitare le trust relationships tra aziende Fornite da terze parti Supporto di credenziali arbitrarie Benefici: STS STS Security Token Service RST Request Security Token RSTR Request Security Token Response Cred RST 1 2 RSTR T Delega del controllo del claim a specifiche applicazioni 3 T Client Riepilogo .Net Framework 3.0 va oltre i WS WCF è il futuro del distributed computing WCF fornisce modello di programmazione per la comunicazione applicativa unificato, semplice e potente Architettura flessibile, sicura ed estendibile Semplicità nella configurazione Service Link utili Learn The ABCs Of Programming Windows Communication Foundation http://msdn.microsoft.com/msdnmag/issues/06/02/Windows CommunicationFoundation/ Introduction to Reliable Messaging with the Windows Communication Foundation http://msdn2.microsoft.com/en-us/library/aa480191.aspx Reliable Session Overview http://msdn2.microsoft.com/en-us/library/a7fc4146-ee2c444c-82d4-ef6faffccc2d.aspx Secure, Reliable, Transacted Web Services: Architecture and Composition http://msdn2.microsoft.com/enus/library/ms996535.aspx © 2003-2008 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.