SlideShare uma empresa Scribd logo
1 de 33
the wondrous curse of interoperability steve loughran hp laboratories [email_address] january 2003 what interop is, and how to cope
why is S/W dev like mountaineering? all looks fine from 30,000' vision
up close  it's terrifying reality
and it is too late to turn back commitment!
how do you survive? ,[object Object],[object Object],[object Object],[object Object],[object Object]
equipment ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
process, planning, preparation ,[object Object],[object Object],[object Object],[object Object],[object Object]
the Web Services vision XML over HTTP lets everything talk to everything else
problem: sometimes it gets a bit "technical"
Web Services: quick summary .NET Axis  Pocket-SOAP JAX-RPC RI SOAP::Lite kSOAP gSOAP MS STK ...  many languages + many implementations = interop problems many specs
key problem: na ïve and u nrealistic expectations ,[object Object],[object Object],[object Object],[object Object],SOAP is not Corba, RMI, RMI-IIOP, .NET remoting, DCOM(+), or any other classic  remote object invocation mechanism
primitive data types Java bug database bug # 4186775 uint, ulong, char [WebMethod] public ulong Increment(ulong counter) { return counter+1; } [WebMethod]  public char GetChar() { return (char)(32+random.Next(64));  } "The omission of unsigned integral types from Java is somewhat controversial, but they are in fact inessential, if perhaps convenient nonetheless."
enumerations C# bitfield enums [Flags] public enum Rating : int { unknown=0, fun=1, scary=2, hard=4, painful=8 } [WebMethod]  public Rating HowWasIt(String route) { return (Rating)random.Next((int)Rating.painful*2);  } are marshalled as an XML Schema list <>fun scary hard</> that many things (Axis, Castor) cannot handle yet
exceptions ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
framework objects and collections ,[object Object],[object Object],[object Object],&quot;the hashtable problem&quot;
sessions ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[WebMethod( EnableSession=true )] stub. setMaintainSession(true)
no attachments in  Basic .NET 1.0 ,[object Object],[object Object],[object Object],[object Object],[object Object],  .NET WSE   .NET 1.0   Sun JWSDP   Axis DIME SwA
other surprises ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
why did we get into this mess? ,[object Object],[object Object],[object Object],[object Object]
there is no point writing a Web Service unless you want interoperability
who can fix this? the architects: W3C, WS-I the engineers: SoapBuilders you
stay out of trouble ,[object Object],[object Object],[object Object],[object Object]
avoid the big issues ,[object Object],[object Object],[object Object],[object Object],[object Object]
start with the XML Schema ,[object Object],[object Object],[object Object]
drive off the WSDL ,[object Object],[object Object],[object Object],[object Object]
test for interop ,[object Object],[object Object],[object Object],[object Object],[object Object]
ant ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JUnit
drive off the WSDL
ant-based test process
result: you know what to avoid
interop issues:   find them before you fall into them  summary
copyright © 2002-2003 Hewlett-Packard Company read these http://iseran.com/Steve/papers/interop
and maybe these

Mais conteúdo relacionado

Semelhante a The Wondrous Curse of Interoperability

Node js presentation
Node js presentationNode js presentation
Node js presentationmartincabrera
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than YouRobert Cooper
 
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019Icinga
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backendDavid Padbury
 
주로사용되는 Xss필터와 이를 공격하는 방법
주로사용되는 Xss필터와 이를 공격하는 방법주로사용되는 Xss필터와 이를 공격하는 방법
주로사용되는 Xss필터와 이를 공격하는 방법guestad13b55
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkAarti Parikh
 
Raising the Bar on Robotics Code Quality
Raising the Bar on Robotics Code QualityRaising the Bar on Robotics Code Quality
Raising the Bar on Robotics Code QualityThomas Moulard
 
Exploring the Internet of Things Using Ruby
Exploring the Internet of Things Using RubyExploring the Internet of Things Using Ruby
Exploring the Internet of Things Using RubyMike Hagedorn
 
Node.JS| Coffeescript Presentation
Node.JS| Coffeescript PresentationNode.JS| Coffeescript Presentation
Node.JS| Coffeescript PresentationSam Frons
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineRicardo Silva
 
Cloud Formation
Cloud FormationCloud Formation
Cloud FormationAdron Hall
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the restgeorge.james
 
JAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsJAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsChris Bailey
 
Building services on AWS in China region
Building services on AWS in China regionBuilding services on AWS in China region
Building services on AWS in China regionRoman Naumenko
 
Jassa la GeekMeet Bucuresti
Jassa la GeekMeet BucurestiJassa la GeekMeet Bucuresti
Jassa la GeekMeet Bucurestialexnovac
 
Wire It Presentation
Wire It PresentationWire It Presentation
Wire It PresentationEric Abouaf
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJAXLondon_Conference
 

Semelhante a The Wondrous Curse of Interoperability (20)

Node js presentation
Node js presentationNode js presentation
Node js presentation
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than You
 
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
 
주로사용되는 Xss필터와 이를 공격하는 방법
주로사용되는 Xss필터와 이를 공격하는 방법주로사용되는 Xss필터와 이를 공격하는 방법
주로사용되는 Xss필터와 이를 공격하는 방법
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talk
 
Raising the Bar on Robotics Code Quality
Raising the Bar on Robotics Code QualityRaising the Bar on Robotics Code Quality
Raising the Bar on Robotics Code Quality
 
Exploring the Internet of Things Using Ruby
Exploring the Internet of Things Using RubyExploring the Internet of Things Using Ruby
Exploring the Internet of Things Using Ruby
 
Mpi.Net Talk
Mpi.Net TalkMpi.Net Talk
Mpi.Net Talk
 
Node.JS| Coffeescript Presentation
Node.JS| Coffeescript PresentationNode.JS| Coffeescript Presentation
Node.JS| Coffeescript Presentation
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 Engine
 
Cloud Formation
Cloud FormationCloud Formation
Cloud Formation
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
 
Not only SQL
Not only SQL Not only SQL
Not only SQL
 
JAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsJAX London 2015: Java vs Nodejs
JAX London 2015: Java vs Nodejs
 
Building services on AWS in China region
Building services on AWS in China regionBuilding services on AWS in China region
Building services on AWS in China region
 
Jassa la GeekMeet Bucuresti
Jassa la GeekMeet BucurestiJassa la GeekMeet Bucuresti
Jassa la GeekMeet Bucuresti
 
NodeJS for Beginner
NodeJS for BeginnerNodeJS for Beginner
NodeJS for Beginner
 
Wire It Presentation
Wire It PresentationWire It Presentation
Wire It Presentation
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris Bailey
 

Mais de Steve Loughran

The age of rename() is over
The age of rename() is overThe age of rename() is over
The age of rename() is overSteve Loughran
 
What does Rename Do: (detailed version)
What does Rename Do: (detailed version)What does Rename Do: (detailed version)
What does Rename Do: (detailed version)Steve Loughran
 
Put is the new rename: San Jose Summit Edition
Put is the new rename: San Jose Summit EditionPut is the new rename: San Jose Summit Edition
Put is the new rename: San Jose Summit EditionSteve Loughran
 
@Dissidentbot: dissent will be automated!
@Dissidentbot: dissent will be automated!@Dissidentbot: dissent will be automated!
@Dissidentbot: dissent will be automated!Steve Loughran
 
PUT is the new rename()
PUT is the new rename()PUT is the new rename()
PUT is the new rename()Steve Loughran
 
Extreme Programming Deployed
Extreme Programming DeployedExtreme Programming Deployed
Extreme Programming DeployedSteve Loughran
 
What does rename() do?
What does rename() do?What does rename() do?
What does rename() do?Steve Loughran
 
Dancing Elephants: Working with Object Storage in Apache Spark and Hive
Dancing Elephants: Working with Object Storage in Apache Spark and HiveDancing Elephants: Working with Object Storage in Apache Spark and Hive
Dancing Elephants: Working with Object Storage in Apache Spark and HiveSteve Loughran
 
Apache Spark and Object Stores —for London Spark User Group
Apache Spark and Object Stores —for London Spark User GroupApache Spark and Object Stores —for London Spark User Group
Apache Spark and Object Stores —for London Spark User GroupSteve Loughran
 
Spark Summit East 2017: Apache spark and object stores
Spark Summit East 2017: Apache spark and object storesSpark Summit East 2017: Apache spark and object stores
Spark Summit East 2017: Apache spark and object storesSteve Loughran
 
Hadoop, Hive, Spark and Object Stores
Hadoop, Hive, Spark and Object StoresHadoop, Hive, Spark and Object Stores
Hadoop, Hive, Spark and Object StoresSteve Loughran
 
Apache Spark and Object Stores
Apache Spark and Object StoresApache Spark and Object Stores
Apache Spark and Object StoresSteve Loughran
 
Household INFOSEC in a Post-Sony Era
Household INFOSEC in a Post-Sony EraHousehold INFOSEC in a Post-Sony Era
Household INFOSEC in a Post-Sony EraSteve Loughran
 
Hadoop and Kerberos: the Madness Beyond the Gate: January 2016 edition
Hadoop and Kerberos: the Madness Beyond the Gate: January 2016 editionHadoop and Kerberos: the Madness Beyond the Gate: January 2016 edition
Hadoop and Kerberos: the Madness Beyond the Gate: January 2016 editionSteve Loughran
 
Hadoop and Kerberos: the Madness Beyond the Gate
Hadoop and Kerberos: the Madness Beyond the GateHadoop and Kerberos: the Madness Beyond the Gate
Hadoop and Kerberos: the Madness Beyond the GateSteve Loughran
 
Slider: Applications on YARN
Slider: Applications on YARNSlider: Applications on YARN
Slider: Applications on YARNSteve Loughran
 

Mais de Steve Loughran (20)

Hadoop Vectored IO
Hadoop Vectored IOHadoop Vectored IO
Hadoop Vectored IO
 
The age of rename() is over
The age of rename() is overThe age of rename() is over
The age of rename() is over
 
What does Rename Do: (detailed version)
What does Rename Do: (detailed version)What does Rename Do: (detailed version)
What does Rename Do: (detailed version)
 
Put is the new rename: San Jose Summit Edition
Put is the new rename: San Jose Summit EditionPut is the new rename: San Jose Summit Edition
Put is the new rename: San Jose Summit Edition
 
@Dissidentbot: dissent will be automated!
@Dissidentbot: dissent will be automated!@Dissidentbot: dissent will be automated!
@Dissidentbot: dissent will be automated!
 
PUT is the new rename()
PUT is the new rename()PUT is the new rename()
PUT is the new rename()
 
Extreme Programming Deployed
Extreme Programming DeployedExtreme Programming Deployed
Extreme Programming Deployed
 
Testing
TestingTesting
Testing
 
I hate mocking
I hate mockingI hate mocking
I hate mocking
 
What does rename() do?
What does rename() do?What does rename() do?
What does rename() do?
 
Dancing Elephants: Working with Object Storage in Apache Spark and Hive
Dancing Elephants: Working with Object Storage in Apache Spark and HiveDancing Elephants: Working with Object Storage in Apache Spark and Hive
Dancing Elephants: Working with Object Storage in Apache Spark and Hive
 
Apache Spark and Object Stores —for London Spark User Group
Apache Spark and Object Stores —for London Spark User GroupApache Spark and Object Stores —for London Spark User Group
Apache Spark and Object Stores —for London Spark User Group
 
Spark Summit East 2017: Apache spark and object stores
Spark Summit East 2017: Apache spark and object storesSpark Summit East 2017: Apache spark and object stores
Spark Summit East 2017: Apache spark and object stores
 
Hadoop, Hive, Spark and Object Stores
Hadoop, Hive, Spark and Object StoresHadoop, Hive, Spark and Object Stores
Hadoop, Hive, Spark and Object Stores
 
Apache Spark and Object Stores
Apache Spark and Object StoresApache Spark and Object Stores
Apache Spark and Object Stores
 
Household INFOSEC in a Post-Sony Era
Household INFOSEC in a Post-Sony EraHousehold INFOSEC in a Post-Sony Era
Household INFOSEC in a Post-Sony Era
 
Hadoop and Kerberos: the Madness Beyond the Gate: January 2016 edition
Hadoop and Kerberos: the Madness Beyond the Gate: January 2016 editionHadoop and Kerberos: the Madness Beyond the Gate: January 2016 edition
Hadoop and Kerberos: the Madness Beyond the Gate: January 2016 edition
 
Hadoop and Kerberos: the Madness Beyond the Gate
Hadoop and Kerberos: the Madness Beyond the GateHadoop and Kerberos: the Madness Beyond the Gate
Hadoop and Kerberos: the Madness Beyond the Gate
 
Slider: Applications on YARN
Slider: Applications on YARNSlider: Applications on YARN
Slider: Applications on YARN
 
YARN Services
YARN ServicesYARN Services
YARN Services
 

Último

Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 

Último (20)

Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 

The Wondrous Curse of Interoperability

  • 1. the wondrous curse of interoperability steve loughran hp laboratories [email_address] january 2003 what interop is, and how to cope
  • 2. why is S/W dev like mountaineering? all looks fine from 30,000' vision
  • 3. up close it's terrifying reality
  • 4. and it is too late to turn back commitment!
  • 5.
  • 6.
  • 7.
  • 8. the Web Services vision XML over HTTP lets everything talk to everything else
  • 9. problem: sometimes it gets a bit &quot;technical&quot;
  • 10. Web Services: quick summary .NET Axis Pocket-SOAP JAX-RPC RI SOAP::Lite kSOAP gSOAP MS STK ... many languages + many implementations = interop problems many specs
  • 11.
  • 12. primitive data types Java bug database bug # 4186775 uint, ulong, char [WebMethod] public ulong Increment(ulong counter) { return counter+1; } [WebMethod] public char GetChar() { return (char)(32+random.Next(64)); } &quot;The omission of unsigned integral types from Java is somewhat controversial, but they are in fact inessential, if perhaps convenient nonetheless.&quot;
  • 13. enumerations C# bitfield enums [Flags] public enum Rating : int { unknown=0, fun=1, scary=2, hard=4, painful=8 } [WebMethod] public Rating HowWasIt(String route) { return (Rating)random.Next((int)Rating.painful*2); } are marshalled as an XML Schema list <>fun scary hard</> that many things (Axis, Castor) cannot handle yet
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. there is no point writing a Web Service unless you want interoperability
  • 21. who can fix this? the architects: W3C, WS-I the engineers: SoapBuilders you
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 30. result: you know what to avoid
  • 31. interop issues: find them before you fall into them summary
  • 32. copyright © 2002-2003 Hewlett-Packard Company read these http://iseran.com/Steve/papers/interop

Notas do Editor

  1. presentation for padnug,org; http://www.padnug.org/padnug/WebServicesSIG.aspx Interop: What were they thinking of?
  2. A bit of a distraction before we get into the detail, with the definitive mountaineering metaphor slideshow. Most uses of mountaineering &apos;many people work on an Everest expedition, only two summit&apos; are done by HR and managers who don’t know the details of modern Alpinism. But I do, so here is a comparison accompanied by photos mostly from Ranier, some from Mt Hood and one from the Alps (Ecrins Massif).
  3. The only way out is through.
  4. There is one big difference: get it wrong in the mountains and you are dead, survivors make money selling airport books about near-death-experiences, for reading by passengers who don’t find fly-by-wire planes programmed by us developers scary enough. Get it wrong in most software projects and you are still alive, just with a different employer. And those who survive in the same company end up vilified and fielding support calls.
  5. Note that a cellphone actually goes onto the list of both types of entertainment.
  6. -Set off early so that if anything goes pear shaped you have most of the day -know what your objectives are, have maps, milestones, don’t be afraid to replan -don’t climb Rainier (or even Mt hood) without some practice under your belt. And that means more than practice of nice weather days out; you need to practice things going wrong: crevasse rescue, bad weather days, dehydration days. -send the person most likely to fall into a crevasse first. Its better for everyone if things go wrong ahead rather than behind or in the middle of the team. This doesn’t mean they are expendable, just more likely to find problems. Which brings us to web services, interop and the testing, thereof.
  7. the 30,000&apos; view
  8. Up close. Good days ::= days when the network is good, person writing the service knew what they were doing, no attempt to share binaries, manage sessions, etc.
  9. if you are ignorant of SOAP, here is the one page reminder. note that WSDL is optional, SOAP messages have envelopes, headers and bodies, and there are two ways of encoding stuff: RPC/Encoded and DOC/literal
  10. Sun don’t think you need unsigned datatypes, therefore you cant work with any service that uses them. XSD doesn’t have a char datatype, so there isn&apos;t a standard way to send them over the wire. &amp;quot;What were they thinking of?&amp;quot;
  11. We can&apos;t even do enums reliably if the far end cant handle the XSD space-separated-list-in-an-XML-element form of lists. This isnt a fundamental issue, just an engineering one.
  12. See the JAX-RPC spec for Java exception handling. Basically JAX-RPC is trying to marshall Java exceptions in a way that they can be recreated. This is because Java methods need to state the exceptions they throw, the exception set can be included in the WSDL, client versions written, etc. But how does this work across languages? How does it work across implementations of JAX-RPC?
  13. The problem here is that just because you can send stuff over the wire, doesn’t mean the far end can handle it. Sometimes they cant, sometimes they can, but not by creating the obvious bindings you&apos;d expect.
  14. The flaws with cookies are well known, with the extra caveat that whoever maintains java.net.UrlConnection has never read the bit of the HTTP spec that covers them. For that, the pains with different paths to the service serving up cookies differently, makes them something to avoid. Also not all clients support them, and it aint always by default. e.g Apache Axis, you must enable it client side. SoapHeaders are the cleaner and more elegant way. But it does require Dynamic endpoints: returning new URLs after a login. I like this model, but it is hard to work with, too &apos;RESTful&apos;; but maps nicely to objects. .NET remoting gives you this. API: include session ID in messages. Ugly, at odds with AOP, but works well, works consistently, and is easily tested. Guess which I use. see W3c: http://www.w3.org/TR/soap12-part0/ on the subject of SOAP and GET &amp;quot;What were they thinking of?&amp;quot;
  15. You could maybe point the blame at this for XML; there is no way to reliably include arbitrary binary code in an XML file. If only they&apos;d had a length+data way of encoding binary, life would be simple. The other blame is at Team .NET for leaving out SwA because DIME was better. Maybe it is, but they didn’t ship with DIME either. So leaving out SwA was either a schedule driven play or an attempt to stop SwA becoming ubiquitous. For now: xs:base64binary, xs:hexBinary. But try sending 2GB of print data in base 64 format. Actually, try sending 2GB of data in any SOAP attachment format.
  16. This is just other little showstoppers that will hurt you if you are not careful.
  17. From a CS perspective, SOAP+XSD+WSDL is ugly, only their mothers would love them, and even then they&apos;d hope the next kid will look better. But ugly is irrelevant. (nb, notice that Corba can have interop; but when used as a C++ to C++ system it is generally ok, because everything is well specified in the very large CORBA spec and its mostly one language everywhere)
  18. Why are you writing a web service unless you want people to call you? And can you dictate what language they will be using, or do you want all customers, regardless of what they call you with. But lets look at what we have: +finding: UDDI, WSIF, SLAv2) +binding: WSDL +invocation: SOAP +data representation: XSD The finding and binding features of SOAP, indeed WSDL on its own, are what makes SOAP so interesting today. The fact that interop is a big issue is a detail, compared to the profound notion that you can browse to a web page, download some description of endpoints and suddenly start posting structured data to it.
  19. WS-I: I havent seen an enum or session working group here, that is the kind of implementation detail that architects don’t bother with. Plus WS-I is very political. SoapBuilders: This is where interop does seem to get solved. But we could do with Collections, exceptions, , char, enum and a big fat &apos;guide to interoperability&apos; paper Axis: well, you are axis devs if you are users; work with us on the docs, exceptions, better interop tests, etc. W3C: add xml headers to HTTP GET s.t. SOAP GET works; char on Schema. Sun: give us unsigned data, add HashTable &amp;c to JAX-RPC, fix the exceptions model. MS: Give us SwA on .NET, document DataSet, add HashTable &amp;c. Oh, and Zip support too; you can&apos;t send or receive zipped data right now. You: fix your own app to not have interop issues.
  20. Question: what are the hazards in this picture, taken below the summit of Mt Hood? Most people think of the usual ice and rock problems, but a big safety issue here is that bare patch of rock to the centre-right of the scene. Anything at that angle at that altitude should normally be covered in snow –but it isnt. This could be because of an avalanche, but there is no crown-wall, and you&apos;d expect to see the base layer of snow unless the low-friction base was actually frozen turf. The reason the rocks are bare is because we are climbing a volcano, this is the crater, and they are being heated by gases coming up from below. The atmosphere near the rocks is too toxic to be breathable. If you have done your research, you know this. If you haven&apos;t, and you go over to take a look, you are in trouble.
  21. This is all very dumbed down, but it is pragmatic. Arrays work. Simple objects with attributes and get/set methods work. If you keep everything simple and avoid well known trouble spots, all should work
  22. This is a hard one. I hate looking at WSDL, it is just so convoluted. Same for XSD, though that one I can handle, slowly, even if something like XML Spy or VS.NET is needed to make it easier. Omniopera and CapeClear are alternatives. One q: Why do you need to buy a new tool to edit WSDL files? Was there ever such a thing as an IDL editor other than a text editor? And so somehow WSDL is better than IDL? I don’t understand that.
  23. The way to test for interop is to call your service from different toolkits and languages, which means replicating the usual client coding process. To do this in a test case environment, you need to automate the process. I&apos;m going to look at automating the Java side test process
  24. These two tools are the secret of why Java projects are staying in control; everyone is using the same test framework, and the same build tools, tools that understand testing is integral. Together nothing gets deployed that doesn’t pass the tests. As well as using them for pure Java dev, we can use them for .NET interop testing.
  25. I&apos;m not going to demo this, just show that you can work with Schema and WSDL as if it were an IDL spec of a service, that both the service and the clients adhere to.
  26. this is our test workflow, what we will do in Ant.
  27. This is the output: a list of how many tests ran, what the failures were.
  28. And that&apos;s it. We&apos;ve looked at areas of trouble, ranging from language issues (uint), framework differences and just bits of SOAP that arent nailed down yet. If your app strays into the trouble areas, you are going to get hurt. The trick is not to stay off the mountain, but to go through the crevasses carefully. Probe the snowbridges, know where trouble lies and plan your route, and just be careful.
  29. Java Development with Ant, by me and Erik, shows how to use ant, how to interop test Axis servers with .net clients, set up continuous integration servers and many other useful things. also, http://iseran.com/Steve/papers.html
  30. Patterns of enterprise app arch by martin fowler: good enterprise patterns, including a critique of EJB flaws: maybe too much emphasis on data binding, not the other aspects of big server side apps Scotland&apos;s Winter Mountains, Martin Moran. Best book on mountaineering ever. Full of facts, figures and anecdotes. flaws: second edition still covers the nutritional values of fried breakfasts and hangovers, but omits the religious debate between bars of chocolate and honey slices. Also by virtue of a focus on Scotland, has nothing on glacier work.