SlideShare a Scribd company logo
SOA and the Future of Application Development

                   Bill Eidson, Jonathan Maron, Greg Pavlik, Rajesh Raheja

                                         Oracle Corporation
                                  224 Strawbridge Drive, Suite 300
                                       Moorestown, NJ 08057
                 [jonathan.maron, greg.pavlik, rajesh.raheja, bill.eidson]@oracle.com




   Abstract. Service Oriented Architectures (SOAs) signal a shift not only in the external facing
aspects of application design, but also in the development of applications themselves. Most
importantly, the network interface of business functions in SOA is structured at a higher level of
abstraction than traditional distributed systems, focusing on the exchange of self-describing XML
documents. These documents are often manifestations of canonical business events that are
meaningful to higher-level business analysts. Utilization of these high-level constructs allows new
services to be composed readily using technologies like Business Process Execution Language
(BPEL), Enterprise Service Bus tools, and other XML-based technologies. With BPEL, for
example, information exchange between business systems is often reducible to simple XML
translations or transformations mediated by a process engine. Traditional systems programming is
often relegated to the implementation of adaptor technology to interface with existing systems. We
argue that this represents a serious evolution in the development of IT business solutions.



1 Characteristics of Traditional Distributed Programming

Traditional distributed application development approaches are primarily focused on low-
level programming constructs such as sockets or programmatic support of object models
as seen in CORBA, EJB, or DCOM. These approaches have a number of drawbacks. For
example, socket programming is widely recognized as extremely low-level and error-
prone [1]. Most business solutions delegate the management of network interfaces and
message construction to middleware frameworks. The 90s were dominated by systems
that used the object modeling paradigm for distributed systems.
   Distributed object systems like CORBA or Java Remote Methods Invocation (RMI) are
based on the idea of distribution transparency and provide a relatively simple approach to
programming that models method invocation on an object without exposing whether the
object is collocated in the same address space or distributed across the network. [2,3]
Although distributed object models make the development of distributed systems simpler
in comparison to developing custom message-over-sockets code, these systems still
require application developers to expend a great deal of effort managing low-level system
constructs such as object lifecycle, fault tolerance, load balancing, security and
transactions. In addition, developers are forced to struggle with the following problems:

1. Fault tolerance in distributed object systems is extremely challenging to manage. For
   example, failure modes are difficult to determine and object references are typically
   bound to a specific address space [4]. While many applications were built with
   distributed objects, the technology proved to be difficult to use as a basis for highly
   available systems without very specialized knowledge and experience. CORBA
   systems, for example, never successfully established a robust fault tolerance standard.
2. Object modeling tends to introduce a high degree of coupling in programs. With
   distributed objects, the coupling between clients and servers makes it difficult to think
   of participants as autonomous services, since the client must assume detailed
   knowledge of object interfaces and implementation details like lifecycle.
3. Because messages are passed as opaque encodings of programming language structures
   or native objects, it is difficult to effectively audit or process messages using
   intermediaries.
4. As a client-server model, distributed object systems do not offer an end-to-end message
   processing model, making distributed object systems less than ideal for structuring
   long-running business processes that execute over many systems.

   Post-CORBA distributed object systems such as EJB address some of the issues in
distributed object programming by providing containers that manage object lifecycle and
system services. The EJB model, for example, manages object pooling, threading,
security, distribution and transactions in the container to which the EJB is deployed. Many
of these services are configured via XML deployment descriptors, though the application
logic remains cognizant of the implications of the behavior managed by the container.
   Despite the improved factoring in the EJB model, it suffers from the range of problems
faced by developers using objects as a distribution model. As it is closely associated with
the Java platform -- its invocation interface is based on Java types – EJB also faces
interoperability difficulties. The latest generation of EJB systems is focused on providing
a robust infrastructure for transactional business logic and persistence. EJB 3.0 is
optimized for address-space-constrained Java objects (so-called “POJOs”). [5] This
reorientation reflects the fact that EJBs are most often used as components within Web
applications based on Servlet technologies. As a rule, this architecture does not require
distributed object support.



2 Characteristics of Service Oriented Architectures

   Service Oriented Architectures provide a very different model for applications. Rather
than creating distributed applications by projecting object models across address spaces,
SOA applications create explicit boundaries for business functions, which are offered as
services. A SOA is characterized by:

1. Business functions that are explicitly modeled as networked services. In contrast to
   distributed object systems, which emphasize distribution transparency, SOAs assume
   that service boundaries must be dealt with explicitly. Middleware can optimize for
   collocation scenarios, but a distributed architecture is assumed. This helps to address
   many of the problems and ambiguities associated with distributed object systems: in a
   SOA, both applications and infrastructure assume that system interoperability must be
   addressed explicitly and that network latency and failure may occur when crossing
   service boundaries.
2. Application interfaces that describe the exchange of self-describing XML
   documents. One immediate consequence of a SOA is an increased level of abstraction
   affecting the way in which services and their capabilities are described and consumed.
   The emphasis in a SOA is not on programming models; instead it focuses more directly
   on the exchange of business information to address specific business functions.
     The exchange of messages encoded in XML has several important advantages:
• Services can be built to process platform-independent data structures. This enables
   applications to more readily exchange data and build on common data formats.
• XML documents, particularly those conforming to the SOAP processing model, can be
   processed by intermediaries without prior knowledge of the XML schema used to
   define the business messages. Data-driven functions like content-based routing,
   auditing, and security can be implemented within the network. This is already widely
   supported by Web services management products.
• Both partial processing and transformation of data can be supported using readily
   available XML tools. Backward-compatible evolution of XML schemas for business
   documents also provides additional resiliency as services evolve independently.
3. Well-understood meaning for messages based on canonical business documents or
   events. With well-understood message definitions, services can more readily be
   integrated since they are designed to share a common information model. Legacy
   systems or pre-existing services can be integrated by translating from a canonical
   business message to a service specific message format. To further reduce coupling
   between systems, event driven capabilities are being introduced as a complement to
   SOA. Event-based service integration relies on a publish and subscribe mechanism to
   send the same message to multiple services for processing in parallel. A business event
   is defined by a canonical business document.
4. Coarse-grained business functions that provide a specific service in isolation from
   orthogonal business functions. Providing services with a well-defined and limited
   scope maximizes the reusability of services in new applications and processes. Because
   services tend to offer singular functionality, they are often implemented as stateless
   entities. One way to visualize a service is as a building block for more complex
   business applications. The SOA properties that we describe in this section are intended
   to complement this aspect of a service.
5. Robustness of applications is increased by leveraging the ubiquitous protocols of
   the Web. For example, service endpoints can be identified by URLs and SOAP is most
   commonly sent over the HTTP protocol. These characteristics provide several
   important advantages for SOAs. First, URLs are more easily redirected as
   infrastructure evolves because DNS is able to act as a universal directory. Second, Web
   protocols are better suited to support horizontal scalability for business functions and
   effective redirection and caching capabilities. Because SOAs are designed to provide
   flexibility in the carrier protocol for XML or SOAP messages, they are able to provide
   optimized channels for message distribution. For example, an XML business event can
   be sent over JMS for intranet subscribers and directly over HTTP to consuming
   applications in another network domain.


3 Impacts on Application Development


While SOAs offer a new paradigm for building applications, there are two key areas in
which traditional systems development is still required: primitive business functions and
adapter technology. New methods of service development will be used to build composite
and interconnected services. We explore these three service types and how they relate in a
SOA in this section


3.1 Primitive business functions

Middleware is normally used to expose business logic in a distributed environment.
Because middleware manages many of the low level details of systems programming,
business developers are free to focus on the function of their business service and the data
it uses rather than issues related to network connectivity, transactions, etc. Development
technologies such as EJB provide good technology support at the container level, but only
provide developers an empty canvas. Lack of structure results in proliferation of non-
uniform service definitions and additional effort in testing and certification throughout the
development lifecycle.
    We believe that developers of low-level distributed service components will benefit
from frameworks that provide additional structure for service design. The important
structuring aspects for service development are:

1. Consistent programmatic interfaces so that multiple business functions can operate in a
   homogenous fashion. Ideally, business services in this scenario will be implemented
   based on a-priori knowledge of the business documents that it will exchange. Standards
   such as Service Data Objects (SDO) are being designed to support this approach.
2. Built-in support for common design patterns such as factories are needed so that
   extensibility support is available to easily modify services in the face of changing
   requirements. We expect that a development framework will provide automated
   dependency resolution or so-called Dependency Injection.
3. We also strongly subscribe to the notion of tagging extensive metadata to the business
   functions. This should be supported via programming language annotations and XML
   configuration. This combination both simplifies development and leads to more
   flexibility in the solution, particularly if protocol bindings and policies are maintained
   independently from business logic. Metadata describing services and their capabilities
   can also be published to a central repository and queried with taxonomies that can be
   understood by business analysts.

   The Service Component Architecture (SCA) is a framework jointly defined by BEA,
IBM and Oracle that provides these capabilities for developers working in a SOA
environment. SCA is described in detail in [6]. We believe frameworks of this nature will
be increasingly important for implementing basic building block services.


3.2 Adapter technology

Traditional systems programming also plays a significant role in providing the code to
link the service layer to legacy systems. The specific techniques for integrating a legacy
business function into a SOA will vary based on environment. Some systems will require
custom adapters; development of custom adapters often requires detailed knowledge of
both the legacy system and the middleware functions of the system hosting the adapter.
The Java Connector Architecture[7] is an example of an adapter framework that can be
used for building adapters to connect back end systems into a SOA.
   In many cases, adapters for legacy systems and enterprise applications are provided as
packaged solutions by middleware vendors. In this case, bridging into a SOA may be as
simple as applying transformations on the XML generated by the backend system into a
business event defined for the SOA.
   This combination of adapters and XML processing is useful for either creating new
services on modern application server platforms or accessing business functions in legacy
systems. They serve to expose existing business functions as services. Once these basic
services have been defined, SOAs can be leveraged to compose new business functions by
rapidly combining existing services into composite services.


3.3 Composite Services

The most significant change in development occurs in the way in which composite
services are created and connected. Once the building blocks for a SOA are established
within an IT organization, composite services will be the normal model for developing
new business functions or processes. As a rule, composite services will not be created in
traditional programming languages. The foundational technology for implementing
composite service development is the Business Process Execution Language [8], an
orchestration language for combining XML messages from a SOA into new business
processes.
   The BPEL standard provides the following features:

1. Composite services are modeled as business flows. These new business processes are
   themselves simply exposed as Web services available within the SOA
2. Business interactions are driven by the exchange of XML business documents. BPEL
   process definitions themselves rely on XML as the basis of a process’s data model.
3. Data exchange and process flow is defined primarily by reference to content in the
   XML business documents consumed by the process. Simple data referencing
   mechanisms like XPath are exploited for extracting data fragments used in decision
   trees.
4. Asynchronous interactions are enabled by the underlying process engine, which
   manages message correlation and process state. The inherently complex programming
   required to manage long-running business processes and data exchange is eliminated
   by the use of the BPEL engine.

Although an extensive examination of the BPEL syntax is beyond the scope of this paper,
some of the most relevant constructs to this discussion include:

1. The <scope> element allows for the definition of a reversible unit of work. This
   allows for the definition of data variables as well as the specification of error handling
   and compensation handlers for the work performed within the given scope.
2. The <flow> parallel control construct allows multiple services to be invoked
   concurrently. There is no development effort required to handle the threading and
   asynchrony issues a concurrent invocation required in the past.
3. The <receive> element provides a facility for blocking while waiting for the
   matching message to arrive; the developer is not required to model the network
   message exchanges. The BPEL process manager further allows for the correlation of
   the responses once they are received; the processing within the scope of the <flow>
   element is not completed till all responses are received.
4. The <sequence> element allows for the ordered processing of the nested activities
   (service invocations, message receipts, etc.).          Such standard control flow and
   branching activities are available to explicitly script the logic driven by the exchange of
   business documents as the process progresses.
5. The <assign> element uses XPath to copy fragments of XML between documents.

Many BPEL engines allow extension points to apply transformations via XSLT or other
XML manipulation techniques.
BPEL provides a straightforward syntax for implementing concurrency, state
management and control flow that is difficult to model in system programming languages
like Java and C.




                                   Fig. 1. Composite Services


3.4 Connecting Services


   Concrete relationships are established by binding entities during the deployment of
services into a SOA. In many cases, the coupling between services is reduced by using
intermediaries as message routing agents. Canonical business documents at the core of a
BPEL process are critical to allowing easy data exchange: if the same data structures are
shared by many services, multiple services can more readily produce and consume shared
information formats. These standard formats also enable event-driven relationships in
which business events of interest, described by canonical message definitions, will be
propagated to many services simultaneously for processing. The services within the
application expose a number of business events that are raised at significant moments in
the applications. For example, the application’s customer module raises a new-customer
business event whenever a new customer record is created. Other application modules
can then add custom routing rules to the business event, without needing to modify the
customer module itself. A routing rule can be used to invoke any service, including
initiating a BPEL business processes. Similar to how modules within an application
integrate through business events, routing rules can also be added for integration with
external applications. These rules can transform and route the message to an external
Web service, or to a service implemented by a legacy system adapter.
In the Oracle ESB, for example, an event source initiates a routing service to deliver
the document to its appropriate destination, regardless of the network protocol. The
difference in document formats from the canonical business event to the destination can
be a simple XML transformation in certain A2A cases, or can be a complex long-lived
business process in certain B2B standards, such as RosettaNet. Changing business
requirements - such as the outsourcing of a given service - can be achieved by altering the
routing service to replace a simple XSL transformation service with a BPEL-based service
that satisfies the new business requirement.
   This has important implications for interconnected services. Traditional application
development methodologies could not adapt to changing business requirements due to the
tightly coupled way in which the business services were woven into the system. By
utilizing XML messaging on top of a flexible integration fabric, SOAs provide a basis for
resiliency in distributed systems.



4 Conclusion

SOAs modularize business services and focus development efforts on the exchange of
business information required to support those functions. The increased level of
abstraction in a SOA provides enormous benefits to IT organizations: new services are
simpler to develop, new automated business processes can be deployed as services, and
those processes are amenable to change. We believe these benefits are best achieved by
providing programming models and infrastructure frameworks that provide inherent
support for SOA enablement and management.



References

1. Schmidt, Douglas C, Vinoski, Steve: Object Interconnections – Introduction to Distributed
   Object Computing, SIGS, Vol. 7 Number 1, January 1995
2. OMG, Common Object Request Broker Architecture: Core Specification, Version 3.0.3, March
   2004
3. Sun Microsystems Inc.: Java Remote Method Invocation (RMI) Specification 1.5, 2004
4. Waldo, Jim, Wyant, Geoff, Wollrath, Ann, Kendall, Sam: A Note on Distributed Computing,
   November 1994
5. Sun Microsystems Inc.: JSR 220: Enterprise JavaBeans, Version 3.0, EJB Core Contracts and
   Requirements, June 25, 2005
6. Service Component Architecture: Building Systems using Service Oriented Architecture, A
   Joint Whitepaper by BEA, IBM, and Oracle, November 2005.
7. Sun Microsystems Inc.: J2EE Connector Architecture Specification, Version 1.5, Final Release,
   November 2003
8. Thatte, Satish (Ed.): Business Process Execution Language For Web Services, Version 1.1, May
   5, 2003

More Related Content

PDF
IT6801-Service Oriented Architecture
DOC
integeration
PPT
SOA Fundamentals
PPTX
SOA Reference Architecture
PDF
PPT
The New Enterprise Alphabet - .Net, XML And XBRL
PPTX
CBSE VS SOA SJSU Presentation
PDF
As044285288
IT6801-Service Oriented Architecture
integeration
SOA Fundamentals
SOA Reference Architecture
The New Enterprise Alphabet - .Net, XML And XBRL
CBSE VS SOA SJSU Presentation
As044285288

What's hot (20)

PDF
Service Oriented Architecture
PPT
Soa chapter 5
PDF
SOA unit-3-notes-Introduction to Service Oriented Architecture
PDF
Lectura 2.3 soa-overview-directions-benatallah
DOCX
Part I -Summary of service oriented architecture (soa) concepts, technology, ...
PPT
Service-oriented Architecture with Respect to Reusability
ODP
Service oriented architecture 27 May 2014
PPTX
Service Oriented Architecture (SOA)
PDF
A Tool for the Management of ebXML Resources
DOCX
Web Services-Enhanced Agile Modeling and Integrating Business Processes
PPTX
Unit 3-SOA Technologies
PPT
WebServices and Workflow technologies
DOCX
service orentation documentation
PPTX
Unit 2 -SOA design
DOCX
Part II - Summary of service oriented architecture (SOA) concepts, technology...
PPTX
Introduction to SOA
PDF
Finite State Machine Based Evaluation Model For Web Service Reliability Analysis
PDF
Chapter 1 introduction
PPT
Soa & Bpel With Web Sphere
PDF
Performance of Web Services on Smart Phone Platforms
Service Oriented Architecture
Soa chapter 5
SOA unit-3-notes-Introduction to Service Oriented Architecture
Lectura 2.3 soa-overview-directions-benatallah
Part I -Summary of service oriented architecture (soa) concepts, technology, ...
Service-oriented Architecture with Respect to Reusability
Service oriented architecture 27 May 2014
Service Oriented Architecture (SOA)
A Tool for the Management of ebXML Resources
Web Services-Enhanced Agile Modeling and Integrating Business Processes
Unit 3-SOA Technologies
WebServices and Workflow technologies
service orentation documentation
Unit 2 -SOA design
Part II - Summary of service oriented architecture (SOA) concepts, technology...
Introduction to SOA
Finite State Machine Based Evaluation Model For Web Service Reliability Analysis
Chapter 1 introduction
Soa & Bpel With Web Sphere
Performance of Web Services on Smart Phone Platforms
Ad

Viewers also liked (6)

PPTX
Future of SOA & Modern APIs
PDF
Cloud and E2.0: Connecting the Dots - OSCON Cloud Summit - 2010
PPTX
SOA in the API World - Facades, Transactions, Stateless Services
PDF
Digital Transformation & the Future of SOA at AMIS25
PDF
The Past, Present and Future of Enterprise Integration
Future of SOA & Modern APIs
Cloud and E2.0: Connecting the Dots - OSCON Cloud Summit - 2010
SOA in the API World - Facades, Transactions, Stateless Services
Digital Transformation & the Future of SOA at AMIS25
The Past, Present and Future of Enterprise Integration
Ad

Similar to WDSOA'05 Whitepaper: SOA and the Future of Application Development (20)

DOCX
Logistics tutorial 2 ques 2
PDF
Soa session 1 part 1(2)
PDF
Introduction to Micro Services
PPT
Soa & Bpel With Web Sphere
PPT
SOA@MODULE-III.pptSOA@MODULE-III.pptSOA@MODULE-III.ppt
PDF
Application Oriented Networks: An SOA Perspective | Torry Harris Whitepaper
DOC
Web Based Secure Soa
PDF
Getting started-with-oracle-so a-vi
PDF
15 falko menge--_enterpise_service_bus
PDF
ITEC 610 Assingement 1 Essay
PDF
Cc unit 2 updated
PPTX
CBSE VS SOA Presentation
DOCX
Enterprise Service Bus Features and Advantages.docx
PDF
Web Services Foundation Technologies
PDF
Enterprise Service Bus
PDF
SQL Server Service Broker – A Competent Architecture by Microsoft
PDF
ServiceOrientedSoftwareEngineeringSOSEASurveyandGapAnalysis.pdf
PDF
BUSINESS SILOS INTEGRATION USING SERVICE ORIENTED ARCHITECTURE
Logistics tutorial 2 ques 2
Soa session 1 part 1(2)
Introduction to Micro Services
Soa & Bpel With Web Sphere
SOA@MODULE-III.pptSOA@MODULE-III.pptSOA@MODULE-III.ppt
Application Oriented Networks: An SOA Perspective | Torry Harris Whitepaper
Web Based Secure Soa
Getting started-with-oracle-so a-vi
15 falko menge--_enterpise_service_bus
ITEC 610 Assingement 1 Essay
Cc unit 2 updated
CBSE VS SOA Presentation
Enterprise Service Bus Features and Advantages.docx
Web Services Foundation Technologies
Enterprise Service Bus
SQL Server Service Broker – A Competent Architecture by Microsoft
ServiceOrientedSoftwareEngineeringSOSEASurveyandGapAnalysis.pdf
BUSINESS SILOS INTEGRATION USING SERVICE ORIENTED ARCHITECTURE

More from Rajesh Raheja (9)

PDF
What Product Leaders need to know about DevOps
PDF
The Role of an Architect
PDF
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
PPT
Oracle Workflow Continuous Integration
PPT
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
PPT
Oracle OpenWorld 2010 Practical Insights on Using AIA
PPT
Oracle OpenWorld 2009 AIA Best Practices
PDF
OracleWorld 2002 Whitepaper Web Services in E-Business Suite
PPT
Oracle World 2002 Leverage Web Services in E-Business Applications
What Product Leaders need to know about DevOps
The Role of an Architect
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
Oracle Workflow Continuous Integration
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2009 AIA Best Practices
OracleWorld 2002 Whitepaper Web Services in E-Business Suite
Oracle World 2002 Leverage Web Services in E-Business Applications

Recently uploaded (20)

PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Machine learning based COVID-19 study performance prediction
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Cloud computing and distributed systems.
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Electronic commerce courselecture one. Pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Network Security Unit 5.pdf for BCA BBA.
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Machine learning based COVID-19 study performance prediction
Review of recent advances in non-invasive hemoglobin estimation
Programs and apps: productivity, graphics, security and other tools
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Encapsulation_ Review paper, used for researhc scholars
Understanding_Digital_Forensics_Presentation.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Unlocking AI with Model Context Protocol (MCP)
Cloud computing and distributed systems.
Dropbox Q2 2025 Financial Results & Investor Presentation
Spectral efficient network and resource selection model in 5G networks
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I
“AI and Expert System Decision Support & Business Intelligence Systems”
Electronic commerce courselecture one. Pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

WDSOA'05 Whitepaper: SOA and the Future of Application Development

  • 1. SOA and the Future of Application Development Bill Eidson, Jonathan Maron, Greg Pavlik, Rajesh Raheja Oracle Corporation 224 Strawbridge Drive, Suite 300 Moorestown, NJ 08057 [jonathan.maron, greg.pavlik, rajesh.raheja, bill.eidson]@oracle.com Abstract. Service Oriented Architectures (SOAs) signal a shift not only in the external facing aspects of application design, but also in the development of applications themselves. Most importantly, the network interface of business functions in SOA is structured at a higher level of abstraction than traditional distributed systems, focusing on the exchange of self-describing XML documents. These documents are often manifestations of canonical business events that are meaningful to higher-level business analysts. Utilization of these high-level constructs allows new services to be composed readily using technologies like Business Process Execution Language (BPEL), Enterprise Service Bus tools, and other XML-based technologies. With BPEL, for example, information exchange between business systems is often reducible to simple XML translations or transformations mediated by a process engine. Traditional systems programming is often relegated to the implementation of adaptor technology to interface with existing systems. We argue that this represents a serious evolution in the development of IT business solutions. 1 Characteristics of Traditional Distributed Programming Traditional distributed application development approaches are primarily focused on low- level programming constructs such as sockets or programmatic support of object models as seen in CORBA, EJB, or DCOM. These approaches have a number of drawbacks. For example, socket programming is widely recognized as extremely low-level and error- prone [1]. Most business solutions delegate the management of network interfaces and message construction to middleware frameworks. The 90s were dominated by systems that used the object modeling paradigm for distributed systems. Distributed object systems like CORBA or Java Remote Methods Invocation (RMI) are based on the idea of distribution transparency and provide a relatively simple approach to programming that models method invocation on an object without exposing whether the object is collocated in the same address space or distributed across the network. [2,3] Although distributed object models make the development of distributed systems simpler in comparison to developing custom message-over-sockets code, these systems still require application developers to expend a great deal of effort managing low-level system
  • 2. constructs such as object lifecycle, fault tolerance, load balancing, security and transactions. In addition, developers are forced to struggle with the following problems: 1. Fault tolerance in distributed object systems is extremely challenging to manage. For example, failure modes are difficult to determine and object references are typically bound to a specific address space [4]. While many applications were built with distributed objects, the technology proved to be difficult to use as a basis for highly available systems without very specialized knowledge and experience. CORBA systems, for example, never successfully established a robust fault tolerance standard. 2. Object modeling tends to introduce a high degree of coupling in programs. With distributed objects, the coupling between clients and servers makes it difficult to think of participants as autonomous services, since the client must assume detailed knowledge of object interfaces and implementation details like lifecycle. 3. Because messages are passed as opaque encodings of programming language structures or native objects, it is difficult to effectively audit or process messages using intermediaries. 4. As a client-server model, distributed object systems do not offer an end-to-end message processing model, making distributed object systems less than ideal for structuring long-running business processes that execute over many systems. Post-CORBA distributed object systems such as EJB address some of the issues in distributed object programming by providing containers that manage object lifecycle and system services. The EJB model, for example, manages object pooling, threading, security, distribution and transactions in the container to which the EJB is deployed. Many of these services are configured via XML deployment descriptors, though the application logic remains cognizant of the implications of the behavior managed by the container. Despite the improved factoring in the EJB model, it suffers from the range of problems faced by developers using objects as a distribution model. As it is closely associated with the Java platform -- its invocation interface is based on Java types – EJB also faces interoperability difficulties. The latest generation of EJB systems is focused on providing a robust infrastructure for transactional business logic and persistence. EJB 3.0 is optimized for address-space-constrained Java objects (so-called “POJOs”). [5] This reorientation reflects the fact that EJBs are most often used as components within Web applications based on Servlet technologies. As a rule, this architecture does not require distributed object support. 2 Characteristics of Service Oriented Architectures Service Oriented Architectures provide a very different model for applications. Rather than creating distributed applications by projecting object models across address spaces,
  • 3. SOA applications create explicit boundaries for business functions, which are offered as services. A SOA is characterized by: 1. Business functions that are explicitly modeled as networked services. In contrast to distributed object systems, which emphasize distribution transparency, SOAs assume that service boundaries must be dealt with explicitly. Middleware can optimize for collocation scenarios, but a distributed architecture is assumed. This helps to address many of the problems and ambiguities associated with distributed object systems: in a SOA, both applications and infrastructure assume that system interoperability must be addressed explicitly and that network latency and failure may occur when crossing service boundaries. 2. Application interfaces that describe the exchange of self-describing XML documents. One immediate consequence of a SOA is an increased level of abstraction affecting the way in which services and their capabilities are described and consumed. The emphasis in a SOA is not on programming models; instead it focuses more directly on the exchange of business information to address specific business functions. The exchange of messages encoded in XML has several important advantages: • Services can be built to process platform-independent data structures. This enables applications to more readily exchange data and build on common data formats. • XML documents, particularly those conforming to the SOAP processing model, can be processed by intermediaries without prior knowledge of the XML schema used to define the business messages. Data-driven functions like content-based routing, auditing, and security can be implemented within the network. This is already widely supported by Web services management products. • Both partial processing and transformation of data can be supported using readily available XML tools. Backward-compatible evolution of XML schemas for business documents also provides additional resiliency as services evolve independently. 3. Well-understood meaning for messages based on canonical business documents or events. With well-understood message definitions, services can more readily be integrated since they are designed to share a common information model. Legacy systems or pre-existing services can be integrated by translating from a canonical business message to a service specific message format. To further reduce coupling between systems, event driven capabilities are being introduced as a complement to SOA. Event-based service integration relies on a publish and subscribe mechanism to send the same message to multiple services for processing in parallel. A business event is defined by a canonical business document. 4. Coarse-grained business functions that provide a specific service in isolation from orthogonal business functions. Providing services with a well-defined and limited scope maximizes the reusability of services in new applications and processes. Because services tend to offer singular functionality, they are often implemented as stateless entities. One way to visualize a service is as a building block for more complex business applications. The SOA properties that we describe in this section are intended to complement this aspect of a service.
  • 4. 5. Robustness of applications is increased by leveraging the ubiquitous protocols of the Web. For example, service endpoints can be identified by URLs and SOAP is most commonly sent over the HTTP protocol. These characteristics provide several important advantages for SOAs. First, URLs are more easily redirected as infrastructure evolves because DNS is able to act as a universal directory. Second, Web protocols are better suited to support horizontal scalability for business functions and effective redirection and caching capabilities. Because SOAs are designed to provide flexibility in the carrier protocol for XML or SOAP messages, they are able to provide optimized channels for message distribution. For example, an XML business event can be sent over JMS for intranet subscribers and directly over HTTP to consuming applications in another network domain. 3 Impacts on Application Development While SOAs offer a new paradigm for building applications, there are two key areas in which traditional systems development is still required: primitive business functions and adapter technology. New methods of service development will be used to build composite and interconnected services. We explore these three service types and how they relate in a SOA in this section 3.1 Primitive business functions Middleware is normally used to expose business logic in a distributed environment. Because middleware manages many of the low level details of systems programming, business developers are free to focus on the function of their business service and the data it uses rather than issues related to network connectivity, transactions, etc. Development technologies such as EJB provide good technology support at the container level, but only provide developers an empty canvas. Lack of structure results in proliferation of non- uniform service definitions and additional effort in testing and certification throughout the development lifecycle. We believe that developers of low-level distributed service components will benefit from frameworks that provide additional structure for service design. The important structuring aspects for service development are: 1. Consistent programmatic interfaces so that multiple business functions can operate in a homogenous fashion. Ideally, business services in this scenario will be implemented based on a-priori knowledge of the business documents that it will exchange. Standards such as Service Data Objects (SDO) are being designed to support this approach.
  • 5. 2. Built-in support for common design patterns such as factories are needed so that extensibility support is available to easily modify services in the face of changing requirements. We expect that a development framework will provide automated dependency resolution or so-called Dependency Injection. 3. We also strongly subscribe to the notion of tagging extensive metadata to the business functions. This should be supported via programming language annotations and XML configuration. This combination both simplifies development and leads to more flexibility in the solution, particularly if protocol bindings and policies are maintained independently from business logic. Metadata describing services and their capabilities can also be published to a central repository and queried with taxonomies that can be understood by business analysts. The Service Component Architecture (SCA) is a framework jointly defined by BEA, IBM and Oracle that provides these capabilities for developers working in a SOA environment. SCA is described in detail in [6]. We believe frameworks of this nature will be increasingly important for implementing basic building block services. 3.2 Adapter technology Traditional systems programming also plays a significant role in providing the code to link the service layer to legacy systems. The specific techniques for integrating a legacy business function into a SOA will vary based on environment. Some systems will require custom adapters; development of custom adapters often requires detailed knowledge of both the legacy system and the middleware functions of the system hosting the adapter. The Java Connector Architecture[7] is an example of an adapter framework that can be used for building adapters to connect back end systems into a SOA. In many cases, adapters for legacy systems and enterprise applications are provided as packaged solutions by middleware vendors. In this case, bridging into a SOA may be as simple as applying transformations on the XML generated by the backend system into a business event defined for the SOA. This combination of adapters and XML processing is useful for either creating new services on modern application server platforms or accessing business functions in legacy systems. They serve to expose existing business functions as services. Once these basic services have been defined, SOAs can be leveraged to compose new business functions by rapidly combining existing services into composite services. 3.3 Composite Services The most significant change in development occurs in the way in which composite services are created and connected. Once the building blocks for a SOA are established within an IT organization, composite services will be the normal model for developing
  • 6. new business functions or processes. As a rule, composite services will not be created in traditional programming languages. The foundational technology for implementing composite service development is the Business Process Execution Language [8], an orchestration language for combining XML messages from a SOA into new business processes. The BPEL standard provides the following features: 1. Composite services are modeled as business flows. These new business processes are themselves simply exposed as Web services available within the SOA 2. Business interactions are driven by the exchange of XML business documents. BPEL process definitions themselves rely on XML as the basis of a process’s data model. 3. Data exchange and process flow is defined primarily by reference to content in the XML business documents consumed by the process. Simple data referencing mechanisms like XPath are exploited for extracting data fragments used in decision trees. 4. Asynchronous interactions are enabled by the underlying process engine, which manages message correlation and process state. The inherently complex programming required to manage long-running business processes and data exchange is eliminated by the use of the BPEL engine. Although an extensive examination of the BPEL syntax is beyond the scope of this paper, some of the most relevant constructs to this discussion include: 1. The <scope> element allows for the definition of a reversible unit of work. This allows for the definition of data variables as well as the specification of error handling and compensation handlers for the work performed within the given scope. 2. The <flow> parallel control construct allows multiple services to be invoked concurrently. There is no development effort required to handle the threading and asynchrony issues a concurrent invocation required in the past. 3. The <receive> element provides a facility for blocking while waiting for the matching message to arrive; the developer is not required to model the network message exchanges. The BPEL process manager further allows for the correlation of the responses once they are received; the processing within the scope of the <flow> element is not completed till all responses are received. 4. The <sequence> element allows for the ordered processing of the nested activities (service invocations, message receipts, etc.). Such standard control flow and branching activities are available to explicitly script the logic driven by the exchange of business documents as the process progresses. 5. The <assign> element uses XPath to copy fragments of XML between documents. Many BPEL engines allow extension points to apply transformations via XSLT or other XML manipulation techniques.
  • 7. BPEL provides a straightforward syntax for implementing concurrency, state management and control flow that is difficult to model in system programming languages like Java and C. Fig. 1. Composite Services 3.4 Connecting Services Concrete relationships are established by binding entities during the deployment of services into a SOA. In many cases, the coupling between services is reduced by using intermediaries as message routing agents. Canonical business documents at the core of a BPEL process are critical to allowing easy data exchange: if the same data structures are shared by many services, multiple services can more readily produce and consume shared information formats. These standard formats also enable event-driven relationships in which business events of interest, described by canonical message definitions, will be propagated to many services simultaneously for processing. The services within the application expose a number of business events that are raised at significant moments in the applications. For example, the application’s customer module raises a new-customer business event whenever a new customer record is created. Other application modules can then add custom routing rules to the business event, without needing to modify the customer module itself. A routing rule can be used to invoke any service, including initiating a BPEL business processes. Similar to how modules within an application integrate through business events, routing rules can also be added for integration with external applications. These rules can transform and route the message to an external Web service, or to a service implemented by a legacy system adapter.
  • 8. In the Oracle ESB, for example, an event source initiates a routing service to deliver the document to its appropriate destination, regardless of the network protocol. The difference in document formats from the canonical business event to the destination can be a simple XML transformation in certain A2A cases, or can be a complex long-lived business process in certain B2B standards, such as RosettaNet. Changing business requirements - such as the outsourcing of a given service - can be achieved by altering the routing service to replace a simple XSL transformation service with a BPEL-based service that satisfies the new business requirement. This has important implications for interconnected services. Traditional application development methodologies could not adapt to changing business requirements due to the tightly coupled way in which the business services were woven into the system. By utilizing XML messaging on top of a flexible integration fabric, SOAs provide a basis for resiliency in distributed systems. 4 Conclusion SOAs modularize business services and focus development efforts on the exchange of business information required to support those functions. The increased level of abstraction in a SOA provides enormous benefits to IT organizations: new services are simpler to develop, new automated business processes can be deployed as services, and those processes are amenable to change. We believe these benefits are best achieved by providing programming models and infrastructure frameworks that provide inherent support for SOA enablement and management. References 1. Schmidt, Douglas C, Vinoski, Steve: Object Interconnections – Introduction to Distributed Object Computing, SIGS, Vol. 7 Number 1, January 1995 2. OMG, Common Object Request Broker Architecture: Core Specification, Version 3.0.3, March 2004 3. Sun Microsystems Inc.: Java Remote Method Invocation (RMI) Specification 1.5, 2004 4. Waldo, Jim, Wyant, Geoff, Wollrath, Ann, Kendall, Sam: A Note on Distributed Computing, November 1994 5. Sun Microsystems Inc.: JSR 220: Enterprise JavaBeans, Version 3.0, EJB Core Contracts and Requirements, June 25, 2005 6. Service Component Architecture: Building Systems using Service Oriented Architecture, A Joint Whitepaper by BEA, IBM, and Oracle, November 2005. 7. Sun Microsystems Inc.: J2EE Connector Architecture Specification, Version 1.5, Final Release, November 2003 8. Thatte, Satish (Ed.): Business Process Execution Language For Web Services, Version 1.1, May 5, 2003