Diapositiva 1 - DotNetCampania

fortnecessityusefulSoftware and s/w Development

Dec 14, 2013 (3 years and 7 months ago)

80 views

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

WINDOWS
COMMUNICATION
FOUNDATION

Fabio Cozzolino

DotNetSide

fabio@dotnetside.org

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Agenda


Overview


SOA


L’ABC
di

WCF


I Behaviors


WCF 4.0


REST


SOA
vs

REST


WCF Tips & Tricks


Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

SOA Tenets


Boundaries are Explicit


Services are Autonomous


Services Shares Schema and Contracts, not
Classes or Types


Compatibility is Policy
-
Based


Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Cos’è WCF?


Un
framework

unificato

per lo sviluppo di
applicazioni distribuite su piattaforma
Windows


Rappresenta come Microsoft pensa SOA
(
Service
-
Oriented

Architecture
)


… ma non solo



Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Caratteristiche di WCF


Comunicazioni basate sul concetto di
messaggio


Interoperabilità


Indipendenza dal protocollo di trasporto e
dalla formattazione del messaggio


Indipendenza dall’hosting


Servizi infrastrutturali pluggabili (sicurezza,
transazioni, ecc
…)


E’ un framework con un’architettura altamente
estendibile

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Overview
di

WCF: L’ABC


Un
servizio

WCF
si

basa

su
:


Un Address: DOVE


Un Binding: COME


Un Contract: COSA


L’insieme

costituisce

l’Endpoint

del
servizio

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

EndPoint

Address, Binding, Contract

Consumer

Provider

Contract

(cosa)

Binding

(come)

Address

(dove)

C

B

A

A

B

C

Messaggio

A

B

C

A

B

C

Behaviours

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Address


Identifica
l’indirizzo del servizio specificando:


URL


http://www.mysite.com/myservice.svc


net.tcp://localhost:10101/myservice.svc





Headers
(opzionale
)


E’ un’istanza di
EndpointAddress

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Binding


COME comunichiamo con il servizio


il

protocollo

utilizzato

(http,
tcp
,
msmq
, etc..)


le
modalità

di

formattazione

del
messaggio

(encoding)


le
impostazioni

di

sicurezza

(
ws
-
security)


gli

eventuali

standard
da

utilizzare

(
ws
-
trust,
ws
-
reliablemessaging
,
ws
-
atomic
transaction,SOAP
)


Ma anche sessioni e transazioni


Esistono binding predefiniti ma possiamo
crearne anche di personalizzati

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Contract


Identifica le informazioni scambiate dal
servizio


Esistono tre tipi di contratto:


Service contract (WSDL)


Message contract (SOAP)


Data contract (Xml Schema)


Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Behaviors


Servizi infrastrutturali che modellano il
comportamento del servizio


Attivabili nel codice
e dal .config


Utile per le operazioni più delicate (sessioni, transazioni,
instancing, identity)


Per
le politiche da adottare nello scambio dei messaggi
(credenziali, throttling, auditing, serializzazione,
affidabilità, ecc…)


Possiamo creare behavior personalizzati:


Implementando
le interfacce
System.ServiceModel.IServiceBehavior


System.ServiceModel.IEndpointBehavior


System.ServiceModel.IContractBehavior


System.ServiceModel.IOperationBehavior


Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

WCF Hosting


Self
-
hosting


Qualsiasi altra applicazione (Console,WinForms,
etc..)


Posso utilizzare tutti i protocolli previsti da WCF


Internet Information Services


IIS 6 solo http


IIS 7 con Windows Activation Services:


net.tcp, net.msmq, etc...

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

DEMO

Implementazione di un servizio in WCF

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Windows Communication Foundation 4.0


Configuration
-
free services


Service Discovery with WS
-
Discovery


Routing Service


Event Tracing for Windows


Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Endpoint Configuration in 3.x

vdir2

Web.

config

Echo.

svc

A

B

C

Service

http://host

vdir2

vdir1

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Default Endpoints

Echo.

svc

A

B

C

Service

Scheme

Binding

http://

BasicHttpBinding





v摩d2

Ec桯h

svc

ht瑰㨯⽨潳t

v摩d2

v摩d1

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Web.

config

Default Bindings

A

B

C

Service

vdir2

Echo.

svc

http://host

vdir2

vdir1

<
system.serviceModel
>


<bindings>


<
basicHttpBinding
>


<binding
name=""


maxBufferSize
="2147483647"


maxReceivedMessageSize
="
2147483647"/>


</
basicHttpBinding
>


</bindings>

</
system.serviceModel
>


Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Web.

config

Default Behaviors

A

B

C

Bv

Service

vdir2

Echo.

svc

http://host

vdir2

vdir1

<
system.serviceModel
>


<behaviors>


<
serviceBehaviors
>


<behavior>


<
serviceThrottling

maxConcurrentCalls
="32"/>


</behavior>


</
serviceBehaviors
>


</behaviors>

</
system.serviceModel
>


Web.

config

Bv

<
system.serviceModel
>


<behaviors>


<
serviceBehaviors
>


<behavior>


<
serviceMetadata

httpGetEnabled
="true"/>


</behavior>


</
serviceBehaviors
>


</behaviors>

</
system.serviceModel
>


Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

ROUTING SERVICE IN WCF 4.0

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Routing Service


Dispatching

dei messaggi basato su filtri


Protocol and security
bridging


Mapping

delle eccezioni


Ho a disposizione un set predefinito di filtri:

Filter On

MessageFilter

Action

ActionMessageFilter

Address header

AddressMessageFilter

Address header


longest prefix matching

AddressPrefixMessageFilter

Endpoint Name

EndpointNameMessageFilter

No Filter


matches everything

MatchAllMessageFilter

Logical And

of two filters

StrictAndMessageFilter

XPath

expression

XPathMessageFilter

Custom

Custom

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Message Routing

Client

Hospital

Service

Routing

Service

Lab
Service

Action = http://healthcare/labservice

Action = http://healthcare/hospitalservice

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Protocol Bridging

Client

Service

Routing

Service

BasicHttp

Net.Tcp

SOAP 1.1

SOAP 1.2

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Security

Client

Service

Routing

Service

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Error Handling

Client

Backup

Lab
Service

Routing

Service

Lab

Service

MessageFilter

Endpoint

Alternate

Endpoints

action ==
http://healthcare/LabService

LabService

BackupLabService

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

WS
-
DISCOVERY IN WCF 4.0

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Discovery


Consente

la
pubblicazione

di

un endpoint
di

un
servizio

e la
ricerca

utilizzando

criteri

ben

definiti


Trova

servizi

disponibili


Riduce

la
configurazione


Semplice

modifica

della

location


Applicazioni

dinamiche


WS
-
Discovery


e’
uno

standard
interoperabile

per
la
definizione

del
protocollo


Ad
-
hoc Discovery


Managed Discovery

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Ad
-
hoc Discovery

Hello

Hello

Hello

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Ad
-
hoc Discovery

Probe

Probe

Probe


ProbeMatch


ProbeMatch

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Ad
-
hoc Discovery

Bye

Bye

Bye

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Managed Discovery

Probe

Probe

Hello

Probe

Hello


ProbeMatch

Jurgen

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Discovery Message Parts


Types


Lista

di

xs:QName



Contratti

richiesti

dal

client o
comunque

supportati

dal

servizio

destinatario


Scopes


Lista

di

xs:anyURI


Scopes
richiesti

dal

client o
previsti

dal

servizio

destinatario


EndpointReference


wsa:EndpointReference


EndpointReference

del
servizio

destinatario

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

DEMO

WCF 4.0

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

What is REST?


Representional State Transfer


E’ principalmente uno stile architetturale, non una
specifica


Importanza alla risorsa (Content+Capabilities)


Utilizzo di tecnologie esistenti:


HTTP


Http Methods e Status Codes = Uniform Interface


Domain
-
neutral data
-
oriented formats


XML, JSON, Atom/Atom Publishing


Le risorse vengono identificate attraverso l’utilizzo di
URI


Esempio:


http://dotnetside.org/users/fabio


http://dotnetside.org/users

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

HTTP Methods

Method

Descrizione

GET



R散異er愠畮愠物獯s獡



E’ in sola lettura



䍡捨敡扬b

P啔



䅧杩潲湡

畮愠物獯s獡



啴ili空at漠慮捨a 灥爠cr敡e攠l攠物獯s獥⁳攠楬 cli敮琠湥 c潮潳c攠
l’indirizzo remoto



䥤敭e潴敮t

䑅䱅呅



䍡Cc敬ea

l愠物獯s獡⁳灥ci晩fata



䥤敭e潴敮t

P体T



䍲敡e畮愠湵ov愠物獯s獡



啮獡fe

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

REST in WCF: WebGet e WebInvoke


Due nuovi attributi per definire le operation di
WCF


Definizione del metodo HTTP da utilizzare


WebGet permette operazioni in sola lettura


WebInvoke consente di modificare lo stato delle
nostre risorse


Definizione della URI collegata alla operation:
UriTemplate


Definizione del formato della richiesta e della
risposta


Attualmente supporta XML e JSON

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

REST in WCF: UriTemplate


Consente di definire la struttura dell’URI e dei
parametri


Nell’URI definiamo anche dei placeholder che
rappresentano i parametri del nostro metodo:



Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

REST in WCF: WebHttpBinding


Nuovo binding specifico per REST


Supporta esclusivamente il protocollo HTTP


Sicurezza solo a livello di trasporto (HTTPS)


Supporto per i seguenti formati:


XML


JSON


Binary

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

REST in WCF: WebServiceHost


Estende il ServiceHost


Aggiunge le funzionalità necessarie per
l’esecuzione di servizi REST


Configurazione automatica del WebHttpBinding

e
del WebHttpBehavior



WebOperationContext


Accesso al contesto HTTP

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Improvements in WCF 4.0


Gestione

della

cache con
AspNetCacheProfile


Generazione

della

pagina

di

Help

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

DEMO

Developing REST services with WCF

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

GRAZIE


Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

Un grazie di
cuore

a
tutti

gli

sponsor!

Fare clic per modificare lo stile del titolo


Fare clic per modificare stili del testo dello
schema


Secondo livello


Terzo livello


Quarto livello

»
Quinto livello

GRAZIE

PER L’ATTENZIONE

La
vostra

opinione

per
noi

è
fondamentale
:
compilate

il

modulo di feedback!