Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Service Oriented Architecture

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Service-oriented architecture

From Wikipedia, the free encyclopedia

Service-oriented architecture (SOA) is a flexible set of design principles used during the phases of systems development and integration in computing. A system based on a SOA will package functionality as a suite of interoperable services that can be used within multiple, separate systems from several business domains. SOA also generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well understood, well defined interface to access them. XML is commonly used for interfacing with SOA services, though this is not required. SOA defines how to integrate widely disparate applications for a Web-based environment and uses multiple implementation platforms. Rather than defining an API, SOA defines the interface in terms of protocols and functionality. An endpoint is the entry point for such a SOA implementation. Service-orientation requires loose coupling of services with operating systems, and other technologies that underlie applications. SOA separates functions into distinct units, or services,[1] which developers make accessible over a network in order to allow users to combine and reuse them in the production of applications. These services and their corresponding consumers communicate with each other by passing data in a well-defined, shared format, or by coordinating an activity between two or more services.[2] SOA can be seen in a continuum, from older concepts of distributed computing[1][3] and modular programming, through SOA, and on to current practices of mashups, SaaS, and Cloud Computing (which some see as the offspring of SOA [4]).

Layer interaction in service-oriented Architecture

Contents
1 Description 1.1 Overview 1.2 Requirements 1.3 Principles 1.4 Web services approach 1.5 SOA and Web service protocols 1.6 Other SOA concepts 1.7 SOA definitions 1.8 Programmatic service contract 1.9 SOA and network management architecture 2 Discussion 2.1 Benefits 2.2 Challenges in adopting SOA 2.3 Criticisms of SOA

2.4 SOA Manifesto 3 Roadmap 3.1 Business Process Maintenance 3.2 Integration 3.3 Applications 3.4 Security 3.5 Master Data 4 Extensions 4.1 SOA, Web 2.0, services over the messenger, and mashups 4.2 Web 2.0 4.3 Digital Nervous System 4.4 Lean SOA 5 See also 6 External links 7 References

Description
Overview
The SOA implementations rely on a mesh of software services. Services comprise unassociated, loosely coupled units of functionality that have no calls to each other embedded in them. Each service implements one action, such as filling out an online application for an account, or viewing an online bank statement, or placing an online booking or airline ticket order. Rather than services embedding calls to each other in their source code, they use defined protocols that describe how services pass and parse messages using description metadata. SOA developers associate individual SOA objects by using orchestration. In the process of orchestration the developer associates software functionality (the services) in a non-hierarchical arrangement using a software tool that contains a complete list of all available services, their characteristics, and the means to build an application utilizing these sources. Underlying and enabling all of this requires metadata in sufficient detail to describe not only the characteristics of these services, but also the data that drives them. Programmers have made extensive use of XML in SOA to structure data that they wrap in a nearly exhaustive description-container. Analogously, the Web Services Description Language (WSDL) typically describes the services themselves, while the SOAP protocol describes the communications protocols. Whether these description languages are the best possible for the job, and whether they will become/remain the favorites in the future, remain open questions. As of 2008 SOA depends on data and services that are described by metadata that should meet the following two criteria: 1. The metadata should come in a form that software systems can use to configure dynamically by discovery and incorporation of defined services, and also to maintain coherence and integrity. For example, metadata could be used by other applications, like a catalogue, to perform autodiscovery of services without modifying the functional contract of a service. 2. The metadata should come in a form that system designers can understand and manage with a reasonable expenditure of cost and effort. SOA aims to allow users to string together fairly large chunks of functionality to form ad hoc applications that are built almost entirely from existing software services. The larger the chunks, the fewer the interface points required to implement any given set of functionality; however, very large chunks of functionality may not prove sufficiently granular for easy reuse. Each interface brings with it some amount of processing overhead, so there is a performance consideration in choosing the granularity of services. The great promise of SOA suggests that the marginal cost of creating the n-th application is low, as all of the software required already exists to satisfy the requirements of other

applications. Ideally, one requires only orchestration to produce a new application. For this to operate, no interactions must exist between the chunks specified or within the chunks themselves. Instead, humans specify the interaction of services (all of them unassociated peers) in a relatively ad hoc way with the intent driven by newly emergent requirements. Thus the need for services as much larger units of functionality than traditional functions or classes, lest the sheer complexity of thousands of such granular objects overwhelm the application designer. Programmers develop the services themselves using traditional languages like Java, C, C++, C#, Visual Basic, COBOL, or PHP. SOA services feature loose coupling, in contrast to the functions that a linker binds together to form an executable, to a dynamically linked library or to an assembly. SOA services also run in "safe" wrappers (such as Java or .NET) and in other programming languages that manage memory allocation and reclamation, allow ad hoc and late binding, and provide some degree of indeterminate data typing. As of 2008, increasing numbers of third-party software companies offer software services for a fee. In the future, SOA systems may consist of such third-party services combined with others created in-house. This has the potential to spread costs over many customers and customer uses, and promotes standardization both in and across industries. In particular, the travel industry now has a well-defined and documented set of both services and data, sufficient to allow any reasonably competent software engineer to create travel-agency software using entirely off-the-shelf software services.[5] Other industries, such as the finance industry, have also started making significant progress in this direction. SOA as an architecture relies on service-orientation as its fundamental design principle.[6] If a service presents a simple interface that abstracts away its underlying complexity, users can access independent services without knowledge of the service's platform implementation.[7]

Requirements
In order to efficiently use a SOA, the architecture must meet the following requirements: Interoperability among different systems and programming languages that provides the basis for integration between applications on different platforms through a communication protocol. One example of such communication depends on the concept of messages. Using messages across defined message channels decreases the complexity of the end application, thereby allowing the developer of the application to focus on true application functionality instead of the intricate needs of a communication protocol. Desire to create a federation of resources. Establish and maintain data flow to a Federated database system. This allows new functionality developed to reference a common business format for each data element.

Principles
The following guiding principles define the ground rules for development, maintenance, and usage of the SOA[8]: reuse, granularity, modularity, composability, componentization and interoperability. standards-compliance (both common and industry-specific). services identification and categorization, provisioning and delivery, and monitoring and tracking. The first publicly published research of service-orientation from an industry perspective was provided by Thomas Erl of SOA Systems Inc. who defined eight specific service-orientation principles (http://soaprinciples.com) common to all primary SOA platforms. These principles were published in Service-Oriented Architecture: Concepts, Technology, and Design, on the www.soaprinciples.com research site, and in the September 2005 edition of the Web Services Journal (see Service-orientation). Standardized Service Contract Services adhere to a communications agreement, as defined collectively by one or more service-description documents.

You might also like