Windows Communication Foundation Agenda Architettura .NET ...

motionslatelickSoftware and s/w Development

Nov 2, 2013 (3 years and 5 months ago)

104 views

Windows
CommunicationFoundation
Concetti e Archittetture
Pietro Brambati
Pietro.brambati@microsoft.com
Blog: http://blogs.msdn.com/pietrobr
DeveloperEvangelist
Microsoft CertifiedApplication Developer
Microsoft Certified Professional Developer | Web Developer
Agenda
Introduzione al .Net Framework3.0
I Web Service (WS) un semplice esempio
Windows CommunicationFoundation
Obbiettivi e architettura
Contratto
Bindinge Behaviour
Sicurezza
INTRODUZIONE AL
.NETFRAMEWORK3.0
Architettura .NET Framework3.0
Base Class Library
Common Language Specification
Common Language Runtime
Data and XML
VB
C++
C#
Visual Studio 2005
J#
«
Web Services
ASP.NET
User
Interface
WPF
WCF
WF
WCS
Indipendenza dalla piattaforma e
dal linguaggio
1(7qXQ¶LPSOHPHQWD]LRQHGL&/,
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 Framework3.0 in pillole
Nuove interfacce utente
Windows PresentationFoundation
SOA
Windows CommunicationFoundation(WCF)
Workflowaziendali
Windows WorkflowFoundation(WF)
Identità digitale
Windows CardSpace(WCS)
WEB SERVICE
UN SEMPLICE ESEMPIO
I Web Services in pillole
Dalpuntodivista logico:
Sonobasatisustandard apertie condivisitramolteaziende
Espongonofunzionalitàcome servizio
Possonoessereinvocatiin modoindipendentedaiSistemi
operativi, Piattaformee Linguaggi
³UnafunzionesuHTTP´
ImplementazioneMicrosoft:
Sonoparte diASP.NET (file in formato.asmx)
.NetFramework 2.0
DevonoessereaccedibilidaunaURL suInternet Information
Service (IIS)
Un Web Service non ha InterfacciaUtente(UI)
Il web browser non è ilclient diriferimento
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
T
Mainframe
DBMS
Business
Logic
Browser
Multi-Tier
DBMS
Business
Logic
Service-
Oriented
DBMS
Business
Logic
Business
Logic
GUI
Client/Server
DBMS
Business
Logic
Business
Logic
WCF Obbettivi
Fornire un modello unificato di programmazione per diverse tecnologie e API
ASP.NetWeb Service
Interoperabilità tra piattaforme
.NET Remoting
Comunicazione efficiente tra applicazioni .Net
EnterpriceServices(successore di COM+)
Servizi di Transazionalità
Web ServicesEnhancements(WSE)
WS-*
Microsoft MessageQueuing(MSMQ)
Per applicazioni asincrone, non sempre connesse
Implementa le best practicesper costruire applicazioni distribuite
basate sui principi della service orientation
Interoperabilecon applicazionidialtrepiattaformecon ampio
supportoper 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-*: Architetturae protocolli
Foundation
Applicazioni e
Infrastruttura
Trasporto
Connected
Applications
Management
Business
Process
«
Security
Security
Trust Secure
Conversation
Messaging (SOAP, Addressing, MTOM)
XML
(XML, XSD, XPath)
Metadata
(WSDL, Policy,
Discovery, MEX)
HTTP
TCP
SMTP
«
Reliability
Reliable
Messaging
TransactionsAtomic
Transaction
Coordination
Business
Activity
Activation and Hosting
WAS
Avalon
*.EXE
NT Service
COM+
Messaging
HTTP
Channel
TCP
Channel
UDP
Channel
X-Proc
Channel
Queue
Channel
SOAP Security
Channel
SOAP Reliability
Channel
Text/XML
Encoder
Binary
Encoder
Service Runtime
Contracts
Throttling
Behavior
Transaction
Behavior
Activation
Behavior
Concurrency
Behavior
Cmd/Control
Facilities
Error
Behavior
Metadata
Behavior
Instance
Behavior
Inspection
Facilities
Data
Contract
Message
Contract
Service
Contract
Policy and
Binding
SOAP Reliability
g
WCF
Il Message Bus e O¶LQWHURSHUDELOLWj
Network
App
Altri
Stack
Application
App
BizTalk
Adapter
App
WSE
Assurances
Messaging
SOAP
WS-Security
MTOM
WS-Addressing
Metadata
WS-Policy
WSDL
UDDI
WS-Metadata
Exchange
XML Schema
WS-Reliable
Messaging
WS-Coordination
WS-Atomic
Transaction
WS-Business
Activity
WS-Trust
WS-Secure
Conversation
Infrastructure
and Profiles
WS-Management
WS-Federation
Devices
Profile
Foundation
SOAP / HTTP
MIME
XML Infoset
XML 1.0
XML
Namespaces
WS-* Protocols
Applicazioni
Service Model
Messaging
Hosting
Environments
ASP.NET
WPF
WinForm
NT Service
COM+
TCP
Channel
HTTP
Channel
Queue
Channel
Secure
Channel
ReliableChannel
Instance
Behavior
Throttling
Behavior
Type Integ.
Behavior
Transaction
Behavior
Concurrency
Behavior
Error
Behavior
Metadata
Behavior
Binary
Encoder
Text/XML
Encoder
«
«
«
WCF Architettura
WAS
Endpoint
Caller
Service
Message
Endpoint
Endpoint
Endpoint
Address, Binding, Contract
Caller
Service
Message
A
B
C
A
B
C
A
B
C
Address
Binding
Contract
(Where)
(How)
(What)
Metadata
Caller
Service
Message
A
B
C
A
B
C
A
B
C
Metadata
Behaviors
Caller
Service
Message
A
B
C
A
B
C
A
B
C
Bv
Bv
Bv
Bv
Metadata
Runtime
Caller
Service
Message
A
B
C
A
B
C
A
B
C
Metadata
Bv
Bv
Bv
Bv
Proxy
ServiceHost<T>()
Address, Contract, Binding
Client Code
Service Code
Proxy
Dispatcher
Protocol #1
Protocol #1
Encoder
Transport
Encoder
Transport
Message
Protocol #n
Protocol #n
BindingBinding
Address
Contract
WCF: ilcontratto
Service Contracts
Descrivonole operazionidiun servizio
Mappanoitipi CLR con ilWSDL
Nelbody del messaggioSOAP
Data Contracts
Descrivonola strutturadeidati
MappanoI tipi CLR con XSD
Nelbody del messaggioSOAP
Message Contracts
Definisconola strutturadel messagio
MappanoI tipi CLR aimessaggiSOAP
Puoiinserireelementinell¶KHDGHU62$3
ModellareilRequest/Reply
³2Qthe ZLUH´tuttoè asincrono
La correlazionetrala rispostae la richiestapuòesseremodellatain
due modi
Synchronous (bloccante) method call
Utilizzandoun pattern asincrono
/¶LPSOHPHQWD]LRQHdel client e del server possonoesserediverse!
[
[
O
O
p
p
e
e
r
r
a
a
t
t
i
i
o
o
n
n
C
C
o
o
n
n
t
t
r
r
a
a
c
c
t
t
]
]
MathResponseDoMsgMath(MathRequestmsg);
[
[
O
O
p
p
e
e
r
r
a
a
t
t
i
i
o
o
n
n
C
C
o
o
n
n
t
t
r
r
a
a
c
c
t
t
(
(
A
A
s
s
y
y
n
n
c
c
P
P
a
a
t
t
t
t
e
e
r
r
n
n
=
=
t
t
r
r
u
u
e
e
)
)
]
]
IAsyncResultBeginDoMsgMath(MathRequestmsg,
AsyncCallbackcb, object state);
MathResponseEndDoMsgMath(IAsyncResultcall);
Service Contract: OneWay
[
[
S
S
e
e
r
r
v
v
i
i
c
c
e
e
C
C
o
o
n
n
t
t
r
r
a
a
c
c
t
t
]
]
public interface IOneWayCalculator
{
[
[
O
O
p
p
e
e
r
r
a
a
t
t
i
i
o
o
n
n
C
C
o
o
n
n
t
t
r
r
a
a
c
c
t
t
(
(
I
I
s
s
O
O
n
n
e
e
W
W
a
a
y
y
=
=
t
t
r
r
u
u
e
e
)
)
]
]
void DoMath(MathRequestrequest);
}
Service Contract: Duplex
[
[
S
S
e
e
r
r
v
v
i
i
c
c
e
e
C
C
o
o
n
n
t
t
r
r
a
a
c
c
t
t
(
(
S
S
e
e
s
s
s
s
i
i
o
o
n
n
M
M
o
o
d
d
e
e
=
=
S
S
e
e
s
s
s
s
i
i
o
o
n
n
M
M
o
o
d
d
e
e
.
.
R
R
e
e
q
q
u
u
i
i
r
r
e
e
d
d
,
,


C
C
a
a
l
l
l
l
b
b
a
a
c
c
k
k
C
C
o
o
n
n
t
t
r
r
a
a
c
c
t
t
=
=
t
t
y
y
p
p
e
e
o
o
f
f
(
(
I
I
C
C
a
a
l
l
c
c
u
u
l
l
a
a
t
t
o
o
r
r
R
R
e
e
s
s
u
u
l
l
t
t
s
s
)
)
]
public interface ICalculatorProblems{
[
[
O
O
p
p
e
e
r
r
a
a
t
t
i
i
o
o
n
n
C
C
o
o
n
n
t
t
r
r
a
a
c
c
t
t
(
(
I
I
s
s
O
O
n
n
e
e
W
W
a
a
y
y
=
=
t
t
r
r
u
u
e
e
)
)
]
]
void DoMath(MathRequestrequest);
}
public interface ICalculatorResults
{
[
[
O
O
p
p
e
e
r
r
a
a
t
t
i
i
o
o
n
n
C
C
o
o
n
n
t
t
r
r
a
a
c
c
t
t
(
(
I
I
s
s
O
O
n
n
e
e
W
W
a
a
y
y
=
=
t
t
r
r
u
u
e
e
)
)
]
]
void DisplayResults(MathResponseresponse);
}
Protocol
Encoders
DentroiBinding
Transport
IPC
MSMQ
Custom
TCP
HTTP
Protocol
Encoders
Binary
Text
Custom
.NET
TX
Custom
Security
RM
Binding
HTTP
Text
TX
Security
RM
Binding: Caratteristiche
Trasporto
TCP, HTTP, Named Pipes, Peer Channel, MSMQ, Custom
Encoding
Text, Binary, MTOM, Custom
SicurezzaEnd-to-End
Claims Based
Trasporto, Messaggio
Confidentiality, Integrity, AuthN, AuthZ, Federation & CardSpace
X.509, Username/Password, Kerberos, SAML, Custom
End-to-End Reliable Messaging
Transport-Independent QoS(In-Order / Exactly-Once)
Volatile e Durable Queues per Availability
Transazioni
WS-AtomicTransactionper coordinaretransazionisusistemieterogenei
Two-PhaseCommitprotocol
OleTransactionper sistemi WCF
Binding in Configfile
<?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 WCF
Binding InteropSecuritySessionTXDuplex
BasicHttpBindingBP 1.1N, TNNn/a
WSHttpBinding WSM
, TN
, T, RSN
,Sìn/a
WSDualHttpBindingWSM
RS
N
, SìSì
WSFederationBinding FederationM
N
, RSN
, SìNo
NetTcpBinding .NETT
, MT
,RSN
, SìSì
NetNamedPipeBinding .NETT
T
, NN
, SìSì
NetPeerTcpBinding PeerT
N
N

NetMsmqBinding.NETT
, MN
N
, SìNo
MsmqIntegrationBinding MSMQT
N
N
, Sìn/a
N = None | T = Transport | M = Message | B = Both | RS = Reliable Sessions
Custom Bindings
<bindings>
<customBinding>
<customBinding>
<binding name="ReliableTCP">
<reliableSessionLQDFWLYLW\7LPHRXW ´
ordered="true"/>
<binaryMessageEncoding/>
<tcpTransport transferMode="Buffered"/>
</binding>
</customBinding>
</customBinding>
</bindings>
Behaviour
Modificano il comportamento a run-timedel
servizio
Partecipano alla creazione del canale e ne può
modificare il comportamento
Per estendere WCF
Behaviour: diversi tipi
Service (IServiceBehaviour)
(e.gTracingdegli Endpoint)
Contract(IContractBehaviour)
Operation(IOperationBehavior)
EndPoint(IEndpointBehavior)
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 e la Sicurezza
ConcettiPrincipali
Credenziali
InformazioniscambiatedatraXQ¶entitàe O¶DOWUD
Usataper stabilireO¶LGHQWLWjdel mittente
Claims
Info relative ad XQ¶entitàchepossonoesserederivate dalle
credenziali
Possonoessereusatiper access control, personalizzazione,
auditing, etc.
Security Mode
Utilizzatoper specificareO¶DXWHQWLFD]LRQHedimeccanismidi
sicurezza
Message, Transport o entrambi
WCF Scenaridisicurezza
a livelloditrasporto
³7UDQVSRUWlevel VHFXULW\´
Confidenzialità
Integrità
Autenticazione
Vantaggi
Compatibilitàcon sistemiesistenti
Veloce; implementabilecon hardware
Svantaggi
Hop-to-hop
Set limitatodicredenzialie claims
Dipendenzadaltrasporto!
Non è un approccioServiced-Oriented
WCF Scenaridisicurezza
Transport Security
<services>
<service name="Samples.Service">
HQGSRLQWDGGUHVV ´https://MyServer:81/svc"
ELQGLQJ ´wsHttpBinding"
bindingConfiguration ´TransportSec"
contract="Samples.IShoppingCart"/>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="TransportSec´!
VHFXULW\PRGH ´Transportµ!
</binding>
</wsHttpBinding>
</bindings>
WCF Scenaridisicurezza
Transport Security w/ Client Certificate
<services>
<service name="Samples.Service">
HQGSRLQWDGGUHVV ´https://localhost:6060/service"
ELQGLQJ ´wsHttpBinding"
bindingConfiguration="Binding1"
contract="Samples.IShoppingCart"/>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="Binding1´!
VHFXULW\PRGH ´7UDQVSRUWµ!
<transport clientCredentialType ´Certificateµ!
</security>
</binding>
</wsHttpBinding>
</bindings>
WCF Scenaridisicurezza
Transport Security w/ Client Certificate
proxy.ClientCredentials.ClientCertificate.SetCertificate(
´&1 $OLFHµ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>
Client
Code
Config
WCF Scenaridisicurezza
Transport Security con Windows AuthN
<services>
<service name="Samples.Service">
HQGSRLQWDGGUHVV ´KWWSVORFDOKRVWVHUYLFH
ELQGLQJ ´wsHttpBinding"
bindingConfiguration="Binding1"
contract="Samples.IShoppingCart"/>
</service>
</services>
<bindings>
<wsHttpBinding>
ELQGLQJQDPH %LQGLQJ´!
VHFXULW\PRGH ´7UDQVSRUWµ!
<transport clientCredentialType ´:LQGRZVµ!
</security>
</binding>
</wsHttpBinding>
</bindings>
WCF Scenaridisicurezza
Sicurezzabasatasulmessaggio
Sicurezzaapplicatadirettamenteal messaggio
Confidenzialità
Integrità
Autenticazione
Vantaggi
End-to-end security
Supportoper moltitipi dicredenzialie claims
Indipendentedaltrasporto
Estendibile
Applicabilein modoselettivosulcontenutodel
messaggio
WS-Security
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
WS-Trust
'HILQLVFHLPHFFDQLVPL³62$3based´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
,OFOLHQWGRYUjDVXDYROWDUHQGHUVL³FUHGLELOH´
(tramite un Token) al Trust Server
WCF Scenaridisicurezza
Message Security
<services>
<service name="Samples.Service">
HQGSRLQWDGGUHVV ´KWWSORFDOKRVWVHUYLFH
ELQGLQJ ´wsHttpBinding"
bindingConfiguration="Binding1"
contract="Samples.IShoppingCart"/>
</service>
</services>
<bindings>
<wsHttpBinding>
ELQGLQJQDPH %LQGLQJ´!
VHFXULW\PRGH ´0HVVDJHµ!
</binding>
</wsHttpBinding>
</bindings>
WCF Scenaridisicurezza
CredenzialiFederate
Scopo: Facilitarele trust relationships tra
aziende
Fornitedaterzeparti
Supportodicredenzialiarbitrarie
Benefici:
Delegadel controllodel claim a specifiche
applicazioni
RSTR
1
1
Cred
3
3
Security Token
Client
Service
STS
RST
STS
Security Token Service
RST
Request Security Token
RSTR
Request Security Token Response
T
T
T
2
2
WCF Scenaridisicurezza
CredenzialiFederate
Riepilogo
.NetFramework 3.0 vaoltreiWS
WCF è ilfuturodel distributed computing
WCF forniscemodellodiprogrammazioneper la comunicazioneapplicativaunificato, semplicee potente
Architetturaflessibile, sicuraedestendibile
Semplicitànellaconfigurazione
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
ReliableSessionOverview
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.