Interoperability

advertisement
Interoperability
Eric M. Dashofy*
ICS 221
November 12, 2002
*With special thanks to David Rosenblum from whom some of this material is blatantly stolen.
Overview
Characterization of the Problem

With a small attempt to taxonomize
Taxonomy of Solutions
Investigation of Specific Solutions


CORBA, JMS, Siena, and other middleware
XML
Definitions
Interoperability

The ability for two or more (independentlydeveloped) (software) components to
interact meaningfully
 Communicate meaningfully
 Exchange data or services
Why is Interoperability Important?
One (perhaps the) dominant challenge in
software engineering

We can’t live without it
 Large systems are no longer built from first principles
(nor can they be)

We shouldn’t live without it
 Component reuse has the potential for enormous cost
savings


Cited by Brooks as a potential silver bullet
We need it to maintain the living we do now
 We are burdened with un-rebuildable legacy systems


cf. SAABRE, Air Traffic Control
It is induced by the state of computing now
 Increasing connectivity of computers through the
Internet
Is Interoperability the
Problem?
Interoperability is not a problem, it’s a software
quality. The problem in achieving this quality is…
Heterogeneity!








Components written in different programming languages
Components running on different hardware platforms
Components running on different operating systems
Components using different data representations
Components using different control models
Components implementing different semantics or semantic
interpretations
Components implementing duplicate functionality
Components implementing conflicting functionality
Another Characterization
Architectural Mismatch [GAO95]

Components have difficulty interoperating because
of mismatching assumptions
 About the world they run in
 About who is in control, and when
 About data formats and how they’re manipulated

Also assumptions about connectors
 About protocols (who says what when)
 About data models (what is said)


Also assumptions about the global configuration
(topology)
…and the construction process (mostly
instantiation)
Syntactic vs. Semantic
Syntactic compatibility only guarantees that
data will pass through a connector properly
Semantic compatibility is achieved only when
components agree on the meaning of the
data they exchange
Example: UNIX pipes


Syntactic compatibility established by making all
data ASCII
Semantic compatibility is not addressed
 Line-oriented data?
 Field-oriented lines?
 Field separators?
Classic Example
American electrical plug
European electrical outlet
Enumerate the interoperability problems here
Are they essential or accidental?
Are they syntactic or semantic?
An example of an “essential”
power problem
American electrical plug
Flintstones Power Source
Achieving Interoperability
Component ?
A
?
? Component
B
Give some examples of components for A and B.
Given two components and an arbitrary connector
in between, how can we make them interoperate?
Shaw’s Taxonomy
form = representation, communication, packaging, semantics
In Detail…
Change A’s form to B’s form


Usually involves a complete rewrite
Expensive but do-able
Publish an abstraction of A’s form


API’s (open or standardized)
Projections or Views (common in
databases)
(cont).
Transform on the fly


Big-endian to little-endian translations in
the connector
REST architectural style
Negotiate a common form


Requires that one or both components
support multiple forms
Classic example is modem protocol
negotiation
(cont).
Make B multilingual


Macintosh “fat binaries”
“Portable code” that uses #ifdefs
Import/Export Converters


May be part of A or B, may be developed
by a 3rd party
Classic example: word processors, Alchemy
Mindworks’ Graphics Workshop
(cont).
Intermediate form




Agree on a common form, usually involves some
sort of standardization
IDL data definitions
XML schema
RTF, PostScript, PDF
Wrap Component A

Machine emulator
 (cf. Playstation emulators, StellaX, SAABRE)

Piece of code that translates APIs
(cont).
Maintain parallel consistent versions



Constrain both A and B such that they have
matching assumptions
Whenever one changes assumptions, make the
corresponding change in the other component
Delicate, often impractical
Separate essence from packaging





Research topic
“A service without an interface”
Interfaces are provided by “system integrators”
Variant: exposing multiple interfaces from A
Variant: A generic interface that can be
transformed into many interfaces automatically
The “Solution”
(as offered by industry)
Middleware


Buzz: Industry will build you a connector
that makes interoperability magically
appear
Right?
Hint: Not Exactly 
Middleware
Popular middleware offerings









CORBA
COM
RMI
JMS
DCE RPC (aka Xerox Courier, SunRPC, ARPC)
Microsoft Message Queue
MQ Series
Siena
KnowNow SOAP Routing
 SOAP (is this middleware?)
Focus: CORBA
Common Object Request Broker
Architecture
A middleware standard


(not implementation)
from the Object
Management Group
 Like the United Nations
of software organizations
Focus: CORBA
From the spec:

Object Request Broker, which enables objects to transparently
make and receive requests and responses in a distributed
environment. It is the foundation for building applications from
distributed objects and for interoperability between applications in
hetero- and homogeneous environments. The architecture and
specifications of the Object Request Broker are described in this
manual.
Standard for middleware that enables interoperability
among components with different assumptions
about:


Platform
Language (type system)
What assumptions are implicit in the OMG
definition?
What is CORBA?
At its core:



It is RPC with objects
Along with a fairly competent IDL (interface
definition language)
Plus some pre-defined services provided by the
middleware and exposed through the
RPC+Objects mechanism (CORBAServices)




Naming
Trading
“Events”
Etc.
Example
Public
Interface of B
Component
A
Object
B
How do we make this call (one
way only, here)?
Example
Public
Interface of B
Component
A
Object
B
First, we must
turn this interface
into something that
is comprehensible in A’s world
Solution: define the interface in a platform-neutral
interface definition language (IDL)
Why might this be harder than it looks?
Exercise: Convert this Java
signature to be called from C++
public int foo(int p1, Vector v);
What do we need to know about the source and
target language to do this effectively?
public int start(Thread t);
Can I do this for any arbitrary function?
Example cont.
Public
Interface of B
Component
A
IDL
Compiler for A-world
Object
B
IDL
Compiler for B-world
Are these the same?
Example cont.
Public
Interface of B
Component
A
(or maybe…)
Stub
Compiler for A-world
B’s
Stub for
A-world
Object
B
(or maybe…)
Skeleton
Compiler for B-world
Skeleton for
B-world
Example cont.
Public
Interface of B
Component
A
Object
B
Skeleton for
B-world
B’s
Stub for
A-world
NB: B is often
called the “true
object”
Via proprietary
protocol, probably TCP-based
if a network is involved, maybe
through some more efficient
OS-based mechanism like
named-pipes if the call is all
being made on one machine.
Semantic Sugar:
CORBAservices
CORBAservices are basically standardized APIs for
doing common tasks.
The True Objects providing the services are usually
provided by your ORB vendor.
A snippet of the IDL for the Naming service:
void bind(in Name n, in Object obj)
raises(NotFound, CannotProceed, InvalidName,AlreadyBound);
void rebind(in Name n, in Object obj)
raises(NotFound, CannotProceed, InvalidName);
Funny Side-note: IIOP
It turns out that the proprietary
protocols between stubs and skeletons
caused interoperability problems
between ORBS

Solution: standardize yet another protocol
for Inter-ORB Interoperability
 This became IIOP—the Internet Inter-Orb
Protocol
For Discussion
What kinds of heterogeneity/interoperability
issues are solved by CORBA
Which are not?
Are the problems that are addressed syntactic
or semantic?
Does CORBA induce any additional
assumptions (i.e. does it worsen
interoperability)?


What assumptions?
How?
Where does CORBA fit in Shaw’s taxonomy?
Can we taxonomize middlewares?
RPC with Objects
- CORBA
- COM
- RMI
- SOAP-RPC
Oneway Messages
(low multicast)
- JMS
- MSMQ
- MQ Series
- SOAP (at core)
- CORBA oneway calls
RPC with Services
- DCE RPC
- “Q” (U. Colorado)
- Corba w/C binding
Oneway Messages
(high multicast)
- Siena
- KnowNow SOAP
routing
- Precache Secret Project
(presumably)
Focus: XML
XML: Extensible Markup Language


Buzz: Finally, a standard for encoding data!
XML will solve your interoperability
problems!
Right?
Hint: Not exactly 
What is XML?
From the spec:


Extensible Markup Language, abbreviated XML, describes a class of
data objects called XML documents and partially describes the
behavior of computer programs which process them. XML is an
application profile or restricted form of SGML, the Standard
Generalized Markup Language [ISO 8879]. By construction, XML
documents are conforming SGML documents.
XML documents are made up of storage units called entities, which
contain either parsed or unparsed data. Parsed data is made up of
characters, some of which form character data, and some of which
form markup. Markup encodes a description of the document's
storage layout and logical structure. XML provides a mechanism to
impose constraints on the storage layout and logical structure.
What assumptions are implicit in the W3C
discussion?
What is XML, really?
A way of organizing and decorating
textual data
Blatantly hierarchical, but works well in
the context of a running document
Supported by meta-languages that
define allowable constructs in the
hierarchy
Example
Eric M. Dashofy, b. 1977 to
father Mark and mother
Susan, currently a
computer scientist at UC
Irvine, hobbies include
playing guitar and making
Star Wars fan-films.
Eric’s Personal Information,
unstructured.
With XML
<person>
<name>
<first>Eric</first>
<mi>M</mi>
<last>Dashofy</last>
</name>
<dob>
<year>1977</year>
</dob>
<father>Mark</father>
<mother>Susan</mother>
<occupation>
<title>Computer Scientist</title>
<location>UC Irvine<location>
</occupation>
<hobby name=“guitar” />
<hobby name=“star-wars-fanfilms” />
</person>
Is this better or worse
than the bio on the
previous slide? Howso?
What can we do with this
bio that we couldn’t with
the previous one?
What assumptions are
being made in this
biography?
What agreement(s) do two
components have to come
to to make use of this bio?
For Discussion
What kinds of heterogeneity/interoperability
issues are solved by XML?
Which are not?
Are the problems that are addressed syntactic
or semantic?
Does XML induce any additional assumptions
(i.e. does it worsen interoperability)?


What assumptions?
How?
Where does XML fit in Shaw’s taxonomy?
Future Directions
Interoperability over the Web

SOAP
 “XML for control instead of data”
 Solves, introduces same issues as XML


Web Services
“The Semantic Web”
2nd Generation Middleware

Which is largely geared toward interoperability
between 1st generation middleware packages
Enterprise Application Integration (EAI)

A whole market driven by people with experience
making systems interoperate
Download