Introduzione a Windows Communication Foundation Pierre Greborio PEWay Microsoft MVP – Solutions...

Post on 01-May-2015

216 views 0 download

Transcript of Introduzione a Windows Communication Foundation Pierre Greborio PEWay Microsoft MVP – Solutions...

Introduzione a Windows Introduzione a Windows Communication Communication

FoundationFoundation

Pierre GreborioPierre GreborioPEWayPEWay

Microsoft MVP – Solutions ArchitectMicrosoft MVP – Solutions Architect

NotaNota

Tutto il codice che vediamo in Tutto il codice che vediamo in questa sessione è basato su WinFX questa sessione è basato su WinFX CTP di dicembre 2005CTP di dicembre 2005

WinFXWinFX

Che cos’è WCF ?Che cos’è WCF ?

E’ framework che permette di E’ framework che permette di sviluppare velocemente sviluppare velocemente applicazioni SOAapplicazioni SOA

Nasce dall’esperienza di:Nasce dall’esperienza di: ASP.NET Web ServicesASP.NET Web Services Web Services Enhancement (WSE)Web Services Enhancement (WSE) .NET Remoting.NET Remoting Enterprise Services (COM+)Enterprise Services (COM+) MSMQ (System.Messaging)MSMQ (System.Messaging)

Service modelService model

Client Service

EndpointEndpoint

Client Service

Endpoint

Endpoint

Endpoint

Endpoint Bv

Bv

Bv

““ABC”ABC”

Client Service

A B C A B C

A B C

A B C

Address Binding Contract

Bv

Bv

Bv

Behavior

Bv

Echo ServiceEcho Service

AddressAddress

E’ l’indirizzo del servizioE’ l’indirizzo del servizio E’ un’istanza di EndpointAddressE’ un’istanza di EndpointAddress Contiene:Contiene:

UriUri Identity (opzionale)Identity (opzionale) Headers (opzionale)Headers (opzionale)

BindingBinding

Contiene le informazioni di come il Contiene le informazioni di come il servizio cominichi con il mondoservizio cominichi con il mondo

Si occupa di transazioni, gestione Si occupa di transazioni, gestione della sessione, sicurezza,...della sessione, sicurezza,...

Esistono 8 tipi di binding predefinitiEsistono 8 tipi di binding predefiniti E’ possibile creare custom bindingE’ possibile creare custom binding

Binding predefinitiBinding predefinitiYes

ContractContract

Specifica che cosa il servizio Specifica che cosa il servizio comunica con il mondocomunica con il mondo

Vi sono tre tipi di contratto:Vi sono tre tipi di contratto: Service contract (ie. WSDL)Service contract (ie. WSDL) Message contract (ie. SOAP) Message contract (ie. SOAP) Data contract (ie. Xml Schema)Data contract (ie. Xml Schema)

Contract DuplexContract Duplex

ArchitetturaArchitettura

Applicazione

Service Model

Messaging

Architettura adattativaArchitettura adattativa

Codice

Transaction Behavior

CLR Type Integration

Instancing Behavior

SecurityChannel

TCP Transport

SecurityChannel

TCP Transport

Transaction Behavior

CLR Type Integration

Outgoing

Incoming

Service Model Layer Messaging Layer

Track BehaviorTrack Behavior

HostingHosting

Un servizio WCF può “vivere” in Un servizio WCF può “vivere” in differenti tipi di hostdifferenti tipi di host IIS (solo protocollo HTTP)IIS (solo protocollo HTTP) Windows application (Windows service, Windows application (Windows service,

console application, windows console application, windows application)application)

Web Application Service (IIS 7)Web Application Service (IIS 7)

SicurezzaSicurezza

WCF gestisce sia la sicurezza lato WCF gestisce sia la sicurezza lato server che lato clientserver che lato client

La gestione della sicurezza riguarda La gestione della sicurezza riguarda 5 temi:5 temi: Transfer securityTransfer security

Firma digitaleFirma digitale CrittorafiaCrittorafia AutenticazioneAutenticazione

Access controlAccess control AutorizzazioneAutorizzazione

AuditingAuditing

Transfer securityTransfer security

La sicurezza è gestibile a due livelli:La sicurezza è gestibile a due livelli: Transport (es. HTTPs)Transport (es. HTTPs) Message (es. WS-Security)Message (es. WS-Security)

Trasport mode è adatto per Trasport mode è adatto per l’interoperabilità ma è applicabile l’interoperabilità ma è applicabile solo point-to-pointsolo point-to-point

Message mode è end-to-end ma è Message mode è end-to-end ma è meno efficientemeno efficiente

E’ possibile applicarli entrambeE’ possibile applicarli entrambe

AutenticazioneAutenticazione

E’ basato sul concetto di E’ basato sul concetto di credenzialecredenziale

La credenziale è sia il dato che la La credenziale è sia il dato che la prova di possesso.prova di possesso.

Le credenziali si possono usare a Le credenziali si possono usare a due livelli:due livelli: Trasporto (None, Basic, Digest, Ntlm, Trasporto (None, Basic, Digest, Ntlm,

Windows, Certificate)Windows, Certificate) Messaggio (None, Windows, Messaggio (None, Windows,

Username, Certificate, Infocard)Username, Certificate, Infocard)

Who isWho is

AutorizzazioneAutorizzazione

L’autorizzazione è il processo di L’autorizzazione è il processo di verifica se un utente ha il permesso verifica se un utente ha il permesso di accedere ad una risorsadi accedere ad una risorsa

Si basa su attributi:Si basa su attributi: PrincipalPermissionAttributePrincipalPermissionAttribute

AuditingAuditing

WCF permette di loggare gli eventi WCF permette di loggare gli eventi legati alla sicurezza (successo e/o legati alla sicurezza (successo e/o fallimento)fallimento)

L’auditing avviene a due livelli:L’auditing avviene a due livelli: Servizio - durante l’autenticazione Servizio - durante l’autenticazione

dell’utentedell’utente Messaggio – durante la verifica della Messaggio – durante la verifica della

firma digitale e crittografiafirma digitale e crittografia

Who isWho is

AffidabilitàAffidabilità

Affidabilità significa:Affidabilità significa: Non perdo i messaggi per strada !Non perdo i messaggi per strada ! Viene rispettato l’ordine di invio.Viene rispettato l’ordine di invio. Non dipendo da problemi “esterni”Non dipendo da problemi “esterni”

WCF propone tre soluzioni:WCF propone tre soluzioni: CodeCode Reliable sessionReliable session TransazioniTransazioni

CodeCode

Si appoggia a MSMQSi appoggia a MSMQ L’operazione deve essere one-wayL’operazione deve essere one-way Disponibile anche senza connettivitàDisponibile anche senza connettività

MSMQMSMQ

Image TransferImage Transfer

Reliable sessionReliable session

Garantisce che i messaggi arrivino tutti Garantisce che i messaggi arrivino tutti a destinazionea destinazione

E’ possibile pretendere che l’ordine di E’ possibile pretendere che l’ordine di arrivo corrsisponda all’ordine di arrivo corrsisponda all’ordine di partenzapartenza<bindings> <wsHttpBinding> <binding name="Binding1">

<reliableSession enabled="true" ordered="true" />

</binding> </wsHttpBinding></bindings>

TransazioniTransazioni

Due modelli a confrontoDue modelli a confronto Transazioni atomicheTransazioni atomiche

Più semplicePiù semplice Fortemente accoppiatoFortemente accoppiato

CompensazioneCompensazione Più complessoPiù complesso Debolmente accoppiatoDebolmente accoppiato

Bisogna scegliere il modello in base al Bisogna scegliere il modello in base al contestocontesto

E’ basato sul protocollo E’ basato sul protocollo WS-AtomicTransactionWS-AtomicTransaction

Distributed TransactionDistributed Transaction

SessionSession

E’ possibile far uso delle sessioni E’ possibile far uso delle sessioni per mantenere uno “stato”per mantenere uno “stato”

L’uso della sessione deve essere L’uso della sessione deve essere gestito con il ciclo di vita del gestito con il ciclo di vita del servizioservizio

E’ possibile condividere la stessa E’ possibile condividere la stessa sessione fra più client sessione fra più client (SharedSession)(SharedSession)

SumSum

Diagnostica e monitoringDiagnostica e monitoring

Performance counterPerformance counter Classi ed eventi WMIClassi ed eventi WMI TracingTracing

MonitorMonitor

IntegrazioneIntegrazione

WCF è integrabile bidirezionalmente con:WCF è integrabile bidirezionalmente con: MSMQMSMQ ASP.NET XML web servicesASP.NET XML web services Enterprise Services (COM+)Enterprise Services (COM+)

E’ fondamentale definire in modo E’ fondamentale definire in modo corretto il binding ed il modello di corretto il binding ed il modello di serializzazioneserializzazione

Scrivendosi un custom channel è Scrivendosi un custom channel è possibile integrarsi con tutto:possibile integrarsi con tutto: .NET Remoting.NET Remoting Java RMIJava RMI

RiferimentiRiferimenti

Programming IndigoProgramming IndigoISBN ISBN 0-7356-2151-90-7356-2151-9

Forum ugidotnet.beta.winfxForum ugidotnet.beta.winfx http://windowscommunication.nethttp://windowscommunication.net http://msdn.microsoft.com/http://msdn.microsoft.com/

webservices/indigo/default.aspxwebservices/indigo/default.aspx