- From: He, Hao <Hao.He@thomson.com.au>
- Date: Tue, 9 Sep 2003 09:13:18 +1000
- To: "'David Orchard'" <dorchard@bea.com>, www-ws-arch@w3.org
- Message-ID: <686B9E7C8AA57A45AE8DDCC5A81596AB0922DB5D@sydthqems01.int.tisa.com.au>
hi, David, I agree with you that defining SOA using constraints is a good idea and the approach taken by Roy is a good one. However, I don't agree with the details you define SOA in [1]. My view is that SOA is to achieve loose coupling via the two constraints I listed. SOA may not be REST but REST is an instance of SOA. Good Web Services are instances of SOA as well but not all of them are good. So if you have a closed schema, you might still have a Web service but you have also defeated the purpose of loose coupling. Again, SOA is not the Web architecture although the Web architecture is an instance of SOA. Using this SOA definition, we can add additional constraints to get REST, and WSDL/SOAP Web services as you suggested: SOAP/WSDL Web service SOAP/WSDL Web service introduces the following constraints: 1. Except for binary data, messages must be in SOAP. 2. The description of a service must be in WSDL. SOAP Web service is the most common form of "Web service" in the industry. There are two "favours" of SOAP Web Services: SOAP RPC Web service and Document-centric SOAP Web service, depending on how SOAP is used. SOAP RPC Web service A SOAP RPC Web service intended to be an SOA but breaks the second constraint required by an SOA. A SOAP RPC Web service encodes Remote Procedure Calls in SOAP messages. Effectively, it prescribes both system behaviours and application semantics together. Because system behaviours are very difficult to prescribe in a distributed environment, applications created with SOAP-RPC are not interoperable by nature. Many real-life implementations have confirmed this statement. Hao -----Original Message----- From: David Orchard [mailto:dorchard@bea.com] Sent: Saturday, September 06, 2003 9:25 AM To: www-ws-arch@w3.org Subject: RE: Proposed text on 'SOA' (resend) A long time ago, I proposed what I thought were the constraints on SOA wrt those defined for REST. I think they are a better formulation of the constraints on SOAs. [1] Some of this made it into the web arch document in 1.6.3 (yes, somebody actually quoting the doc!) but it got totally watered down (like dropping the layered client server aspect) and then muddled (the "also, with emphasis on messages" and remaining paragraph). This is quite frustrating, having contributions that are solid undergo such a morphing. FYI, my assertion about representations being transferred in the post case has been validated by the tag and is being described in the latest web arch document. I'll say again. I think the web service architecture document should describe any constraints that it applies to components and the relationships between componenents. I took a first pass at that and I think it's a good start if the group decides to look at component architecture descriptions. Describing technologies and their relationships is also good, but is separate from the components. > > The main purpose of SOA is to achieve loose coupling among > software agents > through the following constraints: > 1. Simple and ubiquitous interfaces to all participating software > agents. Zero or minimum application semantics is encoded at > the interfaces. > The interfaces should be universally available for all providers and > consumers. huh? What is "simple and ubiquitous" and "all participating software agents"? That sounds a like REST. Either the interfaces are constrained, or they're not. I thought that we moving to a model of where REST is a more constrained SOA. This seems to say that SOA=REST. Which is rather wrong. I'll observe that there is a message oriented model that defines agents (so why use "software agent") and messages and descriptions (but not interface). > 2. Descriptive messages constrained by an extensible > schema. Zero or > minimum system behaviours are prescribed by messages. A > schema limits the > vocabulary and structure of messages. An extensible schema allows new > versions of services being introduced without breaking > existing services. > I don't get this whatsoever. A schema may limit portions of the vocabulary, but not all. It may or may not allow extensibility. And having an extensible schema by no means is sufficient to allow new versions of services to be introduced in a backwards or forwards compatible way. are the constraints "1. all messages must be constrained by a schema. 2. said schemas must be extensible"? So if I create a closed schema it's not a web service? eek. I completely agree that extensibility and evolvability are key properties of the web and web services, and that we should look at how versioning should be done. Trick question: How does extensibility and evolvability for web services differ than that of the web? Answer: WSDL and SOAP are constraints in web services. We should describe what is different than the rest of the web from an extensibility and evolvability perspective. FYI, the TAG (particularly myself and Norm Walsh) is looking at the evolvability and extensibility from a web perspective. So let's not reinvent web architecture (yet again) for web services. Let's focus on what is different about web services than the web. And that's particularly soap and wsdl. > Explanation: > > 1. The purpose of constraint 1 is to reduce the artificial > dependency at the > interface level for all agents and therefore reduce the cost > of consuming > and providing services. For example, one might create a > special service > interface but then the interface requires a very specific language, > platform, in a very specific manner. In such an example, it > is a violation > of this constraint. > > 2. The motivation behind constraint 2 is that It is it is > very difficult (if > not impossible) to prescribe system/application behaviours in > a distributed > environment. It is up to the receivers of a message to decide > what to do and > how to do with it. An extensible schema allows > partial-understanding, so a > receiver can act on only part of a message. This allows a complicated > service to be decomposed into smaller services and evolve > independently from > consumers. > > > An SOA, > 1. MUST provide a mechanism that enables the communication > between a > provider and a consumer under the context of a service sought by the > consumer. > 2. MUST define service contracts between providers and consumers. > > Optional constraints: > 1. Stateless messaging. Each message that a consumer sends to a > provider must contain all information necessary for the > provider to process > the message. This constraint makes a service provider more scalable > because it does not store state information about consumers. > 2. Stateful messaging. Both the consumer and the provider share the > same consumer specific context, which is either included or > referenced by > messages exchanged between the provider and the consumer. > This constraint > makes the communication between a provider and a consumer > more efficient but > reduces the overall scalability of the service provider > because it must > remember the shared context for each consumer. It increases > the coupling > between a service provider and a consumer and makes switching service > providers more difficult. > 3. Idempotent messaging. Duplicated messages received by > a software > agent cause exactly the same effects as a single unique > message does. This > constraint allows providers and consumers to improve the > overall service > reliability by simply repeating messaging if faults are encountered. > > [1] http://lists.w3.org/Archives/Public/www-ws-arch/2003Feb/0055.html
Attachments
- text/plain attachment: InterScan_Disclaimer.txt
Received on Monday, 8 September 2003 19:11:54 UTC