Академический Документы
Профессиональный Документы
Культура Документы
com/
WHATS SOA?
SOA presents services for solution logic in an architectural model. By having these
services as the foremost method of sending solutions, SOAs goal is to be more
efficient, productive, and agile than other technology solutions. It provides support for
realizing the advantages of computing and principles that are service-oriented. SOA
implementations are made of various products, technologies, programming interfaces
(for applications), and other different extensions. Application of the service-orientation
principles to the software solutions will produce services. These services are the basic
logic unit in SOA. Although the services have the ability to exist automatically, theyre by
no means isolated. There are certain standard and common features that are
maintained by the services, but they have the ability to be extended and evolved
independently. Its possible to combine services, enabling other services to be created.
There are autonomous messages that are used for services to communicate and these
messages are intelligent enough so that they can self-govern the parts of their own
logic. The most important principles of SOA are service contract, autonomy, reusability,
composability, loose coupling, discoverability, and statelessness.
Services that can be regarded as middleware include enterprise application integration, data
integration, message oriented middleware (MOM), object request brokers (ORBs), and
the enterprise service bus(ESB)
With businesses using so many different software programs to fill their needs,
sometimes it's necessary that the different programs work together to get the end
results they are looking for. In those situations, middleware is required.
This allows a user to request data from a database using forms displayed on a Web
browser, according to Webopedia, while also allowing for the Web server to return Web
pages based on the user's request.
"In a highly distributed environment in which businesses need to connect with legacy systems,
cloud and SaaS applications, and business management software such as SAP and Salesforce,
the role of a middleware technology is critical,
Security: Authenticates a particular client program to some system component to verify, for
example, that the client program and its user are really who they say they are.
Transaction management: Ensures that a system or database don't get corrupted if problems
occur.
Message queues: Enables loosely coupled systems to pass messages back and forth to each
other. Those messages can trigger actions or transactions to occur
Application server: A server that hosts an application programming interface (API), which
exposes business logic and business processes so that other applications can use the shared
logic and processes.
Web server: A computer program that's responsible for accepting requests from Web browsers,
as well as sending responses and content to those browsers
Directory: Enables a client program to find other services or servers located in a distributed
enterprise.
An enterprise service bus (ESB) is a software architecture model used for designing and
implementing communication between mutually interacting software applications in a service-
oriented architecture (SOA). As a software architectural model for distributed computing, it is a
specialty variant of the more general client-server model and promotes agility and flexibility with
regard to communication between applications. Its primary use is in enterprise application
integration (EAI) of heterogeneous and complex landscapes.
Service - denotes non-iterative and autonomously executing programs that communicate with
other services through message exchange
Bus - is used in analogy to a computer hardware bus
Enterprise - the concept has been originally invented to reduce complexity of enterprise
application integration within an enterprise; the restriction has become obsolete since modern
Internet communication is no longer limited to a corporate entity
An ESB transports the design concept of modern operating systems to networks of disparate and
independent computers. Like concurrent operating systems an ESB caters for commodity services in
addition to adoption, translation and routing of a client request to the appropriate answering service.
Category Functions
Process
implementation of complex business processes
choreography[4]
Complex event
event-interpretation, correlation, pattern-matching
processing
Other quality of
security (encryption and signing), reliable delivery, transaction management
service
Management monitoring, audit, logging, metering, admin console, BAM (BAM is not a
management capability in other words the ESB doesnt react to a specific
threshold. It is a business service capability surfaced to end users. )
Protocol
comprehensive support for topical communication protocols service standards
Conversion
Message support for various MEPs (Message Exchange Patterns) (for example:
Exchange synchronous request/response, asynchronous request/response, send-and-
Patterns forget, publish/subscribe)
Split and Merge the splitting and combining of multiple messages and the handling of exceptions
Abstraction the provision of a unified abstraction across multiple layers
For more information about domain value maps, see Chapter 44, "Working with Domain
Value Maps."
You must have the SOADesigner application role to access Oracle SOA Composer
metadata. By default, all the users with Oracle Enterprise Manager Fusion Middleware
Control administrator privileges have this role. If you log in to Oracle SOA Composer
without this role, you see the following message:
Currently logged in user is not authorized to modify SOA metadata.
For information about adding the SOADesigner application role to users without
administrator privileges, see Oracle Fusion Middleware Administrator's Guide for Oracle
SOA Suite and Oracle BPM Suite.
You can also select a document from the My Edits option that displays recently
opened documents.
Note:
You can click Bookmarkable Link to get a direct link to the selected domain value
map. The Info button provides more information on the selected domain value map.
To add rows:
To edit rows:
To delete rows:
1. Click the Save menu item to save your changes. If your changes are saved
successfully, you receive a notification message.
You can also revert a domain value map to the last saved state.
Figure 45-5 Confirm Dialog for Concurrent Users of a Domain Value Map
Description of "Figure 45-5 Confirm Dialog for Concurrent Users of a Domain Value
Map"
However, if you still want to edit the domain value map, you can click Yes and make
the modifications.
If the other user makes changes to the domain value map and commits the changes,
you receive a notification message while trying to commit your changes.
If you click Yes and commit your changes, then the changes made by the other user
are overwritten by your changes.
Domain Value Maps(DVM) in Oracle SOA Suite 11G. They enable you to map from one vocabulary used
in a given domain to another vocabulary used in a different domain. For example, one domain may
represent a city with a long name (Mumbai), while another domain may represent a city with a short name
(MB). In such cases, you can directly map the values by using domain value maps.
Domain value map values are static. You specify the domain value map values at design time using
Oracle JDeveloper, and then at runtime, the domain value map columns are looked up for values.
MDS and what all featured introduced in that. As we know MDS is used to store artifacts like WSDL, XSD, XSLT etc.
we have two types of MDS, File based MDS and DB based MDS. In Oracle SOA 12c, when we use default server
which is integrated with Jdeveloper then we can use only Design Time MDS (File Based MDS), Run Time MDS (DB
Based MDS) is not supported.
In Oracle SOA 12c release, Oracle provided couple of new options that we can use when we use Design Time MDS,
these options were not there in 11g. Below are options available with Design Time MDS.
UDDI V3 Compliance - Enables standards-based dynamic discovery of services and policies at runtime
SOA Agility - Keeps SOA infrastructure up-to-date with changes to service end points, ensuring your SOA doesn't
break
Hot-pluggable - Supports heterogeneous services from any vendor
Organizational flexibility
Performance measurement
Service Composition Ability to develop new function combinations rapidly Composition engine
Service
Service is the essential concept of SOA.
It is not originally a technical concept. The idea of a service was developed in the world of business. Look in any
Yellow Pages directory, and you will find categories such as courier services, garage services, and roofing
services. For each of these, some person or company (the service provider) is offering to do something carry
goods and messages, look after vehicles, install and repair building roofs that will benefit other people or
companies (the service consumers). The providers offer to contract with the consumers to do these things, so that the
consumers know in advance what they will get for their money.
The idea has been adopted by technologists. They have established the concept of a software service. A software
service is performed by a software program. It produces effects that have value to the people or organizations that
are its consumers. It has a provider a person or organization that takes responsibility for running the program to
produce those effects. And there is an implicit or explicit contract between the provider and the consumers that the
program will produce the effects that the consumers expect.
Software services can be provided over the Internet and the world-wide web. In some countries, for example, the
government provides a service by which taxpayers can complete and submit their tax returns via the web. Here, the
service has a human interface. Services provided over the web can also have software interfaces. For example, there
are commercially-available web services that provide real-time stock quote information in a form where it can be
analyzed by the consumers software. Software services can similarly be provided over enterprises internal networks,
and a service performed by one program can be used by another program running on the same computer system. It
is the organization of an enterprises software as software services that are provided internally in this way, and also
externally, that is the essential characteristic of SOA.
In contrast to the use of large applications, which tend to be information silos that cannot readily exchange
information with each other, the use of finer-grained software services gives freer information flow within and
between enterprises. Integrating major applications is often expensive. SOA can save integration costs.
Organizing internal software as services makes it easier to expose its functionality externally. This leads to
increased visibility that can have business value as, for example, when a logistics company makes the tracking of
shipments visible to its customers, increasing customer satisfaction and reducing the costly overhead of status
enquiries.
Business processes are often dependent on their supporting software. It can be hard to change large, monolithic
programs. This can make it difficult to change the business processes to meet new requirements (arising, for
example, from changes in legislation) or to take advantage of new business opportunities. A service-based
software architecture is easier to change it has greater organizational flexibility, enabling it to avoid penalties
and reap commercial advantage. (This is one of the ways in which SOA can make an enterprise more agile.)
The service concept also makes possible further features of SOA. These can provide additional benefits, as
explained in the rest of this section.
Service Re-Use
Clear service descriptions are a starting point for service re-use, which can provide another major benefit of SOA:
Using existing software modules rather than writing new ones means lower development and testing costs and
in many cases an even greater saving lower maintenance costs.
Messaging
You can have an SOA in which software services invoke each other directly; for example, by programming-language
function calls. But, in many SOAs, the software services always invoke each other by exchanging messages, even
where they are executing on the same processor. This might seem to be an additional overhead but, if the services
are loosely-coupled (as they should be), then the number of message exchanges is relatively small, and the
overhead is reasonably low.
Consistent use of messaging provides a key benefit:
Services can very easily be moved between computer systems within the enterprise, and it is reasonably easy to
use externally-provided services to replace internal ones, and vice versa. Which services handle which messages
can be changed rapidly to meet changing business needs, or to tune performance. In short, messaging provides
significant configuration flexibility.
Having a central mechanism by which all messages are exchanged facilitates monitoring, control, transformation, and
security of messages.
Message Monitoring
Message monitoring can provide three key benefits:
Monitoring message streams between business activities, and analyzing them to obtain information about those
activities, is known as business activity monitoring. It can be a valuable source of business intelligence.
Monitoring message volumes and response times is a valuable source of performance measurement. Service
contracts often include performance clauses. Performance measurement enables service designers to put
realistic clauses into the contracts, and enables systems managers to verify that those clauses are being met.
Monitoring messages and message volumes can provide security attack detection, including detection of denial-
of-service attacks as well as of attacks in particular messages.
Message Control
Message control can provide:
Application of management policy; for example, by restricting a service consumer to a contracted service volume,
or giving priority to certain kinds of message
Application of security policy; for example, by controlling access to certain services, or rejecting messages that
could damage the enterprise systems or the enterprise itself (e.g., messages containing viruses that could
destroy data)
Message Transformation
Data translation the conversion of data from one format to another through automated field mapping.
Data conversion by specially-written software is expensive. The use of generic data translators can bring significant
cost saving.
Message Security
Security is a complex area that is of crucial importance to enterprises. The ability to encrypt and apply integrity
checking to messages in transit can be a valuable component of an overall security strategy.
Complex Event Processing
As well as being invoked by their consumers, services can respond to events from other sources. For example, a
financial information service might respond to stock-price changes, or a manufacturing production-control service
might respond to production process events, such as changes in temperature of the materials being processed.
In many cases, action is taken when a pattern of events is recognized, rather in response to individual events. A
financial information service might notify the user when a volume of trades is exceeded rather than in response to a
single trade. A production-control service might take measurements from a number of sensors and take action when
the average exceeds a limit. This aggregation of simple events to generate complex events is known as Complex
Event Processing (CEP).
In SOA, CEP is often used, not only for external events, but also to detect patterns in the flow of messages between
services. When used in this way, it becomes an extension of message monitoring.
CEP is often linked with business activity monitoring. For example, detection of a particular pattern in sales
transaction messages could provide advance warning of difficulties for the production process. In some industries,
such as banking, detection of particular patterns may indicate fraudulent activity, or assist with regulatory compliance.
CEP can also be used with performance measurement and security attack detection. For example, where a service
contract specifies an average level of performance, CEP used in conjunction with performance measurement could
generate contract exception events. CEP might also be used to generate security events for unusual message
volumes or patterns.
Simplification of software structure by removing functionality that is not business-related from the business
software services
Ability to adapt quickly to different external environments by concentrating in one place the logic that relates
environmental events to business events
Improved manageability and security when used with performance measurement and security event detection
Service Composition
Service composition is the putting together of a number of simple services to make a more complex one. For
example, a product sale web service could be composed of simpler product selection, shopping cart review,
payment method selection, credit card payment, and invoice payment services. Service composition provides a
key benefit:
For example, if it is decided that the product sale service should cater for a new method of payment Internet cash
this can be done by developing a new Internet cash payment service, and including it in the composition.
So far, this sounds to be little different from other software modularization techniques, from machine-code
subroutines through to Java objects. Indeed, in an SOA that does not include messaging, service composition will be
implemented by some such technique. But in many SOAs composition is implemented by services sending
messages to invoke other services, and this technique gives much greater flexibility.
Hard-wiring is a simple approach, but it has limitations. A different and much more flexible approach is service
discovery. In this approach, the identity of the target service is not known at programming time, but is discovered at
run time. The user program finds target services that meet its requirements, and chooses one of them.
Ability to optimize performance, functionality, and cost by selecting component services by these criteria
Easier introduction of system upgrades an upgraded service can be made available for selection in parallel with
the one that it replaces, which can then be withdrawn
Asset Wrapping
The IT assets of an enterprise can often be considered as actors that perform services. A CPU performs an
information processing service; a filestore performs an information storage service; and so on. This includes software
as well as hardware assets. A database management system performs a database management service; an
accounts package performs a financial information processing service.
An important feature of SOA is the recognition that these assets perform services, and the development of software
faades that provide access to these assets and have interfaces that are in the same form as the interfaces to other
software services of the enterprise. This is called asset wrapping. From a component-based software engineering
point of view, the assets and the faade are components that are assembled to form a software service. The software
services formed in this way can be used in service composition, have registry entries, and be dynamically discovered,
in the same way as other services.
When an enterprise adopts an SOA, asset wrapping is typically applied to existing application software packages.
This provides a significant benefit:
Ability to integrate existing assets which means that the value of an enterprises existing assets is preserved,
the cost of developing or acquiring replacements is avoided, and there is a smooth migration path from the old
architecture to the new one
With the advent of SOA, some application vendors have begun to offer versions of their products in which the product
capabilities are exposed as services. The acquisition of such a version is clearly a convenient way for an enterprise to
achieve the wrapping of an application asset.
Virtualization
A faade can present to the consumer a virtual asset that does not correspond to the real underlying assets. This
technique is called virtualization. Virtualization can be used to enable programs that were written to use one asset to
be executed with a different asset. For example, there are so-called hypervisors that can provide different operating
system environments to programs running on a single CPU. But in the context of SOA it is more commonly used to
create virtual assets that are functionally similar to the underlying assets. This can deliver two benefits:
Improved reliability through redundant operation of the underlying assets, so that one can take over when
another fails or is withdrawn for maintenance
Ability to scale operations to meet different demand levels through dynamically increasing or reducing the
number of underlying assets that support a real asset, as demand rises and falls
These benefits are particularly important when the principles of SOA are applied to enterprise infrastructure. While
SOA is most commonly thought of as a way of architecting an enterprises application software, it can also be used at
the infrastructure level, to create a Service-Oriented Infrastructure (SOI). Taken to the limit, this can provide a form of
grid computing. The use of virtual assets that are made available over the Internet has become known as cloud
computing.
Model-Driven Implementation
Model-driven implementation refers to the automatic realization of a system or application from an abstract model.
Where the model starts at a high level of architectural abstraction, it is usually referred to as Model-Driven
Architecture (MDA).
SOA lends itself particularly well to model-driven implementation, because it is based on a high-level software module
concept (the service) for which there are good definition and interface standards.
In SOA, model-driven implementation can be applied to service compositions as well as to software services.
Oracle JCA compliant adapters, which enable you to integrate your business applications, and which
provide a robust, lightweight, highly-scalable and standards-based integration framework for
disparate applications to communicate with each other
With the growing need for business process optimization, efficient integration with existing back-end
applications has become the key to success. To optimize business processes, you can integrate
applications by using JCA 1.5 compliant resource adapters. Adapters support a robust, light weight,
highly scalable, and standards-based integration framework, which enables disparate applications to
communicate with each other. For example, adapters enable you to integrate packaged applications,
legacy applications, databases, and Web services. Using Oracle JCA Adapters, you can ensure
interoperability by integrating applications that are heterogeneous, provided by different vendors,
based on different technologies, and run on different platforms.
Provide a connectivity platform for integrating complex business processes: Adapters integrate
mainframe and legacy applications with enterprise resource planning (ERP), customer relationship
management (CRM), databases, and messaging systems. Oracle provides adapters to connect various
packaged applications, such as SAP and Siebel, and databases. In addition, adapters integrate
middleware messaging systems, such as MQSeries and Oracle Advanced Queuing, and legacy
applications, such as CICS and Tuxedo, to provide a complete solution.
Support open standards: Adapters are based on a set of standards such as J2EE Connector Architecture
(JCA) version 1.5, Extensible Markup Language (XML), and Web Service Definition Language
(WSDL). The support for standards reduces the learning curve of a user and eliminates the
dependency of users on a single vendor.
Service Component Architecture (SCA) assembly model: Provides the service details and their
interdependencies to form composite applications. SCA enables you to represent business logic as
reusable service components that can be easily integrated into any SCA-compliant application. The
resulting application is known as an SOA composite application. The specification for the SCA
standard is maintained by the Organization for the Advancement of Structured Information Standards
(OASIS).
Implement a Service-Oriented Architecture (SOA): The support for open standards enables adapters to
implement an SOA, which facilitates loose coupling, flexibility, and extensibility.
Use native APIs: Adapters support multiple ways of interfacing with the back-end system and provide
various deployment options. Using native APIs, adapters communicate with the back-end application
and also translate the native data to standard XML, which is provided to the client.
Model data: Adapters convert native APIs to standard XML and back, based on the adapter metadata
configured during design time. Adapter configurations are defined during design time, which is used
by runtime components.
Facilitate real-time and bidirectional connectivity: Adapters offer bidirectional communication with
various back-end systems. This includes sending requests to back-end systems and receiving a
response. Adapters also support the real-time event notification service. This service notifies about the
back-end events associated with successful back-end transactions for creating, deleting, and updating
back-end data. This two-way connectivity ensures faster, flexible, efficient integration, and reduces
the cost of integration.
Maximize availability: Oracle JCA Adapters are based on the J2CA 1.5 specification. Adapters can,
therefore, fully leverage the scalability and high availability of the underlying Oracle Application
Server platform.
For more information, see Developing Resource Adapters for Oracle WebLogic Server.
Provide easy-to-use design-time tools: Adapters use design-time tools that provide a graphical user
interface (GUI) to configure and administer adapters for fast implementation and deployment. In
addition, the tools let you to browse, download, and configure back-end schemas.
Support seamless integration with Oracle Application Server components: Adapters integrate with
Oracle Fusion Middleware. Adapters integrate with the JCA Binding Component of the Oracle Fusion
Middleware platform, thereby seamlessly integrating with other service engines and binding
components.
Architecture
Design-Time Components
Runtime Components
Deployment
1.2.1.1 Architecture
Oracle technology adapters are based on J2EE Connector Architecture (JCA) 1.5 standards and deployed as a
resource adapter in the same Oracle WebLogic Server as Oracle Fusion Middleware. Oracle Adapter for
Oracle Applications has a similar architecture as that of the Oracle technology adapters. Figure 1-2 illustrates
the architecture of Oracle technology adapters.
For more information about integration of Oracle technology adapters with Oracle Fusion Middleware,
see Adapter Integration with Oracle Fusion Middleware.
JDeveloper provides accessibility options, such as support for screen readers, screen magnifiers, and standard
shortcut keys for keyboard navigation. You can also customize JDeveloper for better readability, including the
size and color of fonts and the color and shape of objects. For information and instructions on configuring
accessibility in JDeveloper, see Oracle JDeveloper Accessibility Information" in Developing Applications
with Oracle JDeveloper.
Example of generating WSDL and binding configuration files for Oracle JCA Adapter for Database:
By using JDeveloper, you can configure Oracle JCA Adapter for Database. This adapter helps you to perform
data manipulation operations, call stored procedures or functions, and publish database events in real time. To
configure adapter definitions, drag and drop Database Adapter from the Components window to the External
References swim lane.
XSL Transformations (XSLT) is a standard way to describe how to transform
(change) the structure of an XML (Extensible Markup Language) document
into an XML document with a different structure.
XSLT is used to describe how to transform the source tree or data structure of
an XML document into the result tree for a new XML document, which can be
completely different in structure. The coding for the XSLT is also referred to as
a style sheet and can be combined with an XSL style sheet or be used
independently.
XSD can also be used for generating XML documents that can be treated as
programming objects. In addition, a variety of XML processing tools can also
generate human readable documentation, which makes it easier to
understand complex XML documents.
XSD has several advantages over earlier XML schema languages, such
as Document Type Definition (DTD) or Simple Object XML (SOX). XSD is written
in XML, which means that it doesn't require intermediary processing by
a parser. Other benefits include self-documentation, automatic schema
creation and the ability to be queried through XML Transformations (XSLT).
The XML information set, also called the XML Infoset, is a specification for an
abstract model of an Extensible Markup Language (XML) document. The
specification contains a consistent set of definitions for use in other
specifications relevant to the data in XML documents
The specification describes the data model for an XML document as a set of
information items. According to the Second Edition recommendation, the XML
Infoset can contain the following information items:
documents
attributes of documents
characters
comments
unparsed entities
notations
namespaces
SOAP calls are much more likely to get through firewall servers, since HTTP is
typicallyPort 80 compliant, where other calls may be blocked for security
reasons. Since HTTP requests are usually allowed through firewalls,
programs using SOAP to communicate can be sure that the program can
communicate with programs anywhere
Some of the advantages of leveraging SOAP include:
UDDI stands for Universal Description, Discovery, and Integration. The UDDI Project is an industry
initiative aims to enable businesses to quickly, easily, and dynamically find and carry out
transactions with one another.
A populated UDDI registry contains cataloged information about businesses; the services that they
offer; and communication standards and interfaces they use to conduct transactions.
Built on the Simple Object Access Protocol (SOAP) data communication standard, UDDI creates a
global, platform-independent, open architecture space that will benefit businesses.
The UDDI allows clients to search this registry, find the intended service, and retrieve its details. These details
include the service invocation point as well as other information to help identify the service and its
functionality.
Web service capabilities are exposed through a programming interface, and usually explained through Web
Services Description Language (WSDL). In a typical publish-and-inquire scenario, the provider publishes its
business; registers a service under it; and defines a binding template with technical information on its Web
service. The binding template also holds reference to one or several tModels, which represent abstract
interfaces implemented by the Web service. The tModels might have been uniquely published by the provider,
with information on the interfaces and URL references to the WSDL document.
To find an implementation of a known interface. In other words, the client has a tModel ID and seeks
binding templates referencing that Model.
To find the updated value of the invocation point (that is., access point) of a known binding template
ID.
UDDI and Business Registry
As a Business Registry solution, UDDI enables companies to advertise the business products and services they
provide, as well as how they conduct business transactions on the Web. This use of UDDI complements
business-to-business (B2B) electronic commerce.
The minimum required information to publish a business is a single business name. Once completed, a full
description of a business entity may contain a wealth of information, all of which helps to advertise the
business entity and its products and services in a precise and accessible manner.
SOAP
SOAP was originally part of the specification that included the Web Services Description
Language (WSDL) and Universal Description, Discovery, and Integration (UDDI). It is used
now without WSDL and UDDI. Instead of the discovery process described in the History of the
Web Services Specification section below, SOAP messages are hard-coded or genereated
without the use of a repository. The interaction is illustrated in the figure below. More onSOAP.
1. A service provider describes its service using WSDL. This definition is published to a repository
of services. The repository could use Universal Description, Discovery, and Integration (UDDI).
Other forms of directories could also be used.
2. A service consumer issues one or more queries to the repository to locate a service and determine
how to communicate with that service.
3. Part of the WSDL provided by the service provider is passed to the service consumer. This tells
the service consumer what the requests and responses are for the service provider.
4. The service consumer uses the WSDL to send a request to the service provider.
5. The service provider provides the expected response to the service consumer.
SOAP
All the messages shown in the above figure are sent using SOAP. (SOAP at one time stood for
Simple Object Access Protocol. Now, the letters in the acronym have no particular meaning .)
SOAP essentially provides the envelope for sending the Web Services messages. SOAP
generally uses HTTP , but other means of connection may be used. HTTP is the familiar
connection we all use for the Internet. In fact, it is the pervasiveness of HTTP connections that
will help drive the adoption of Web Services. More on SOAP and Messaging.
The next figure provides more detail on the messages sent using Web Services. At the left of the
figure is a fragment of the WSDL sent to the repository. It shows a CustomerInfoRequest that
requires the customer's account to object information. Also shown is the CustomerInfoResponse
that provides a series of items on customer including name, phone, and address items.
At the right of this figure is a fragment of the WSDL being sent to the service consumer. This is
the same fragment sent to the repository by the service provider. The service consumer uses this
WSDL to create the service request shown above the arrow connecting the service consumer to
the service provider. Upon receiving the request, the service provider returns a message using the
format described in the original WSDL. That message appears at the bottom of the figure.
XML is used to define messages. XML has a tagged message format. You can see this in the
SOAP and REST examples in the first section and in the figure above. In each of the examples,
the tag <city> has the value ofBurnsville. And </city> is the ending tag indicating the end of the
value of city. Both the service provider and service consumer use these tags. In fact, the service
provider could send the data shown at the bottom of this figure in any order. The service
consumer uses the tags and not the order of the data to get the data values. More on the use of
XML tags and a comparison of XML to using fixed record formats can be found in chapter 3
of Web Services, Service-Oriented Architectures, and Cloud Computing: The Savvy Manager's
Guide. Also see XML Processing for an overview of the XML processing in a service.
Service-oriented architectures are not a new thing. The first service-oriented architecture for
many people in the past was with the use DCOM or Object Request Brokers (ORBs) based on
the CORBA specification. For more on DCOM and CORBA, see Prior Service-Oriented
Architectures.
Services
If a service-oriented architecture is to be effective, we need a clear understanding of the term
service. A service is a function that is well-defined, self-contained, and does not depend on the
context or state of other services. SeeService.
Connections
The technology of Web Services is the most likely connection technology of service-oriented
architectures. The following figure illustrates a basic service-oriented architecture. It shows a
service consumer at the right sending a service request message to a service provider at the left.
The service provider returns a response message to the service consumer. The request and
subsequent response connections are defined in some way that is understandable to both the
service consumer and service provider. How those connections are defined is explained in Web
Services Explained. A service provider can also be a service consumer.
Also see Web Services Definition, Web Services Explained, and Service-Oriented Architecture
(SOA) and
Services in SOA
Services are the basic building blocks in a Service Oriented Architecture (SOA). This article
examines services in SOA more closely by describing the key characteristics of services in
SOA, discussing the different types of services in SOA, and explaining where services
reside in the different SOA layers.
A service is a self-contained unit of software that performs a specific task. It has three
components: an interface, a contract, and implementation. The interface defines how a
service provider will perform requests from a service consumer, the contract defines how
the service provider and the service consumer should interact, and the implementation is
the actual service code itself. Because the interface of a service is separate from its
implementation, a service provider can execute a request without the service consumer
knowing how it does so; the service consumer only worries about consuming services.
In a service oriented architecture, services can be combined with other available services in
a network through service orchestration to create higher-level composite services and
applications. A service is reusable, non-context specific, stateless, and can be dynamically
discovered across the enterprise, in partner systems, or in the cloud. These characteristics
enable services to be loosely coupled, resulting in new applications that are designed
according to SOA principles.
Services can be derived from existing IT assets or created from the ground up by writing
new code. In the former approach, also known as service enabling, business logic, data,
and other existing assets in legacy systems are transformed into services, which can then
be invoked by other services to create composite services and applications. Enterprises
looking to implement SOA should ideally begin by leveraging their existing assets to create
services, but developing new services from scratch is sometimes required in particular
circumstances.
An important point to bear in mind when creating a service in SOA is granularity. A course-
grained service includes more functionality (i.e. more operations) than a fine-grained
service, which includes less functionality (i.e. fewer operations). The granularity of a service
will vary depending on its purpose, but a poorly grained service results in low reuse
possibilities and the misalignment of enterprise systems with business objectives.
There are several types of services in SOA, which are divided into two categories: Business
Services and Infrastructure Services.
Business Services are services that perform specific business functions and are required for
the successful completion of a business process. They might also be called Application
Services since they are used to develop composite services and business applications that
automate business processes. For example, a retail enterprise might have an Inventory
Service, Customer Management Service, and Shipping Service in its repository of
business services.
Business Services can be further divided into Entity Services, Capability Services, Activity
Services, and Process Services. Entity Services are the data-centric components of the
enterprise system and are responsible for exposing the information stored in backend
databases. They can be thought of as the nouns of the business process. Capability
Services and Activity Services, meanwhile, are the verbs. They are the action-centric
components that implement business capabilities. Whereas Capability Services are coarse-
grained and provide generic business capability, activity services are more fine-grained and
provide specific business capability. Rounding out the business services category are
Process Services, which contain the business logic and couple the Entity Services and
Activity and Capability Services via service orchestration to create composite business
services.
The other main category of services is Infrastructure Services, which are part of a centrally
managed infrastructure component such as an Enterprise Service Bus (ESB). Infrastructure
Services provide the technical functionality necessary for the implementation of business
processes in SOA, but do not directly add business value. Examples of Infrastructure
Services include SaaS Integration Services, Authentication Services, Event Logging
Services, and Exception Handling Services.
Infrastructure Services are further divided into Communication Services and Utility Services.
Communication Services are mainly concerned with transporting messages both within and
without the enterprise while Utility Services provide other technical capabilities not related to
message transfer.
Although there are several approaches to categorizing the different types of services in
SOA, the main distinction to remember is the one between Business Services and
Infrastructure Services. Infrastructure Services are agnostic and have greater reuse
possibilities while Business Services directly translate into business processes. The reuse
possibilities of Business Services will vary depending on how they are designed.
To get a better sense of the role of services in SOA, you can think of SOA in terms of
abstract layers:
Enterprise Layer
Process Layer
Service Layer
Component Layer
Object Layer
The first layer, the Object Layer sits at the bottom and consists of legacy systems, including
custom-built applications and databases that contain business functionalities. These legacy
enterprise objects can be leveraged to build composite services - proof that SOA doesnt
have to mean rip and replace. Just above the Object Layer is the Component Layer
consisting of enterprise components. These components are responsible for realizing the
functionality of services.
The middle layer is the Service Layer, which is where exposed services (both individual and
composite services) carrying out business functions reside. The Service Layer acts as a
bridge between the lower-level layers (the Object Layer and Component Layer) and the
higher-level layers (the Process Layer and Enterprise Layer). Enterprise components can
be exposed as services in this layer, making reuse a real possibility.
Next is the Process Layer. Here, the services exposed in the Service Layer are combined
through service orchestration or service choreography to create a single application that
realizes and automates a business process. The final layer is the Enterprise Layer (also
known as a Presentation Layer), which is the end-users point of access to the composite
enterprise application, typically over the Internet.
As the layered abstraction above makes clear, services play a fundamental role in SOA. For
enterprises facing integration challenges and looking to increase business agility in meeting
customer demands and to cut IT costs, SOA doesnt have to be difficult to understand. As
long as business leaders understand what services are (and their different types) and how
each layer contributes to building new applications, SOA becomes less foreign as a concept
and instead becomes a mission-critical IT goal waiting to be realized.