costruire web service oggi e domani giuseppe guerrasio architect, microsoft
TRANSCRIPT
Costruire Web Service oggi e domani
Giuseppe GuerrasioArchitect, Microsoft
Ad un punto di svolta
Singola Applicazione
Singola Piattaforma Piattaforme Integrate
Sistemi Distribuiti
Funzionalità logiche ricorrenti
Un modello in evoluzione
La Strategia: Connected System
Fornire una piattaforma integrata di prodotti e tecnologie completa ed interoperabile
… che include tool (dev e mgmt), framework, infrastruttura e piattaforma
…che copra l’intera gamma bisogni (client, device, e server, workflow,dati, messagging , etc)
…che sia interoperabile by design con le altre piattaforme
… che abbracci tre principi architetturali chiave Service Orientation
Claims-Based Security
Model Driven Software
Microsoft Application PlatformConnected Systems
WS-* Architecture
Foundation
Applicazioni e Infrastruttura
Transport
Connected Connected ApplicationsApplications ManagementManagement BusinessBusiness
ProcessProcess……
SecuritySecuritySecuritySecurity
TrustTrust
Secure Secure ConversationConversation
Messaging Messaging (SOAP, Addressing, MTOM, Eventing)(SOAP, Addressing, MTOM, Eventing)
XML XML (XML, XSD, XPath)(XML, XSD, XPath)
Me
tad
ata
Me
tad
ata
(WS
DL
, P
oli
cy,
(WS
DL
, P
oli
cy,
Dis
cove
ry,
ME
X)
Dis
cove
ry,
ME
X)
HTTPHTTP TCPTCP SMTPSMTP ……
ReliabilityReliabilityReliable Reliable
MessagingMessaging
TransactionsTransactionsAtomic Atomic
TransactionTransaction
CoordinationCoordination
Business Business ActivityActivity
ASP.NET Web Services, WSE e WCF(Indigo)
ASP.NET Web Services
Web Services Enhancements Advanced WS-* Implementation
Foundation for Web services and service-oriented applications
To
day
Unified distributed applications frameworkWindows Communication
Foundation(Indigo)
To
mo
rro
w
Activation and Hosting
WAS Avalon *.EXE NT Service COM+
MessagingHTTP
Channel
TCPChannel
UDPChannel
X-ProcChannel
QueueChannel
SOAP SecurityChannel
SOAP ReliabilityChannel
Text/XMLEncoder
BinaryEncoder
Service Runtime
Contracts
ThrottlingBehavior
TransactionBehavior
ActivationBehavior
ConcurrencyBehavior
Cmd/ControlFacilities
ErrorBehavior
MetadataBehavior
InstanceBehavior
InspectionFacilities
DataContract
MessageContract
ServiceContract
Policy andBinding
Indigo
Il Bus :Interoperabilità
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-FederationDevicesProfile
Foundation
SOAP / HTTPMIME
XML Infoset
XML 1.0XML
Namespaces
WS-* Protocols
Temi Supporto WS .NET v2.0
InteroperabilitàProduttivitàEstendibilità
Bisogno di Oggi: Interoperabilità
Miglioramenti alle caratteristiche di Interoperabilità con il supporto del Basic Profile 1.1
WS compatibili di default con specifico attributo attivatoEmit Conformance Claim supportato lato client solo > 1.1 sp1
Supporto per SOAP 1.2Server side controllato via .config Client side Wsdl.exe supporta entrambi 1.1 per default (wsdl.exe set /protocol a SOAP12) , SoapProtocolVersion come proprietà nel proxy
Miglioramenti al supporto per la generazione del servizio a partire dal contratto (“contract-first”)
wsdl.exe /serverInterface generazione interfaccia da implementare Verifica a run time della contract integrity
Supporto per l’utilizzo dei GenericsAdesempio:. public List<int> ReturnIntegerList()
Nullable Value TypesUtilizzo di Nullable<T>
Client più semplici da sviluppareNuovo modello asincrono event-based
Utilizza XxxAsync e XxxCompleted event Evento richiamato sul thread chiamante Sotituisce BeginXxx, EndXxx mantenuti per compatibilità
Supporto per il databinding nel proxyIn V2.0 per default nel proxy vengono generate public property invece di fieldWsdl.exe con /fields switch per comportamento V1.1
Client-side type sharing Individua gli schemi equivalenti e genera un unico CLR type
Bisogno di Oggi: Produttività
Custom serialization disponibileIXMLSerializable esposto nativamente
Possibilità di gestire con proprio codice la serializzazione
.NET Framework 2.0 introduce [XmlSchemaProvider]
Usato con IXmlSerializable per indicare i metodi statici per generare lo schema
Deprecato IXmlSerializable.GetSchema
Custom proxy code generation con SchemaImporterExtension
Classe astratta che abilita la generazione di custom code quando si importano schemi nel proxy
Bisogno di oggi:Estendibilità
Supporto in System.Net per la determinazione dello stato di rete (online/offline)detect automatico della modifica del Web ProxySupporto automatico della compressione nel Proxy
Disponibile anche client side la compressione oltre che nativamente in II6, service.EnableDecompression = true;
Costruzione a Design Time dei Serializzatori per i Proxy
Generazione attraverso tool da riga di comando sgen.exeIntegrazione in VIsual Studio
Semplificazione nell’utilizzo delle Default Credential
service.UseDefaultCredentials = true
Altre Estensioni alla v2.0
WSE è Security
WSE 3.0
Semplificare lo sviluppo di Semplificare lo sviluppo di Web Service SicuriWeb Service Sicuri
Semlpificare lo sviluppo Semlpificare lo sviluppo di soluzioni Service Orienteddi soluzioni Service Orientedutilizzando WS-* protocolsutilizzando WS-* protocolse .NET Framework v2.0e .NET Framework v2.0
WSE v3.0 con .NET WSE v3.0 con .NET Framework v2.0 strada principale versoFramework v2.0 strada principale verso
WFC ( Indigo)WFC ( Indigo)
IndigoIndigo
WSE 3.0Applicazione di WS-Security con scenari attraverso le Policy
Descrivono i requisiti per i messaggi in ingresso ed in uscita attraverso Policy AssertionSuperano le limitazioni delle Policy in WSE 2.0
Request e Response separatiComplessità , necessita di pensare a basso livello alle singole funzionalità ed aggregarle
Supporto di tool per Visual Studio 2005Estensione dell’ ASMX programming model
Trasporti alternativi es. TCPHosting environment alternativi es. Console appsMessaging APIs ancora supportate ma deprecate
SoapClient, SoapService
Message Transmission Optimization Mechanism (MTOM)
MTOM sostituisce DIME & WS-Attachments
Turnkey Security ScenarioBasati su industry best practiceOgni scenario rappresenta una assertion
UsernameForCertificate
AnonymousForCertificate
UsernameOverTransport
Kerberos
MutualCertificate
WSE 3.0 Session ManagementStateful SCTs
WSE 2.0 richiede che il servizio mantenga lo stato del SCT In WSE 3.0 lo stato può essere mantenuto con lo stesso SCTPermette al SCT di ristabilire una sessione
SCT CancellationIn WSE 2.0 SCT scade a timeoutIn WSE 3.0 c’è la possibilità di cancellare una session
Unifica le attuali tecnologie MS distribuite in un modello unicoAppropriato per l’uso on-machine, cross machine, and cross Internet
Modello di programmazione unificato per costruire rapidamenteservice-oriented application
per Windows
Interoperabile con applicazioni di altre piattaforme con ampio supporto per WS*-Architecture Integrabile con gli altri windows distributed stacks
UnificazioneUnificazione
IntegrazioneIntegrazione
ServiceServiceOrientationOrientation
Windows Communication Foundation
(Indigo)
Implementa le best practices per costruire applicazioni distribuite basate sui principi della service orientation
ApplicationApplication
Service ModelService Model
MessagingMessaging
Hosting Hosting EnvironmentsEnvironments ASP.NETASP.NETASP.NETASP.NET AvalonAvalonAvalonAvalon WinFormWinFormWinFormWinForm NT ServiceNT ServiceNT ServiceNT Service COM+COM+COM+COM+
TCPTCPChannelChannel
TCPTCPChannelChannel
HTTPHTTPChannelChannel
HTTPHTTPChannelChannel
QueueQueueChannelChannelQueueQueue
ChannelChannel
SecureChannelSecure
ChannelReliableReliableChannelChannelReliableReliableChannelChannel
Instance Instance BehaviorBehaviorInstance Instance BehaviorBehavior
Throttling Throttling BehaviorBehavior
Throttling Throttling BehaviorBehavior
Type Integ. Type Integ. BehaviorBehavior
Type Integ. Type Integ. BehaviorBehavior
TransactionTransactionBehaviorBehavior
TransactionTransactionBehaviorBehavior
ConcurrencyConcurrencyBehaviorBehavior
ConcurrencyConcurrencyBehaviorBehavior
ErrorErrorBehaviorBehavior
ErrorErrorBehaviorBehavior
MetadataMetadataBehaviorBehaviorMetadataMetadataBehaviorBehavior
BinaryBinaryEncoderEncoderBinaryBinary
EncoderEncoder
Text/XMLText/XMLEncoderEncoder
Text/XMLText/XMLEncoderEncoder
…………
……
…………
WCF Architettura
WASWASWASWAS
Client e Service
ServiceService
MessageMessage
ClientClient
Endpoint
ServiceServiceClientClient
EndpointEndpoint
EndpointEndpoint
EndpointEndpoint
EndpointEndpoint MessageMessage
Address Binding Contract
Address, Binding, Contract
ServiceServiceClientClient
EndpointEndpoint
EndpointEndpoint
EndpointEndpoint
EndpointEndpoint MessageMessage
Dove ? Come ? Cosa ?
ABC
A B C
A B C
A B C
Inside Binding
Transport
IPCMSMQ
Custom
TCP HTTP
ProtocolEncoders
Binary
Text
Custom
.NETTX
Custom
Security RM
BindingHTTP Text TXSecurity RM
BasicHttpBindingWsHttpBindingWsDualHttpBinding
Binding
NetTcpBindingNetNamedPipeBindingNetMsmqBindingNetPeerTcpBinding
InteroperabInteroperabiliili
WCF / WCFWCF / WCF
Windows Activation Service Windows Activation Service (WAS)(WAS)
HTTP.SYHTTP.SYSS
TCP TCP Transport Transport ListenerListener
Named Pipes Named Pipes Transport Transport ListenerListener
HTTP HTTP Listener Listener Adapter Adapter
(IIS7)(IIS7)
NP Listener NP Listener AdapterAdapter
TCP Listener TCP Listener AdapterAdapter
Windows Activation Service
Nuovo modello di attivazione unificato condiviso da ASP.NET, IIS7, e WCF
Supporto di protocolli multipli
WAS/IIS7 Architecture
W3SVCW3SVC
Application PoolApplication Pool
Application Application
Application Application
Application
Application PoolApplication Pool
Application Application
Application Application
Application
Application PoolApplication Pool
Application Application
Application Application
Application
Application PoolApplication Pool
Application Application
Application Application
Application
Application PoolApplication Pool
Application Application
Application Application
Application
Application PoolApplication Pool
Application Application
Application Application
Application Windows Activation ServiceWindows Activation Service
Config MgrConfig Mgr
Process MgrProcess Mgr
HTTP.SYS
HTTP MgrHTTP Mgr
HTTP.SYS Indigo Net.TCPListener
Indigo Net.PipeListener
IIS 7.0 Benefici ArchitetturaProcess Activation GeneralizzatoSupporto Estendibile multi-protocol Health Management ConfigurabileSide by Side deploymentUnified Management ModelCompletamente Componentizzato
Web.config
Web.config
Web.config
Applicationhost.config
Guida verso WCFASMX
Quando siamo in dubbio,... usiamo ASMX
WSEASMX + WS-* in particolare Sicurezza
Enterprise ServicesPer servizi aggiuntivi (Tx Distribuite)
essenzialmente x-machine communication dentro i confini del servizio
System.MessagingPer il messaging
Remotingx-domain & custom transport
ASMX Guida
UtilizzareConformance claim “Service” interfaceDifferenti indirizzi per ciascun binding“Open content model” per i dati
Evitarerpc/encodedASP.Net state o “dipendenze dal trasporto” (esempio: HttpContext)SoapExtension
WSE Guida
Utilizzare I suggerimenti della ASMX guidaHTTP transport“Turnkey” policy (WSE3)MTOM (WSE3)
EvitareQualunque tipo di estensioni da SoapPortCustom transportIXmlElement per i data typeDIME
Da WSE a Indigo Codice Client
public class myHelloWorld{ static void Main (string[ ] args) {
HelloWorldWSE helloWorld = new HelloWorldWSE();
string response = helloWorld.Hello("hello");}
}
HelloWorld helloWorld = new HelloWorld();
Note: Modifiche configurative richieste
Da WSE a Indigo Codice Server
using Microsoft.Web.Services3;
[WebService]class HelloWorld { [WebMethod] public string Hello (string text) { MessageSignature signature = (MessageSignature)
RequestSoapContext.Current.Security.Elements[0]; if (!signature.SigningToken.Principal.IsInRole("BUILTIN\
Administrators")) throw new AuthorizationException("Access denied"); return String.Format("Hello, {0}", text); }}Note: Configuration entry changes are required
using System.ServiceModel;
[PrincipalPermission(SecurityAction.Demand, null, "BUILTIN\Administrators")]
[ServiceContract]
[OperationContract]
RiepilogoLa piattaforma applicativa Microsoft è pensata per materializzare “Connected System”I Web Service sono una componente fondamentale e la piattaforma
Roadmap chiara e definita verso Windows Communication Foundation (WCF)
Supporto migliorato in .NET v2.0 perInteroperabilità, Produttività, Estendibilità
WSE 3.0 porta WS-Security in .NET 2.0Percorso di migrazione\interoperabilità per WCF garantito
© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Policy in WSE 3.0Descrivono i requisiti per i messaggi in ingresso ed in uscita attraverso Policy AssertionSuperano le limitazioni delle Policy in WSE 2.0
Request e Response separati
Complessità , necessita di pensare a basso livello alle singole funzionalità ed aggregarle
Policy files semplificatiSemplificazione con i turnkey security assertion
Nuovo object model per le policy serviceProxy.SetPolicy("ClientPolicy");
Utilizzo di attributi sia lato Server che Client[Policy("UserNameOverX509")]
Policy Pipeline ArchitectureLe Policy decrivono la input Le Policy decrivono la input
pipelinepipelineInput Input
Soap MessageSoap Message Se
curity
Se
curity
Tra
cing
Tra
cing
Cu
sto
mC
us
tom
Se
curity
Se
curity
Tra
cing
Tra
cing
Cu
sto
mC
us
tom
EsecuzioneEsecuzioneCodice Codice
ApplicativoApplicativoOutputOutputSoap MessageSoap Message
Le Policy assertion Le Policy assertion trasformano il trasformano il
messaggiomessaggio
… … e si esegue la output Pipelinee si esegue la output Pipeline
Turnkey Security ScenarioUsernameForCertificate
Application Application ServerServer
InternetInternet IntranetIntranet
Auth con Auth con username/ username/ PasswordPassword
Confidenzialità, e firmaConfidenzialità, e firmarichiesta con client keyrichiesta con client keyprotetta con il certificatoprotetta con il certificatoserverserver
Confidenzialità, e firmaConfidenzialità, e firmarisposta con chiave risposta con chiave fornita dal clientfornita dal client
Username/Password Username/Password per Autenticazioneper Autenticazione
Example Policy Assertionpublic class UsernameOverX509Assertion : SecurityPolicyAssertion{ // constructors public UsernameOverX509Assertion() { } // properties public TokenProvider<UsernameToken> UsernameTokenProvider
{ get { } set { } } public TokenProvider<X509SecurityToken> X509TokenProvider {
get { } set { } } // methods public override SoapFilter
CreateClientInputFilter(FilterCreationContext context) { } public override SoapFilter
CreateClientOutputFilter(FilterCreationContext context) { } public override SoapFilter
CreateServiceInputFilter(FilterCreationContext context) { } public override SoapFilter
CreateServiceOutputFilter(FilterCreationContext context) { } public override IEnumerable<KeyValuePair<string, Type>>
GetExtensions() { } public override XmlSchema GetSchema() { } public override void ReadXml(XmlReader reader) { } public override void WriteXml(XmlWriter writer) { }}
Client con Policy Assertion via CodiceUtilizzo di una Turnkey Security Assertion
StockQuoteClient proxy;Policy myPolicy = new Policy();myPolicy.Assertions.Add(new UsernameOverX509Assertion());proxy.SetPolicy(myPolicy);
Utilizzo di una Custom Policy Assertion e.g. XML Schema Validation
StockQuoteClient proxy;Policy myPolicy = new Policy();myPolicy.Assertions.Add(new MyCustomAssertion());proxy.SetPolicy(myPolicy);
Asymmetric key (X509 Certificate) lento per l’invio di messaggi multipli
WS-SecureConversation definisce il Security Context Token (SCT)
Ottimizzazione del messaging
Veloce nel caso di messaggi multipli (client makes > 2)
Raddoppio del throghput
Sessioni con Secure Conversation
Richiesta per SCTRichiesta per SCT
SCT Issued al clientSCT Issued al client
Messaggi Multipli Messaggi Multipli Firmati e cifrati con SCTFirmati e cifrati con SCT
ClientClient ServerServer
Integrazione con VS2005 e .NET v2.0
Supporto di tool per Visual Studio 2005
Estensione dell’ ASMX programming model
Trasporti alternativi es. TCPHosting environment alternativi es. Console apps
Messaging APIs ancora supportate ma deprecate
SoapClient, SoapService
Estensione del ASMX programming Model Esempio: ASMX Web Service via TCP e Custom Hostpublic class StockServicepublic class StockService System.Web.Services.WebServiceSystem.Web.Services.WebService {{
[WebMethod][WebMethod]public StockQuote[] StockQuoteRequest([string[] public StockQuote[] StockQuoteRequest([string[]
symbols) {symbols) { } } }}
static void Main(string[] args)static void Main(string[] args) {{
Uri to = new Uri( "soap.tcp://StockService/StockQuote");Uri to = new Uri( "soap.tcp://StockService/StockQuote");EndpointReference EPR = new EndpointReference(to);EndpointReference EPR = new EndpointReference(to);SoapReceivers.Add (EPR, typeof (StockService));SoapReceivers.Add (EPR, typeof (StockService));
}}
Supporto per MTOMMessage Transmission Optimization Mechanism (MTOM)MTOM sostituisce DIME & WS-AttachmentsBenefici
Componibile con WS-Security per proteggere anche i dati come il SOAP messageModello di programmazione semplificato e attivazione via config
Riduzione sul cavo della dimensione del messaggio
SecuritySecurity
SemplificaSemplifica
RiduzioneRiduzione
[WebMethod]public byte[ ] GetFileAsBytes (string fileName) { return CreateFileAsBytesResponse (fileName); }
WSE 3.0: La strada verso WCF(Indigo)
Grantita l’interoperabilità on the wire level con WCFSupporto per gli scenari di sicurezza interoperabili
WSE turnkey security assertion allineati con WCF security binding
WSE 3.0 si esegue side-by- side con Indigo
Guide per l’upgrade fornite per la migrazione da WSE 3.0 a WCF