Congratulations for taking the leap into the world of Service
Based Architectures (SBA). Perhaps you have heard something about
SBA and want to find out what it is all about. In this section
we will discuss some of the history that has lead up to SBA and
why it is important.
History
Often it is helpful to reflect on the past to understand the
present. There have been three key software technologies underlying
the success of the Internet: Internet Protocol (IP), WWW technologies,
and Java. Understanding why these technologies were successful
provides a great deal of insight.
|
Technology
|
Value Proposition
|
Origin
|
Notes
|
|
Internet Protocol (IP)
|
- Cross Platform Connectivity
- Send anything between any nodes
|
Military
|
The plumbing that provides connectivity
between nodes
|
|
WWW (Web Browser, Web Server, Search
Engines, HTTP, HTML)
|
- Cross Platform User Interface
- User access to capabilities of any node
on the network
- Ability to find useful capabilities
|
Academia
|
Brochure-like user access to capabilities
|
|
Java
|
- Cross Platform Applications
- Enriched Cross Platform User Interface
|
Industry
|
GUI user access to capabilities
|
The reason all of these technologies were successful is that
they had compelling value propositions. Your computer is more
useful if it is on the Internet. The Internet is more useful
with web technologies. You can provide much richer user interactions
with Java. These technologies provide greater flexibility and
value. By using these technologies to integrate legacy systems,
one can extend the reach and utility of legacy systems, without
losing past investments.
Because of these technologies, the Internet has become a very
useful tool. People can do a tremendous variety of tasks on the
Internet, everything from paying their bills, selling items, buying
items, getting the weather, reading the news, finding directions,
filing tax returns, installing software, downloading music, finding
movie times, reading book reviews, doing research, etc. When
the Internet first came into existence, there was connectivity,
but it was not easy to find and use things. A published cross-platform
user interface (a web page) and the ability to search for things
(a search engine) dramatically changed the use of the Internet.
A compelling commercial aspect came to the Internet, in such a
way that eBay could hold the
world’s largest garage sale with a million of their closest friends.
At times, industry and individuals would like to have these
capabilities work together in ways that their creators could not
have conceived. For instance, a travel service is a prime example
of a horizontal integration of services. Travel agents need to
book travel (airlines, bus, train), book tour services, book hotels,
book rental cars, find weather information, book events, and book
attractions. Another example is a realtor selling homes. A client
wants to know the price range of homes in an area, crime rates,
seasonal information, schools, easements, fees, previous sales
history, taxes, energy costs, insurance costs, local shopping,
local restaurants, noise levels, gas/electric, cable/internet,
sewage/septic tank, public water/well, plot information, and so
forth. The military has similar horizontal integration problems.
The military often needs to coordinate across services, agencies,
and nations to achieve its objectives.

Figure1. Horizontal Integration Examples
That fact is that one cannot predict how services or information
will be combined and used in the future. The whole is greater
than the sum of the parts. However, this kind of interoperability
is very difficult to achieve when the only interface to these
capabilities is a web page. Today, the technique of parsing these
unstructured HTML pages is used to integrate across vendors, however
it is difficult and error-prone. Simple changes to websites can
break this “screen scraping” approach. The problem is that there
is no programmatic access to these capabilities and no way to
search for these capabilities. This interoperability need has
been labeled as many things:
- Enterprise Integration
- Horizontal Integration
- Open-Ended Integration
This has been the driving force behind Web Services. Web services
rely on a protocol for interoperability: Simple Object Access
Protocol (SOAP). Since web services are not concerned
with high bandwidth access or passing large amounts of data, they
use XML technologies. Web services can be used to share capabilities,
but not software. Web Services provide the important lookup mechanism
through Universal Description, Discovery, and Integration (UDDI).
Not only do we have these kinds of integration problem for web
services, but for network devices and network services in general.
The concept of plugging a piece of software or hardware onto the
network and having it automatically provide services is very powerful.
It extends the utility of these hardware and software components
while making it much easier for users. This same concept of pluggability
can even be extended to locality-based services, similar to what
Bluetooth provides.
Often the military has characterized their interoperability
problem as an information dissemination problem, but it is more
than that. As an example from a non-military environment, when
you go to the bank to get your balance, the bank doesn’t send
you all of your banking transactions since the creation of your
account for you to add up. Instead the bank provides a service
that returns your account balance. This is much more efficient
and convenient. They knew a balance is something people would
ask for and provided an efficient way of accessing it. The military
is moving to a service view of the world and in fact they define
interoperability in terms of services:
Interoperability (from Joint
Vision 2020): The ability of systems, units, or forces to
provide services to and accept services from other
systems, units, or forces and to use the services so exchanged
to enable them to operate effectively together.
Service Based Architectures represent the evolution
of distributed software Component Architectures and
System Architectures. The following figure shows the evolution
of component architectures and the focus of Openwings (modified
slide from Sun™ Jini Presentations):

Figure 2. Evolution of Component Architectures
In a world where components can encapsulate both hardware and
software, publish services, and find services to use, our concepts
of Systems Architecture must begin to evolve. The Service Based
approach actually makes it easy to define systems, because service
contracts are defined for all inter-node interactions. This makes
integration much easier. Systems architectures are not only concerned
with the functional breakdown, but the quality of service provided.
Things like availability, security, and performance become issues.
The Problem
Here is a succinct statement of the problem(s) SBA is trying
to solve.
How do you provide interoperability between software components,
hardware components, and systems in a secure, highly available
manner that is simple to develop and use?
This is a compact statement of a large problem.
The Solution
In this section we break down the various parts of the problem
and explain how Openwings solves it.
Services, Discovery, Components, and Deployment
Openwings takes a broad view of Service Based Architectures.
Here is how Openwings defines a service:
A service is a contractually defined behavior
that can be provided by a component for use by
any component solely based on the Interface Contract.
A key thing to note is that there has to be a way to publish
and discover a service. Much like we need search engines to find
user interfaces on the web, we need a way to find programmatic
access to services. Though this is a relatively simple definition
it has very powerful implications. It implies that the service
cannot depend on:
- Discovery protocols
- Transport protocols
- Platforms
- Deployment Environments
This has broad implications for interoperability. Service Based
Architectures are an evolution of Component Architectures. Component
Architectures have typically focused on deployment and inter-process
communication; examples include Common Object Request Brokering
Architecture (CORBA), DCE, EJB, Applets, Servlets, etc. Openwings
takes the Software Engineering
Institute definition of a component:
A component is a binary implementation of functionality
that is a unit of deployment, which is subject
to third party composition and is conformant with
a component model.
Openwings handles the issues of deployment and third party composition
through its Install Service
and Component Services.
Openwings allows software components to be deployed on any platform
with no user interaction. By combining Openwings software components
with hardware components, one can easily create network appliances
that you simply plug in and turn on to use. The following figure
shows an example network appliance that, when plugged into the
network, can display any workstation screen.

Figure 3: Network
Appliances
Interoperability
Openwings focuses on interoperability of legacy components,
new components and systems over time. There are several things
that limit the interoperability of components:
- Lack of well-defined interfaces
- Hard-coded communications protocols
- Lack of or hard-coded discovery protocols
- Hard-coded details about deployment environments
Openwings relies on Java interfaces
as the primary service contract language for both synchronous
and asynchronous types of communication. Another key enabler
of interoperability is Java itself. Java bytecodes are platform-independent,
enabling the delivery of mobile code. Openwings provides protocol
independence through its connector architecture. Openwings provides
discovery protocol independence through its Component
Services model. Openwings also provides techniques to achieve
context independence, including isolation from platform details
and environmental details through installation services, context
services, policies, and properties.
Why is protocol independence important? History tells us that
one protocol does not fit all. There is the need for transactional
synchronous communications, point-to-point asynchronous messaging,
broadcast asynchronous messages, real time streams, low bandwidth
formats, and so on. If we could agree on the interfaces and interact
solely on the interfaces, the protocols could change independently
to support all of these different needs and more easily integrate
legacy systems (the power of connectors). If we deliver all of
the code needed to make use of the service, we don’t even have
to agree on the interface (the power of mobile code).
Here are some techniques that Openwings uses for
interoperability:
- Provide the code, i.e. the user interface, needed to use
the service.
- Agree on the contract, not the protocol
- Extend existing contracts
- Publish legacy interfaces
- Provide adapters for legacy interfaces
Availability
Since Openwings is an evolution of Systems Architectures it
is very concerned with availability.
The service publication and discovery mechanism in Openwings allows
fail-over between service providers. It deals directly with the
inherent unreliability of networks and the fact that in large
systems, rare things happen most of the time. The Openwings Container
Services provide generic lifetime management of components and
can be used to restart components. When containers are clustered
they can provide fail-over between many platforms. In fact, the
Openwings Container architecture
allows hetrogenous platform clustering, which enables a collection
of computers to act as one large processing resource. In fact,
processing itself is a service in Openwings.
Security
After publishing capabilities on the Internet through websites,
it became apparent that parts of these sites needed to be
protected.
When providing programmatic access and the ability to find these
services, a similar problem is created for Service Based Architectures.
The Openwings Security model is primarily concerned with code
security and service security, including authentication, confidentiality,
non-repudiation, integrity, and authorization strategies. Code
security is primarily enforced by the Openwings Container Service.
Service security is handled primarily by Openwings connectors.
In dynamic systems where relationships can be formed and dissolved,
a highly distributed trust model is needed. The Certificate Authority
is a core service run by the Context Services and implemented
by the Security Services. The net result is that you can control
access to services and platform resources.
Scalability
Openwings scales from integrating components, to systems, and
systems of systems by providing a single service model. The Openwings
containers are designed to make efficient use of platform resources
to allow many components to be executed simultaneously.
Simplicity
One of the primary goals of Openwings is to make systems
easier to use; to eliminate the need for the user to manually configure
components, install device drivers, or answer a series of questions
each time he or she wants to install software. The Openwings
model allows for the creation of plug and play software and hardware.
The Openwings Install Service removes the need for user interaction
to install components, even for components that depend on other
components.
Another goal was to make it easy to develop Openwings components.
This includes integration of legacy components. The programming
model is very simple: use, provide, publish, or subscribe to a
service. The Container places only standard Java security restrictions
on what components can do. You can easily package third party
software into Openwings components that can run in Containers.
The package format is simply a Jar file that must contain only
an Installable Component Descriptor that describes the internal
structure of the component, dependencies on other components,
and how to run the component (if it is executable). You can develop
components without any knowledge of Openwings, simply using service
interfaces, and in a few lines of code make them Openwings services.
Related Technologies
The following table gives a summary of various technologies
and how they relate to Openwings.
|
Technology Area
|
Technology
|
Notes
|
|
Core Technologies
|
IP,
Java
|
Openwings depends on Java and Internet
Protocol.
|
|
File Transfer Technologies
|
HTTP,
FTP, etc.
|
Openwings can use various file transfer
protocols.
|
|
Synchronous Protocols
|
SOAP/JAXR,
RMI,
IIOP, etc.
|
Openwings connector model supports any
kind of synchronous communications.
|
|
Asynchronous Protocols
|
JMS,
SOAP/JAXM,
etc.
|
Openwings connector model supports any
kind of asynchronous communications.
|
|
Discovery Protocols
|
Jini,
UDDI, Bluetooth,
JXTA, etc.
|
Openwings component services model supports
any kind of discovery plug-in
|
|
Web Protocols
|
HTML,
applet, servlet,
etc.
|
Openwings Service User Interfaces
|
|
Grammar Parsing Technologies
|
XML
|
Used in Openwings for policies.
|
Summary
In summary, Service Based Architectures represent the evolution
of Component and Systems Architectures. Openwings extends the
value proposition of IP, Web, and Java Technologies, to allow
programmatic access to capabilities and discovery of these capabilities.
The following table summarizes the value proposition.
|
Item
|
Value Proposition
|
|
Services, Discovery
|
Contract based services and the ability
to find them on the network. Well suited to dynamic network
environments.
|
|
Components, Deployment
|
Simple deployment format and automated
install / execute.
|
|
Interoperability
|
Platform independence, protocol independence,
discovery independence, and context independence.
|
|
Availability
|
Containers, Clusters, and Service Fail-Over
handle application and platform faults. Ability to extend
capabilities by adding platforms on the fly.
|
|
Security
|
Secure code and services to control access
to your capabilities.
|
|
Scalability
|
One model for components, systems, and
systems of systems. Efficient sharing of platform resources.
|
|
Simplicity
|
Ease of use and ease of development.
|
Next: Architecture
Overview