![if !IE]> <![endif]>
SOA is Interoperation issues Heterogeneous network protocols Heterogeneous hardware platforms
Heterogeneous operating systems Heterogeneous application formats
1 Increased Competitions
2 Enhancement of Business Capabilities
3 There must be consensus On Interoperability
What is Web Services?
Web Services can convert your applications into Web-applications. Web Services are published, found, and used through the Web.
Web services are application components Web services communicate using open protocols Web services are self-contained and self-describing Web services can be discovered using UDDI Web services can be used by other applications XML is the basis for Web services
· Web Services can convert your applications into Web-applications. Web Services are published, found, and used through the Web.
· Web services are application components
· Web services communicate using open protocols Web,services are self-contained and self-describing, Web services can be discovered using UDDI
· Web services can be used by other applications XML is the basis for Web services
• There are five fundamental Web Services standards.
• Two of them are general standards that existed beforehand and were used to realize the Web Services approach:
• XML is used as the general format to describe models, formats, and data types.
• HTTP (including HTTPS) is the low-level protocol used by the Internet.
• The other three fundamental standards are specific to Web Services and were the first standards specified for them:
Service is component of distinctive functional meaning that typically encapsulate a high-level business concept
1 Lego block
Service contains Contract – message type def, constraint, description (comment)
2 Interface – set of operations
3 Implementation – Logic and data
Web Services refers to a collection of standards that cover interoperability
MESSAGING WITH SOAP:
1 SOAP - Simple Object Access Protocol
2 SOAP Envelope
3 SOAP Header
4 SOAP Body
5 SOAP Fault
6 SOAP Roles
7 SOAP Message Exchange Patterns
SOAP - Simple Object Access Protocol
SOAP is short for Simple Object Access Protocol. SOAP is an XML based message format used in the client - service communication popularly called web services. SOAP XML Format includes
SOAP Message Styles
SOAP MEP (Message Exchange Patterns)
SOAP Message Routing
SOAP via HTTP
SOAP Message Format
Here is a simple sample SOAP message:
<soap:Envelope xmlns:soap=‖http://www.w3.org/2001/12/soap-envelope" > <soap:header>
This element is optional </soap;fault> </soap:body> </soap:envelope>
A SOAP message consists of a Envelope element, inside which a Header and a Body element can be nested.
Inside the Body element a Fault element can be nested, if an error occurs in the web service. Each of these SOAP elements will be explained on the following pages of this SOAP trail.
SOAP Requests and Responses Both Use Envelope's
The SOAP message format as shown earlier is used both to send requests from the client to the web service, and to send responses back to the client from the web service.
Thus the SOAP request and response message format is the same. It is not like in HTTP where the request and response formats are different.
The SOAP Envelope element is the root element in a SOAP message.
Inside the SOAP Envelope you find a Header (optional) and a Body element.
The name space declaration inside the Envelope element: xmlns:env="http://www.w3.org/2002/06/soap-envelope"
This name space declaration must always be present in a SOAP Envelope element. The prefix (env) can change as you see fit.
SOAP Header Table of Contents
Header Child Element Attributes o mustUnderstand
o encodingStyle o role
The SOAP Header element is an optional child element of the Envelope element. Inside the Header element you can put information that is not part of the body of a SOAP message.
Whatever that information could be, is up to you. For instance, it could be information about the maximum time the SOAP request may take to process, or something similar which is not directly related to the message itself.
Here is a sample SOAP Header element (Header element marked in bold): <?xml version="1.0"?>
<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" > <env:Header>
<jj:maxTime value="10000" xmlns:jj="http://jenkov.com"/> </env:Header>
Header Child Element Attributes
The Header child elements has a list of standard attributes you can use inside them:
mustUnderstand encodingStyle role
Each of these attributes are described in the following sections.
The mustUnderstand attribute means that any node (computer) processing the SOAP message must understand the given header block. A "node" may not alway be the final of the SOAP message. The message might be routed via intermediate nodes before ending up at the receiving / processing node (the final web service).
Here is an example: <env:Header>
<jj:maxTime value="10000" xmlns:jj="http://google.com" mustUnderstand="true"
The encodingStyle attribute is skipped here.
A node processing / forwarding a SOAP message is said to act in one or more SOAP roles. Header blocks (elements) can be targeted at nodes acting in specific roles. In other words, if a header block is targeted for nodes acting in the "ultimateReceiver" role, then only nodes acting as ultimate receivers must process that header block. All other nodes should leave it unprocessed.
SOAP roles are explained in more detail in the SOAP Roles text.
The relay attribute determines if a header block is allowed to be relayed if not processed. In other words, if an intermediary node forwards the SOAP message without processing the header element in which the relay attribute is found, should that header element then be forwarded (relayed) in the message, or taken out?
The relay attribute only has two valid values: 1. true 2. false
If the attribute is set to true then this header element can be forwarded even if not processed.If the attribute is set to false then this header element should be removed if the message is forwarded. Omitting the relay attribute is equivalent to setting it to false.
Here is an example header using a relay attribute:
<jj:maxRelayTime value="10000" xmlns:jj="http://jenkov.com" role="http://www.w3.org/2003/05/soap-envelope/role/next" relay="true"
The SOAP Body element is the element in a SOAP message that contains the main part to be processed by either client or web service. While a Header element is optional, a Body element is mandatory. You MUST have a Body element in a SOAP message.
Here is a sample SOAP Body element (Body element marked in bold): <?xml version="1.0"?>
<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" > <env:Header>
The body of a SOAP message can consist of pretty much whatever XML you feel like putting inthere, as long as it is valid. However, you cannot put text inside the Body element. Text should be nested inside child elements of the Body element.
It is recommended that child elements of the Body element are name space qualified. Here are two Body element examples. The first example sends 4 parameters (elements)
separately inside the Body element. The second example nest these 4 parameters inside a <service> element.
These standards define both the protocols that are used to communicate and the format of the interfaces that are used to specify services and service contracts Fundamental Web
– WSDL is used to define service interfaces. In fact, it can describe two different aspects of a service: its signature (name and parameters) and its binding and deployment details (protocol and location).
– SOAP is a standard that defines the Web Services protocol. While HTTP is the low-level protocol, also used by the Internet, SOAP is the specific format for exchanging Web Services data over this protocol.
– UDDI is a standard for managing Web Services (i.e., registering and finding services).
Message exchange patterns
Table of Contents
SOAP Fault Structure
The SOAP Fault element is returned inside the Body element from a web service (or intermediary node) in case an error occurs while processing the received SOAP message.
Here is a sample SOAP Fault element (Fault element marked in bold):
<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" >
<env:Text xml:lang="en-US">Processing error</env:Text>
Table of Contents
Predefined SOAP Roles Custom SOAP Roles
SOAP Roles in Header Elements SOAP Roles in Fault Element
A node processing / forwarding a SOAP message is said to act in one or more SOAP roles. Here is a simple diagram showing 3 nodes (computers) involved in the processing of a SOAP message:
Nodes acting in different SOAP roles during SOAP message processing.
The first node is the sender. This role is not mentioned in the SOAP specification though. The second node is an intermediary node which forwards the SOAP message. Intermediary nodes may also alter the SOAP message. For instance, they may add, modify or remove header elements, or even change the body. Intermediary nodes are set to act in the next role.
The last node in the diagram is the "ultimateReceiver" of the SOAP message. The ultimate receiver is the node that actually processes the SOAP message. It is the "web service" in other words. Clever minds may claim though, that the "web service" actually consists of the whole chain of SOAP message processing nodes, and not just the ultimate receiver.
Predefined SOAP Roles
The SOAP specification predefines three roles:
SOAP Roles Role Name Role URI next www.w3.org/2003/05/soap-envelope/role/next none www.w3.org/2003/05/soap-envelope/role/none ultimateReceiver www.w3.org/2003/05/soap-envelope/role/ultimateReceiver
The next role are assumed by both intermediary nodes, and the ultimate receiving node.
The none role is special. No node should act in the "none" role. Header blocks targeted at this role should usually either be left unprocessed, or is used when processing some other header block.
The ultimateReceiver role is reserved for the ultimate receiver of the SOAP message. Header blocks without this role attribute value should not process that header block.
Custom SOAP Roles
SOAP roles are not limited to the three predefined roles listed in the previous section. SOAP roles can be any role you define yourself. If you define your own roles, you will also have to define the semantics of those roles yourself. In other words, you will have to decide what it means to act in these roles you make up yourself.
SOAP Roles in Header Elements
SOAP roles can be used in SOAP Header elements.
Here is a Header example using the role attribute:
<jj:maxTime value="10000" xmlns:jj="http://jenkov.com"
When a SOAP Header child element contains a role attribute, only nodes acting in that role must process that element. All other nodes should leave it be.
SOAP Roles in Fault Element
SOAP roles can also be used in SOAP Fault elements. When used in a Fault element the role tells which role the faulting node was acting in, when the fault occurred.
Here is a Fault element example using a Role element:
<env:Text xml:lang="en-US">Error in Input Data</env:Text>
SOAP MESSAGE EXCHANGE PATTERNS :
Request - Response
The SOAP specification mentions a concept called "message exchange patterns" (MEP). There are two basic message exchange patterns described in the SOAP specification:
1. Request - Response 2. Response 3. These two message exchange patterns are described in the following sections. 4. Request - Response 5. In a request - response message exchange the SOAP client sends a SOAP request message to the service. The service responds with a SOAP response message. 6. A request - response message exchange patterns is necessary when the SOAP client needs to send data to the SOAP service, for the service to carry out its job. For instance, if the client request that data be stored by the service, the client needs to send the data to be stored to the service. 7. Here is an illustration of a request - response message exchange:
A SOAP request - response
In a response message exchange the SOAP client connects to the service, but does not send a SOAP message through. It just sends e.g. a simple HTTP request. The service responds with with a SOAP message.
This message exchange pattern is similar to how a browser communicates with a web server. The browser sends an HTTP request telling what page it wants to access, but the HTTP request does
not carry any additional data. The web server responds with an HTTP response carrying the requested page.
Here is an illustration of the response message exchange pattern:
A SOAP response message exchange.
ATOMIC TRANSACTIONS & BUSINESS ACTIVITIES:
Transactions as Atomic Actions Two Phase Commit Transactions A Two Phase Commit
Transaction Coordination One Service Per Transaction
A bank application needs to transfer money from one account to another. Currently the bank system has two services:
Deposit Service Withdrawal Service
Here is an illustration of the bank system:
Service Transactions - a simple bank application using two services.
Transactions as Atomic Actions
A transaction groups one or more actions together, and makes sure they are executed as if it was just a single action. If one of the actions fail, all of the actions fail. Only if all actions succeed will the result of the actions be "committed" (permanently stored) to the system.
Here is an illustration of the withdrawal and deposit service being grouped into a transaction:
Service Transactions - two services grouped into a single transaction.
Two Phase Commit Transactions Services participating in a transaction needs to be coordinated in order to assure that either all or non of the services called "commit" their actions within that transaction. A popular way to coordinate such distributed transactions is the "Two Phase Commit" protocol.
The two phase commit protocol consists of three steps:
1. Begin Transaction
2. Prepare Phase
3. Commit Phase
First all participants are told to participate in a transaction. From this point on, all actions carried out by each participant refering to this transaction, must be carried out as a single action (all or non).
The actions cannot be committed to the main system yet, but must be kept internally in the participant (service), until the participant is instructed to commit the actions.
Second, once all actions are executed successfully by all participants, all participants (e.g. services) are ordered to move to the "prepare phase".
Once a participant is successfully in prepare phase, the participant must guarantee that all actions carried out inside the transaction are ready to be committed.
If the participant fails after it has successfully moved into the prepare phase, it must be able to commit the actions once the participant is functioning correctly again. In other words, the actions executed inside the transaction must be able to survive even a participant crash / reboot. This is usually done by writing a transaction log to a durable medium , e.g a hard disk. If one of the participants cannot move to the prepare phase, all participants are ordered to rollback (abort) the transaction. If all participants successfully move to the prepare phase, then all participants are now ordered to commit their actions. Once committed, the actions are then visible in the system, and permently executed.
A Two Phase Commit Weakness o The two phase commit protocol is not 100% secure. Imagine if a service crashes after entering the prepare phase. Now all services are requested to commit. Imagine that the failed service is the last service in the chain to be ordered to commit. But the commit order fails, because the service has crashed. o All other services in this transaction would already have committed their actions, but not this last one. Normally, the service would have to commit it's part of the transaction once the service is operational again. Here is an illustration of a two phase commit transaction where the last service fails to commit:
Service Transactions - A two phase commit transaction failing.
When multiple services are to participate in a transaction, some entity must coordinate the transaction. In other words someone has to say when the transaction begins, and when to move to the prepare and commit phases entity, the transaction coordinator, can be either:
The application An enterprise service bus A separate transaction manager / service
One Service Per Transaction
A way to simplify transaction management in a service oriented architecture is to design the services so each transaction is contained within a single service.
For instance, in the example at the beginning of this text the money transfer would be implemented as a separate service, instead of a transaction involving two services.
ORCHESTRATION AND CHOREOGRAPHY
Used to standardize enterprise application integration as well as to extend the integration to previously isolated systems
• Between enterprises, BPEL enables easier and more effective integration with business
• Definitions of business processes described in BPEL do not affect existing systems
• Is the key technology in environments where functionalities are already or will be exposed via Web services.
• Usually used in private business processes
• A central process (which can be another Web service) takes control of the involved
• Coordinates the execution of different operations on the Web services involved in the operation.
• The involved Web services do not "know" (and do not need to know) that they are involved in a composition process and that they are taking part in a higher-level business process.
• Only the central coordinator of the orchestration is aware of this goal, so the orchestration is centralized with explicit definitions of operations and the order of invocation of Web services
Markup language for composing a set of discrete services into an end-to-end process flow
The Top Down Perspective
• Does not rely on a central coordinator
• Each Web service involved in the choreography knows exactly when to execute its operations and with whom to interact
• Collaborative effort focusing on the exchange of messages in public business processes
• All participants in the choreography need to be aware of the business process, operations to execute, messages to exchange, and the timing of message exchanges.
Orchestration versus Choreography
• From the perspective of composing Web services to execute business processes, orchestration is a more flexible paradigm and has the following advantages over choreography:
The coordination of component processes is centrally managed by a known coordinator.
Web services can be incorporated without their being aware that they are taking part in a larger business process. – Alternative scenarios can be put in place in case faults occur.
• BPEL supports two different ways of describing business processes that support orchestration and choreography:
– Executable processes allow you to specify the exact details of business processes. They follow the orchestration paradigm and can be executed by an orchestration engine.
– Abstract business protocols allow specification of the public message exchange between parties only. They do not include the internal details of process flows and are not executable. They follow the choreography paradigm.
BUILDING A BUSINESS PROCESS
• Specifies the exact order in which participating Web services should be invoked – sequentially or in parallel.
• Express conditional behaviors. – an invocation of a Web service can depend on the value of a previous invocation.
• Construct loops, declare variables, copy and assign values, define fault handlers, etc.
• By combining all these constructs, you can define complex business processes in an algorithmic manner
• Because business processes are essentially graphs of activities, it might be useful to express them using Unified Modeling Language (UML) activity diagrams. BPEL Steps consists of steps; each step is called an "activity."
• supports primitive as well as structure activities.
• Primitive ActivitiesPrimitive activities represent basic constructs and are used for common tasks, such as the following:
– Invoking other Web services, using <invoke>
– Waiting for the client to invoke the business process by sending a message, using <receive> (receiving a request)
– Generating a response for synchronous operations, using <reply>
– Manipulating data variables, using <assign>
– Indicating faults and exceptions, using <throw>
– Waiting for some time, using <wait>
– Terminating the entire process, using <terminate> Combining Primitives
• Combine these and other primitive activities to define complex algorithms that specify exactly the steps of business processes
• To combine primitive activities, BPEL supports several structure activities. The most important are: – Sequence (<sequence>), which allows us definition of a set of activities that will be invoked in an ordered sequence – Flow (<flow>) for defining a set of activities that will be invoked in parallel
• Structure Activities – Case-switch construct (<switch>) for implementing branches – While (<while>) for defining loops – The ability to select one of several alternative paths, using <pick> – Each BPEL process will also define partner links, using <partnerLink>, and declare variables, using <variable>.
Improved Integration, intrinsic interoperability
• Organizational agility
• Loosely-coupled with reusable assets and services
• Drives business processes closer to end users
• Leverage and integrate existing applications
• Provide standard connections between systems
• Abstract complexity for developers
The SOA is important because without this no service can be provided to the user easy and efficiently
• The service oriented architecture is used in all the web oriented service application in internet.
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.