windows communication foundation - architettura · architettura .net framework 3.0 base class...
TRANSCRIPT
Windows Communication FoundationConcetti e Archittetture
Pietro [email protected]: http://blogs.msdn.com/pietrobr
Developer EvangelistMicrosoft Certified Application DeveloperMicrosoft Certified Professional Developer | Web Developer
Agenda
Introduzione al .Net Framework 3.0I Web Service (WS) un semplice esempioWindows Communication Foundation
Obbiettivi e architetturaContrattoBinding e BehaviourSicurezza
INTRODUZIONE AL.NET FRAMEWORK 3.0
Architettura .NET Framework 3.0
Base Class Library
Common Language Specification
Common Language Runtime
Data and XML
VB C++ C#
Visual Studio 2005
J#
Web ServicesASP.NET
UserInterface
WPF WCF WF WCS
Indipendenza dalla piattaforma e dal linguaggio
Common Language InfrastructureCLI è uno standard ECMA, definito con C#
ECMA-334, ECMA-335Esistono già altre implementazioni di CLI:
SSCLI (Microsoft, per Windows, FreeBSD e Macintosh)Mono (per Linux)DotGNUIntel OCL (Open CLI Library)
.Net Framework 3.0 in pillole
Nuove interfacce utenteWindows Presentation Foundation
SOAWindows Communication Foundation (WCF)
Workflow aziendaliWindows Workflow Foundation (WF)
Identità digitaleWindows CardSpace (WCS)
WEB SERVICEUN SEMPLICE ESEMPIO
I Web Services in pillole
Dal punto di vista logico: Sono basati su standard aperti e condivisi tra molte aziendeEspongono funzionalità come servizioPossono essere invocati in modo indipendente dai Sistemioperativi, Piattaforme e LinguaggiUna funzione su HTTP
Implementazione Microsoft:Sono parte di ASP.NET (file in formato .asmx)
.Net Framework 2.0Devono 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
WinForm o WebForm
Proxy
Processo
Application Domain
WS (asmx)
Metodo
IIS
Application Domain
HTTP/S
Creare un semplice Web Service[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
WCF
Evoluzione delle architetture distribuite
Clients
PCs
Web
Web Services
TMainframeDBMS
Business Logic
BrowserMulti-Tier DBMSBusiness
Logic
Service-Oriented DBMS
Business Logic Business
Logic
GUIClient/Server DBMSBusiness
LogicBusiness
Logic
WCF ObbettiviFornire un modello unificato di programmazione per diverse tecnologie e API
ASP.Net Web ServiceInteroperabilità tra piattaforme
.NET RemotingComunicazione efficiente tra applicazioni .Net
Enterprice Services (successore di COM+)Servizi di Transazionalità
Web Services Enhancements (WSE)WS-*
Microsoft Message Queuing (MSMQ)Per applicazioni asincrone, non sempre connesse
Implementa le best practices per costruire applicazioni distribuite basate sui principi della service orientationInteroperabile con applicazioni di altre piattaforme con ampiosupporto per WS*-Architecture
WCF: Scenari architetturali
WCF
Applicazione
Processo
Computer Windows Piattaforme NON- Windows
WCF
Applicazione
Processo
WCF
Applicazione
Processo
Computer Windows
Comunicazione tra processi
Comunicazione
tra processi remoti
Comunicazione
tra piattaforme eterogenee
WS-*: Architettura e protocolli
Foundation
Applicazioni e Infrastruttura
Trasporto
Connected Applications Management Business
Process
SecuritySecurityTrustSecure Conversation
Messaging (SOAP, Addressing, MTOM)
XML (XML, XSD, XPath)
Met
adat
a(W
SDL,
Pol
icy,
D
isco
very
, MEX
)
HTTP TCP SMTP
ReliabilityReliable Messaging
TransactionsAtomic TransactionCoordinationBusiness Activity
Activation and Hosting
WAS Avalon *.EXE NT Service COM+
MessagingHTTP
ChannelTCP
Channel
UDPChannelX-Proc
ChannelQueue
Channel
SOAP SecurityChannel
SOAP ReliabilityChannel
Text/XMLEncoderBinary
Encoder
Service Runtime
Contracts
ThrottlingBehavior
TransactionBehavior
ActivationBehavior
ConcurrencyBehavior
Cmd/ControlFacilities
ErrorBehavior
MetadataBehavior
InstanceBehavior
InspectionFacilities
DataContract
MessageContract
ServiceContract
Policy andBinding
SOAP Reliability
g
WCF
Il Message Bus e
Network
App
AltriStack
Application App
BizTalkAdapter
App
WSE
Assurances
Messaging
SOAP
WS-Security
MTOMWS-Addressing
Metadata
WS-Policy
WSDL
UDDI
WS-MetadataExchange
XML Schema
WS-ReliableMessaging WS-Coordination
WS-AtomicTransaction
WS-BusinessActivity
WS-Trust
WS-SecureConversation
Infrastructureand Profiles
WS-ManagementWS-Federation DevicesProfile
Foundation
SOAP / HTTPMIME
XML Infoset
XML 1.0 XMLNamespaces
WS-* Protocols
Applicazioni
Service Model
Messaging
Hosting Environments ASP.NET WPF WinForm NT Service COM+
TCPChannel
HTTPChannel
QueueChannel
SecureChannel
ReliableChannel
Instance Behavior
Throttling Behavior
Type Integ. Behavior
TransactionBehavior
ConcurrencyBehavior
ErrorBehavior
MetadataBehavior
BinaryEncoder
Text/XMLEncoder
WCF Architettura
WAS
Endpoint
Caller Service
MessageEndpoint Endpoint
Endpoint
Address, Binding, Contract
Caller Service
MessageABC A B C
A B C
Address Binding Contract
(Where) (How) (What)
Metadata
Caller Service
MessageABC A B C
A B C
Metadata
Behaviors
Caller Service
MessageABC A B C
A B C
Bv Bv
Bv Bv
Metadata
Runtime
Caller Service
MessageABC A B C
A B C
Metadata
Bv Bv
Bv Bv
Proxy ServiceHost<T>()
Address, Contract, BindingClient Code Service Code
Proxy Dispatcher
Protocol #1 Protocol #1
Encoder
Transport
Encoder
Transport
Message
Protocol #n Protocol #n
Binding Binding
Address
Contract
WCF: il contratto
Service ContractsDescrivono le operazioni di un servizioMappano i tipi CLR con il WSDLNel body del messaggio SOAP
Data ContractsDescrivono la struttura dei datiMappano I tipi CLR con XSDNel body del messaggio SOAP
Message ContractsDefiniscono la struttura del messagioMappano I tipi CLR ai messaggi SOAPPuoi inserire elementi nell
Modellare il Request/Replythe tutto è asincrono
La correlazione tra la risposta e la richiesta può essere modellata in due modiSynchronous (bloccante) method call
Utilizzando un pattern asincrono
del client e del server possono essere diverse!
[[OOppeerraattiioonnCCoonnttrraacctt]]MathResponse DoMsgMath(MathRequest msg);
[[OOppeerraattiioonnCCoonnttrraacctt((AAssyynnccPPaatttteerrnn==ttrruuee))]]IAsyncResult BeginDoMsgMath(MathRequest msg,
AsyncCallback cb, object state);
MathResponse EndDoMsgMath(IAsyncResult call);
Service Contract: OneWay
[[SSeerrvviicceeCCoonnttrraacctt]]
public interface IOneWayCalculator
{
[[OOppeerraattiioonnCCoonnttrraacctt((IIssOOnneeWWaayy==ttrruuee))]]
void DoMath(MathRequest request);
}
Service Contract: Duplex
[[SSeerrvviicceeCCoonnttrraacctt((SSeessssiioonnMMooddee==SSeessssiioonnMMooddee..RReeqquuiirreedd,, CCaallllbbaacckkCCoonnttrraacctt==ttyyppeeooff((IICCaallccuullaattoorrRReessuullttss))]
public interface ICalculatorProblems{
[[OOppeerraattiioonnCCoonnttrraacctt((IIssOOnneeWWaayy==ttrruuee))]]void DoMath(MathRequest request);
}
public interface ICalculatorResults{
[[OOppeerraattiioonnCCoonnttrraacctt((IIssOOnneeWWaayy==ttrruuee))]]void DisplayResults(MathResponse response);
}
ProtocolEncoders
Dentro i Binding
Transport
IPCMSMQ
Custom
TCP HTTP
ProtocolEncoders
Binary
Text
Custom
.NETTX
Custom
Security RM
Binding
HTTP Text TXSecurity RM
Binding: CaratteristicheTrasporto
TCP, HTTP, Named Pipes, Peer Channel, MSMQ, Custom
EncodingText, Binary, MTOM, Custom
Sicurezza End-to-EndClaims BasedTrasporto, MessaggioConfidentiality, Integrity, AuthN, AuthZ, Federation & CardSpaceX.509, Username/Password, Kerberos, SAML, Custom
End-to-End Reliable MessagingTransport-Independent QoS (In-Order / Exactly-Once)Volatile e Durable Queues per Availability
TransazioniWS-AtomicTransaction per coordinare transazioni su sistemi eterogenei
Two-Phase Commit protocol
OleTransaction per sistemi WCF
Binding in Config file
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service serviceType="CalculatorService">
<endpoint address="Calculator"
bindingSectionName="basicProfileBinding"
contractType="ICalculator" /></service>
</services>
</system.serviceModel>
</configuration>
Binding in WCFBinding 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
Custom Bindings
<bindings>
<customBinding>
<customBinding>
<binding name="ReliableTCP">
<reliableSession
ordered="true"/>
<binaryMessageEncoding/>
<tcpTransport transferMode="Buffered"/>
</binding>
</customBinding>
</customBinding>
</bindings>
Behaviour
Modificano il comportamento a run-time del servizioPartecipano alla creazione del canale e ne può modificare il comportamentoPer estendere WCFBehaviour: diversi tipi
Service (IServiceBehaviour)(e.g Tracing degli Endpoint)
Contract (IContractBehaviour)Operation (IOperationBehavior)EndPoint (IEndpointBehavior)
Sicurezza: obbiettivi
AutenticazioneRiconoscere mittente/destinatario
AutorizzazioneVerifico 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 e la SicurezzaConcetti Principali
CredenzialiInformazioni scambiate da tra entità e Usata per stabilire del mittente
ClaimsInfo relative ad entità che possono essere derivate dallecredenzialiPossono essere usati per access control, personalizzazione, auditing, etc.
Security ModeUtilizzato per specificare ed i meccanismi disicurezza
Message, Transport o entrambi
WCF Scenari di sicurezzaa livello di trasporto
level ConfidenzialitàIntegritàAutenticazione
VantaggiCompatibilità con sistemi esistentiVeloce; implementabile con hardware
SvantaggiHop-to-hopSet limitato di credenziali e claimsDipendenza dal trasporto!Non è un approccio Serviced-Oriented
WCF Scenari di sicurezzaTransport Security<services>
<service name="Samples.Service">
https://MyServer:81/svc"
wsHttpBinding"
bindingConfiguration TransportSec"
contract="Samples.IShoppingCart"/>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="TransportSec
Transport
</binding>
</wsHttpBinding>
</bindings>
WCF Scenari di sicurezzaTransport Security w/ Client Certificate<services>
<service name="Samples.Service">
https://localhost:6060/service"
wsHttpBinding"
bindingConfiguration="Binding1"
contract="Samples.IShoppingCart"/>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="Binding1
<transport clientCredentialType Certificate
</security>
</binding>
</wsHttpBinding>
</bindings>
WCF Scenari di sicurezzaTransport Security w/ Client Certificate
proxy.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.CurrentUser, StoreName.My);
<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>
ClientCode
Config
WCF Scenari di sicurezzaTransport Security con Windows AuthN
<services>
<service name="Samples.Service">
wsHttpBinding"
bindingConfiguration="Binding1"
contract="Samples.IShoppingCart"/>
</service>
</services>
<bindings>
<wsHttpBinding>
<transport clientCredentialType
</security>
</binding>
</wsHttpBinding>
</bindings>
WCF Scenari di sicurezzaSicurezza basata sul messaggio
Sicurezza applicata direttamente al messaggioConfidenzialitàIntegritàAutenticazione
VantaggiEnd-to-end securitySupporto per molti tipi di credenziali e claimsIndipendente dal trasportoEstendibileApplicabile in modo selettivo sul contenuto del messaggio
WS-Security
Servizi offertiAutenticazioneFirma digitaleEncryptionNon ripudioEvita i replay-attack
Specifica come inserire i security token (e.gcertificato X509 nel messaggio SOAP
WS-Trustbased
ottenere relazioni fidateRichiedendo e restituendo security tokens.Sfrutta un meccanismo di scambio di token
Ci sono diversi modelli di trustingTutti 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
(tramite un Token) al Trust Server
WCF Scenari di sicurezzaMessage Security
<services>
<service name="Samples.Service">
wsHttpBinding"
bindingConfiguration="Binding1"
contract="Samples.IShoppingCart"/>
</service>
</services>
<bindings>
<wsHttpBinding>
</binding>
</wsHttpBinding>
</bindings>
WCF Scenari di sicurezzaCredenziali Federate
Scopo: Facilitare le trust relationships traaziendeFornite da terze partiSupporto di credenziali arbitrarieBenefici:
Delega del controllo del claim a specificheapplicazioni
RSTR11Cred
33
Security Token
Client Service
STS
RST
STS Security Token Service
RST Request Security Token
RSTR Request Security Token Response
T
T
T
22
WCF Scenari di sicurezzaCredenziali Federate
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
Link utiliLearn The ABCs Of Programming Windows Communication Foundation
http://msdn.microsoft.com/msdnmag/issues/06/02/WindowsCommunicationFoundation/
Introduction to Reliable Messaging with the Windows Communication Foundation
http://msdn2.microsoft.com/en-us/library/aa480191.aspxReliable Session Overview
http://msdn2.microsoft.com/en-us/library/a7fc4146-ee2c-444c-82d4-ef6faffccc2d.aspx
Secure, Reliable, Transacted Web Services: Architecture and Composition
http://msdn2.microsoft.com/en-us/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.