Jump to content

Service-oriented architecture: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
No edit summary
Line 71: Line 71:
* [http://mule.codehaus.org Mule]: Open Source Messaging Framework
* [http://mule.codehaus.org Mule]: Open Source Messaging Framework
* [[Neon Systems]]: [http://www.neonsys.com The Mainframe Integration Experts]
* [[Neon Systems]]: [http://www.neonsys.com The Mainframe Integration Experts]
* [[Onyx Software]]: Onyx Web Services and the Onyx Process Manager
* [[Onyx Software Corporation]]: Onyx Web Services and the Onyx Process Manager
* [[Open Knowledge Initiative]]: [http://www.okiproject.org Open Service Interface Definitions]
* [[Open Knowledge Initiative]]: [http://www.okiproject.org Open Service Interface Definitions]
* [[Oracle Corporation]]: [[Oracle Application Server]]
* [[Oracle Corporation]]: [[Oracle Application Server]]

Revision as of 05:47, 8 November 2005

In computing, the term Service-Oriented Architecture (SOA) expresses a software architectural concept that defines the use of services to support the requirements of software users. In a SOA environment, nodes on a network[1] make resources available to other participants in the network as independent services that the participants access in a standardized way. Most definitions of SOA identify the use of Web services (i.e. using SOAP or REST) in its implementation. However, one can implement SOA using any service-based technology.

Unlike traditional point-to-point architectures, SOAs comprise loosely coupled (joined), highly interoperable application services. Because these services interoperate over different development technologies (such as Java and .NET), the software components become very reusable i.e. the same C# (C Sharp) service may be used by a Java application and / or any other programming language which can access this service, due to the virtue of the interface definition being defined in a standards compliant manner (WSDL) which encapsulates / hides the vendor / language specific implementation from the calling client / service.

SOA provides a methodology and framework for documenting enterprise capabilities and can support integration and consolidation activities.

High-level languages such as BPEL or WS-Coordination take the service concept one step further by providing a method of defining and supporting workflows and business processes.

SOA definitions

Term Definition / Comment
service (Ideally) a self-contained, stateless business function which accepts one or more requests and returns one or more responses through a well-defined, standard interface. Services can also perform discrete units of work such as editing and processing a transaction. Services should not depend on the state of other functions or processes. The technology used to provide the service, such as a programming language, does not form part of this definition.
orchestration Sequencing services and providing additional logic to process data. Does not include data presentation.
stateless Not depending on any pre-existing condition. In a SOA, services should not depend on the condition of any other service. They receive all information needed to provide a response from the request. Given the statelessness of services, service consumers can sequence (orchestrate) them into numerous flows (sometimes referred to as pipelines) to perform application logic.
provider The function which performs a service in response to a request from a consumer.
consumer The function which consumes the result of a service supplied by a provider.
discovery Service oriented architecture relies on the ability to identify services and their capabilities. Therefore, a SOA depends on a directory which describes the services available in its domain.
binding The relationship between a service provider and consumer is dynamic; it is established at runtime by a binding mechanism.

SOA design and development

The modeling and design methodology for SOA applications has become known by the terms service-oriented analysis and design and SODA. The SOA functions as much as a software development framework as it does as a delivery framework. In order for a SOA environment to operate successfully, software developers need to orient themselves to its mindset of creating common services which clients or middleware then orchestrate to implement processes. Development of systems using the SOA requires a commitment to this model in terms of planning, tools, and infrastructure.

When most people speak of a service-oriented architecture, they speak of a set of services residing on the Internet or an intranet using "Web services." A set of standards exists which generally feature in all discussions of Web services. These standards include the following:

Note, however, that a SOA does not necessarily need to use any or all of these standards to become "service-oriented."

In general, SOA is behind the scenes, not visible to the users. SOA is fronted by a client UI, and end users only see the Client UI. In other words, there is no SOA without clients using it. As such, SOA is an enabling technology, behind the scenes, waiting to be used.

Why SOA?

Enterprise architects believe that SOAs help businesses respond more quickly and cost-effectively to the changing market conditions they may face.

Products

SOA is not a product, although several vendors offer products which can form the basis of a SOA. Examples of such products include (alphabetical by vendor):

See also

Footnotes

  • ^ An alternative view, particularly after initial deployments, is that SOAs properly ought not dictate physical implementation, so the formal definition should not include "network." High performance SOAs may not be viable deployed to distributed nodes on a network, and separate nodes for every (or most) services could be prohibitively expensive. See, for example, IBM System z9 for an alternative to distributed nodes.