13
Windows Communication Foundation Concetti e Archittetture Pietro Brambati [email protected] Blog: http://blogs.msdn.com/pietrobr Developer Evangelist Microsoft Certified Application Developer Microsoft Certified Professional Developer | Web Developer Agenda Introduzione al .Net Framework 3.0 I Web Service (WS) un semplice esempio Windows Communication Foundation Obbiettivi e architettura Contratto Binding e Behaviour Sicurezza 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 Services ASP.NET User Interface WPF WCF WF WCS

Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

  • Upload
    buikiet

  • View
    226

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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

Page 2: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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

Page 3: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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

Page 4: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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

Page 5: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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

Page 6: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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

Page 7: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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

Page 8: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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>

Page 9: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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

Page 10: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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>

Page 11: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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>

Page 12: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

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

Page 13: Windows Communication Foundation - Architettura · Architettura .NET Framework 3.0 Base Class Library ... Mono (per Linux) DotGNU Intel OCL (Open CLI Library) «.Net Framework 3.0

© 2003-2008 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.