Interoperability and Integration using Web Services Malek Kemmou
Interoperability and Integration using Web Services Malek Kemmou Technology Architect, Application Platform Microsoft Middle East & Africa malek@microsoft. com
Agenda • • • What is Interoperability Services, Objects and Messages Common Interoperability Problems WS-I Basic Profile 1. 0 The Contract First Approach Wrapping existing Code with Web Services
What is Interoperability • Disparate systems working meaningfully together – Multiple Vendors / Platforms – Communication • Transport Protocol • Data Format • Common Interface – Meaning • Objects (RPC) • Messages (Services) • Documents (EDI …)
Web Services • Multiple Vender / platform – Vender support – Open Standards • Communication – Standard Web Protocols for transport (http, smtp …) – Standard "format" for Data Exchange (XML/SOAP) – Standard Language for interface description (WSDL) • Meaning ?
RPC vs. Message Approach Client Service Transport Obj Both. Serialize source and destination must understand Deserializethe object Client Service Transport Create Message Interpret Message Source and destination may see message differently
RPC vs. Message Approach Application A Application B Programming Language DBMS OS Object Model App Server Transport Protocols Messages Programming Language DBMS Object Model OS App Server
Message Approach • Advantages – Loose coupling – Contract Based (WSDL) • Total independence of implementation • Total independence of object model • Total independence of development platform – Only message format is important
A first approach to services • Create the service • Auto-Generate its contract • Service consumers use the contract to create a client
First look at WS
An Interop test • Hello World : Works great • Nested Array : – string[][] my. Array • Very simple Nested struct – public struct Contact { public string last. Name; public string first. Name; public string telephone; public Address address; } public struct Address { public string street; public string city; public string country; } – Datetime – Untyped Data. Set (. NET) – Typed Data. Set (. NET)
Test Results • Hello. World works • Nested struct Works • Nested. Array : some issues – Schema interpretation • Date. Time : –. NET doesn’t accept null Date. Time (struct) • Untyped Data. Set – No notion of dynamic schema in java • Typed Data. Set – XML received correctly – No Type generation on java side (unless proprietary APIs are used)
Example • Java Service public java. util. Date Get. Date(){ //may return null } • . Net Client public Date. Time Get. Date(){ //error when return value is null }
Common Interop Problems • Dynamic format – Example : untyped Datasets • Interpretation – Examples : • DTD in the SOAP message • Array. Type attributes • Types – Example : Nillable types • Non conformant WSDL or SOAP
WS-I Basic Profile 1. 0 a • Industry effort to deliver on Interop • WS-I (Web Services Interoperability Organization) – Specification for SOAP – Specifications for WSDL – Specification for UDDI – Conformity Test tools
Multi-Version interop ? • Create Service v 1 – Auto generate WSDL – Use WSDL to create proxy on client • Modify Service (v 2) – Example : add field to data – Auto Generate WSDL – Use WSDL v 2 to create proxy on client v 2 – What happens to clients still on v 1 ?
The contract First Approach • Design the contract First – WSDL that conforms to WS-I Basic Profile • Eventually with evolved version support – Use test tool to test for conformity – Be aware of Arrays and nillable types • On the Server – Generate the interface from the WSDL – Implement the Web Service • On the Client – Generate the proxy from the WSDL
Advantages • "Guaranteed" interoperability – If both client and service Conform to WS-I Basic Profile 1. 0 a • More granular control over contract – Take full advantage of XSD constructs • Additional information (ex : facets) • Possible non object representations • Use of wildcards to allow evolution – Conformity Claims
Designing the WSDL Service Port Binding Operation Message Part Port Type
Generate the Server Interface • WSDL. exe /server & WSDL. exe /classes & WSDL. EXE /si (. Net Framework 2) – Generates the server interfaces – Generates all declared types
Implement the Interface • Public class my. Service : Web. Service, Server. Interface • Implement the Web. Methods
Generate the Client Proxy • WSDL. exe (or Add Web. Reference) – Generates the proxy class – Generates all declared types
Tips & Tricks • For better reuse – Splitting the WSDL (wsdl: import) – Using XSD files (xsd: import) • For flexibility – Make use of wildcards – With WSE (or custom implementation), make use of Policy to allow multiple scenarios
Going Forward • Advanced architectures – Conversation models • Two Way (request/Response) • One Way • Duplex – Service Contract includes policy • To define possible scenarios
Going Forward • Contract First on advanced Web Services (WSE 2) – Contract involves both WSDL and Policy – The same approach applies • Need to implement Policy manually • Visual Studio 2005 – – Visual tools to generate interfaces from contract Support for Nillable types Basic Profile conformance through attributes Intellisense on XML (easier to create WSDL)
Interoperability Recommendations • How about WS-Security? – IBM Web. Sphere 5. 1. 2 • Claim: conformance to OASIS WSS 1. 0 • Reality: X 509 sign limited, X 509 enc WSE->WLS Limited • Good Luck hacking deployment files – BEA Web. Logic 8. 1. 3 • Claim: conformance to OASIS WSS 1. 0 • Reality: X 509 sign OK, X 509 enc WSE->WLS OK – Sun JWSDP 1. 4 • Claim: conformance to OASIS WSS 1. 0 • Reality: X 509 sign OK, X 509 enc OK • Happy XML hacking! <g>
Interoperability Recommendations • More WS-Security Findings • No WS-Secure. Conversation yet from competitors • No WS-Policy yet from competitors – Moving in the right direction with. xml config files • Username/Token Support is sketchy – Digests appear to be difficult to digest – No support for timestamps from competitors • Kerberos Support – No mainstream support – Wedgetail 3 rd party solution
Integration of Web Services • How do I enable Web Services for my existing applications? ‘This is great, but what about my existing applications that don’t support Web Services today? ’
Integration of Web Services • How do I enable Web Services for my existing applications? ‘Yeah, these tend to be Host Systems (mainframes), Client/Server applications (VB and Power. Builder) and other channels’
Integration of Web Services • How do I enable Web Services for my existing applications? ‘…oh, and bear in mind that all of these systems are in production. I run my business on these!’
Enabling Web Services on existing applications • COM – COM+1. 5 components : check. Box enables SOAP on the COM+ components – COM : use COM Interop (managed wrappers) to access and wrap functionality into WS • Java – Java beans, EJB, …etc : • Object brokers and write ASMX WS that wrapp the beans • Write WS in Java • Message and integration Brokers (exemple : Biztalk)
Host Integration • 4 x Primary Integration Options – Direct Data Access • “Give me my 10, 000 customers” – BLI: Business Logic Interface • Application Integration – SLI: Screen Logic Interface • Screen Scraping – Asynchronous Access • “Batch job completed” • All of the above can be abstracted with Web Services
Host Integration • Microsoft Host Integration Server (HIS) 2004 • Transaction Integrator – Wrap business rules with COM or. NET wrapper • • Import COBOL, parse declarations, create interface Publish type library to Component Services application VS. NET and MMC Experience Once in. NET, expose through Web Services Façade
- Slides: 33