Comparing SCA and Windows Communication Foundation
David Chappell provides a very good analysis of SCA versus Microsoft Windows Communication Foundation (WCF, a.k.a Indigo).
“But SCA isn’t just a copy of WCF–it’s different in some interesting ways…WCF focuses on creating services and clients, SCA defines more than just a way to build services and clients. It also defines how those components can be assembled into larger modules, including specifying dependencies between them. The notion of a connection between components, known as a wire, is a first-class concept in SCA.”
This difference is fundamental. SCA is truly service oriented and enables peer-to-peer interactions between service components while WCF is for the most part following a client/server model, only enabling binary relationship between peer services. This aspect of service orientation was completely overseen during the design of Indigo. Strangely enough, I was sitting next to David during an Indigo design review in 2004 and we discussed this very point of peer-to-peer versus client/server and in particular the role of BPEL. I would like to complement Dave’s point on BPEL and express that in SCA, BPEL has become a “task-specific” programming language for implementing services.
David then goes on defining the “Challenges ahead for the SCA creators”. I would like to comment on one of his point: “Once SCA is available, a Java developer will need to choose when to use it rather than, say, EJB, JAX-RPC (now called JAX-WS), or something else.“
SCA was created precisely to help developers deferring the choice of middleware and containers at “assembly” time rather than at implementation time, therefore it is likely that SCA will become the preferred platform to write business logic that can be reused in multiple systems. Combined with SDO, developers have now a development environment that is abstracted from most of current technologies.
With SCA and SDO a developer can design a “Purchase Order” Service which manages the lifecycle of purchase orders within a company. With SDO the purchase order service can manipulate representations of the purchase order regardless of the number of systems of record in which the attributes of the purchase order need to be stored. With SCA, a system designer can compose this service into multiple business processes, with other services such as one managing the lifecycle of requisitions or invoices. I publish soon a paper to illustrate this particular example along with how BPEL can be used with SCA.