Windows Communication Foundation Agenda Architettura .NET

Transcription

Windows Communication Foundation Agenda Architettura .NET
Agenda
Windows
Communication Foundation
Concetti e Archittetture
Pietro Brambati
[email protected]
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.