430 likes | 452 Views
Microsoft Web Services Technologies Today. Benjamin Mitchell Independent Consultant Microsoft Regional Director/MVP benjaminm@benjaminm.net http://benjaminm.net. Overview. Sending interoperable messages with ASP.NET Web Services General Issues Around Services
E N D
Microsoft Web Services Technologies Today Benjamin Mitchell Independent Consultant Microsoft Regional Director/MVP benjaminm@benjaminm.net http://benjaminm.net
Overview • Sending interoperable messages with ASP.NET Web Services • General Issues Around Services • Understanding advanced WS-* protocols • Supporting advanced WS-* protocols with the Web Services Enhancements • Managing Business Processes with BizTalk 2004
ASMX Messaging • Easiest way to send messages via SOAP • Create an *.asmx file • Write a class • Decorate methods with [WebMethod] • OneWay or RequestResponse
Secret Look at the Future [WebMethod(IsInteroperableFastScalableAndReliable=true)] public bool DoSomething() { … }
ASMX 2.0 Improvements • Interoperability • WS-I Base Profile 1.1 Conformance • SOAP 1.2 support • Extensibility • Custom serialization and streaming • Custom proxy code generation
ASMX 2.0 Improvements • Client Programming Model • Easy to use async programming model • Easy databinding • Type sharing across Web services • Performance • Lowered startup latency • Lowered bandwidth utilization through compression • Hosting in any AppDomain with HttpListener on top of HTTP.SYS
Real Time Cache 15min Refresh Routing Based on User Typical Success Story: Danske Bank Institutional Partners Danske Bank Web Services Stock quotes Bond quotes Currency trading ERP Excel WSE Win2K Other Web Service XML Politiken Portal Mainframe Politiken Readers
Problems with ASMX • Simple programming model is not explicit about boundaries • Can be too RPC like • Limited to HTTP • Difficult extension mechanism • Does not support the more advanced WS-* specifications
Schema First[right on the wire] Message Design: Contract First Code First[easy to program]
Does Schema lead to better versioning? <schema targetNamespace="http://people" xmlns="..."> <element name="person"> <complexType> <sequence> <element name="name" type="string"/> <any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </sequence> <anyAttribute processContents="lax"/> <attribute name="version" type="string" use="required"/> </complexType> </element> </schema>
UDDI 2.0 WSDL 1.1 SOAP 1.1 XSD 1.0 XML 1.0 HTTP(S) Is Base Profile Conformance Enough? • Do we need a Base Profile for Schema?
“Staple” Pull relevant specs into scope “Redline” Add constraints on use of those specs “Glue” Define missing bits between specs Some will migrate back into specs SOAP 1.2 WS-Addressing WS-Metadata Exchange WSDL 1.1 WS-Discovery WS-Eventing What’s the Profile Recipe: Staple, Redline, Glue ThisModel Metadata ThisDevice Metadata Action Filter Conformance Claim Policy Assertions Policy Assertions
Interoperability Recommendations • General Recommendations • Use XSD first to define messages • Keep to the 9 primitive types outlined by XSD • xsd:byte, xsd:boolean, xsd:dateTime, xsd:double, xsd:float, xsd:int, xsd:long, xsd:string, xsd:short • Watch those arrays! • Watch those NULL values! • Watch those xsd:dateTimes!
Proving that the protocols can work: Web Services Enhancements
WS-* Architecture Profiles and Infrastructure Metadata Devices Profile WS-Management WS-Federation Assurances WS-Secure Conversation WS-Business Activity WS-Metadata Exchange WS-Trust WS-Atomic Transaction UDDI WS-Security WS-Reliable Messaging WS-Coordination WS-Policy Messaging WSDL SOAP WS-Addressing MTOM XML Schema Foundation XML Infoset XML 1.0 XML Namespaces MIME SOAP / HTTP
WS-* Specification Process Specification Published Feedback & Interop Workshops Revise / republish spec Standards Org Profiles Step 3 Standardization Step 1 Develop Step 2 Broader Participation Step 4 Profiling Industry Participation Process reconciles conflicting goals • Quality of engineering • Time to market • Breadth of industry support
Status Step 1-2 Step 2 Step 3-4 Infrastructure and Profiles Metadata WS-Federation WS-Management Devices Profile Assurances WS-Secure Conversation WS-Business Activity WS-Metadata Exchange WS-Trust WS-Atomic Transaction UDDI WS-Security WS-Reliable Messaging WS-Coordination WS-Policy Messaging WSDL SOAP WS-Addressing MTOM XML Schema Foundation XML Infoset XML 1.0 XML Namespaces MIME SOAP / HTTP
Delivering WS-* - Microsoft Windows Server 2003 “R2” Wave Longhorn Wave Indigo • Wire-level interop with WSE3.0 plus • MTOM • SAML Token Profile 1.0 • Security Policy • WS-Federation Active Client • Enables easy to build STS • WS-RM 2005/02, Policy • WS-AT/WS-C 2005/02, Policy • WS-Policy/PolicyAttachment • WS-MEX Easy to use Digital Identity Active Directory: Federation WSD API: Device Profile VS 2005 + WSE 3.0 • SOAP 1.1, 1.2 / WSDL 1.1 • MTOM • WS-Addressing 2004/08 (or REC) • WS-Security 1.0 (U/P, X509, Kerberos) • WS-Secure Conversation • WS-Trust • WS-Policy • Limited wire interop with WSE2.0 AD Federation Services in R2 • Cross-organizational Identity Federation • Web SSO SQL Server 2005 • SOAP 1.1, 1.2 / WSDL 1.1 • WS-Security 1.0 Management • WS-Management VS2003 + Web Services Enhancements (WSE) 2.0 • SOAP 1.1 / WSDL 1.1 • WS-Addressing 2004/03 • WS-Security 1.0 (U/P, X509, Kerberos) • WS-Secure Conversation 2004/04 • WS-Trust 2004/04 • WS-Policy
Delivering WS-* - Other vendors WS-Management WS-XFer / Enum WS-SecureConv WS-Federation WS-Addressing WS-Security SOAP / WSDL Messaging WSDL WS-Trust WS-RM WS-AT RM, TX Mgmt Security Devices Profile WS-Discovery Devices WS-Policy MEX Metadata
WSE supports emerging standards • Implementation of additional WS-* protocols • Security, Policy and Addressing • Support for multiple protocols • Improved support for explicit messaging • Separate pipeline that can be hooked into ASP.NET or hosted • Ability to create SOAP Intermediaries
How does WSE work? User Code SoapContext Policy Trace Referral Custom Security Security Token Manager Custom Filters
Secure CommunicationProtocol-level security • Encrypts the entire message • Sender must trust all intermediaries • Restricts protocols that can be used SSL Security SSL Security
Secure CommunicationMessage-level security • End to end message security independent of transport • Supports multiple protocols and multiple encryption technologies • Encrypt only parts of the message • Sender need only trust endpoint
WSE Security • Secure the message rather than the wire • Secure various parts of the message • Mechanism for carrying security tokens • Independent kind of security token • Support for Kerberos, X509 Certificate and Username/Password • Future support for SAML and other identity tokens
WSE Policy Driven Architecture • Beyond WSDL, what else is needed to describe a Web service? • These other attributes of a service can be described with WS-Policy • XML-based language • Complex: <Or>, <ExactlyOne>, etc… • WSE provides a Policy Framework with send-side and receive-side policy support
WSE Messaging • Support for one-way messaging or client/server model • Full support over dispatch and handling of the messages • Low-level queue for receiver processing.
WSE 2.0 Messaging • WSE 2.0 includes a SOAP-based messaging API • Transport independence • Intra-AppDomain • For testing • Raw TCP • HTTP • Host Independence • Windows application • ASP.NET • Windows Service
WSE 3.0 Feature Highlights • .NET Framework Integration • Extend ASMX programming model on all transports • 64 bit support • Visual Studio 2005 IDE integration • Performance Improvements • Interoperability and Conformance • Policy assertions for standard security scenarios • Wire level interoperability with Indigo and 3rd party stacks • MTOM – Message Transmission Optimization Mechanism • WS-* updates • SOAP 1.2 • Tools • Security settings tool for standard security scenarios • Configuration file migration from WSE 2.0 to WSE 3.0
WS-Security: Interop with Released Products • Requires a configuration change at WSE service • Requires a configuration change at WebSphere service or client • WebSphere 6.0 followed OASIS Oct X509 token profile errata for the value of wsse:KeyIdentifier\@ValueType, which differs from OASIS standard. • WebLogic 8.1.4 uses wrong encryption type on the Body element. Fix is available from BEA support services.
Can I use WSE today? • Support policy is the same as .NET 1.1 • New versions likely to break previous • Side-by-side support so far
Issues with WSE • Complex to setup and use • Requires developers to muck with the plumbing • Small but breaking changes even with point releases • HTTP is still the only protocol for interoperability • Unsupported demos over TCP with Apache Axis
WSE 3.0 - The Road to Indigo • WSE supports service orientated Architectures • Explicit boundaries • Autonomy • Define contracts with schema • Describe requirements with policy • WSE 3.0 is the road to Indigo • Support for standard interoperable security scenarios • Wire level interoperable with Indigo Beta 1 • WSE 3.0 runs side-by-side with Indigo • Upgrade guidance will be provided from WSE 3.0 to Indigo
Process Logic Composite Application Exploiting SOA: Composite Applications • Composite applications can be created using process logic to invoke business services Business Service Business Service Business Service Application A Application B Application C
Implementing Process Logic: Orchestrations • The most commonly used term for process logic today is orchestration • Orchestrations can benefit from a platform expressly designed to support them • An application server isn’t enough • The goal: Business Process Management (BPM) • Supported by a BPM server
Development Tools Management Tools Workflow Services Process Monitoring Services Business Rules Services Other Services Orchestrations Orchestration Runtime Services Communication Services Supporting Orchestrations: BPM Servers Application Server Operating System
Visual Studio .NET Health and Activity Tracking (HAT) Orchestration Designer Human Workflow Services Business Activity Monitoring (BAM) Business Rules Engine More BizTalk Server 2004 Engine Microsoft’s BPM Server: BizTalk Server 2004 Orchestrations .NET Framework Windows
.NET Web Services Platforms • ASMX is the current Web service platform • Supports basic profile for simple services • Doesn’t implement WS-* specifications • WSE is a platform extension • Can be used to extend ASMX behavior • Can be used standalone without ASMX • Provides support for several WS-* specs • Indigo is the next-generation Web service platform • Provide a unified programming model along with comprehensive support for WS-* specs • BizTalk is a Business Processes Management server