Comparing SCA to Microsoft platform technologies



I posted about SCA previously. My take on it is, SCA isn’t really about interop. But many people think it is, so I post about it here, on the interop blog.


Sometimes people ask me to compare SCA with what Microsoft offers. Here’s my take.


A large part of SCA is oriented toward consolidating the disparate communications models and APIs within Java. Java does remoting with RMI and RMI/IIOP; web-services via JAX-RPC or JAX-WS; asynchronous invocation with JMS; JCA for packaged apps, and so on. Lots of communication models. SCA proposes to unify them. Within the SCA family, the spec covering Java annotations and APIs, and the spec covering Java component implementation specifically deal with this.


Microsoft views this part of SCA as a big endorsement of the approach we have taken in Windows Communication Foundation, part of the .NET Framework v3.0 that shipped in December 2006. WCF consolidates various disparate communications models in .NET into one generalized programming model, with support for interop protocols (WS-* or web-oriented services), binary optimizations, reliable or asynchronous messaging, pub/sub, and others. Because of the clear value for customers in simplifying communications, WCF is the leading model in the industry for communications frameworks. Unlike SCA, WCF is not a spec; WCF is available now (a free download), and is currently being used in production applications. and, the performance of WCF apps, rocks!


Some of SCA goes beyond the basic communication plumbing, and attempts to address the larger and more complex issues surrounding the description, modeling, assembly and management of distributed systems. These are hard problems; Microsoft has been working in this area for many years, and steadily delivering infrastructure to address customer needs. For example, is shipping technology. In the .NET Framework 3.5, we’ll deliver integration between WCF and WF, and the version of Visual Studio mated to .NET 3.5, Visual Studio 2008, will provide modeling tools to truly democratize the construction and deployment of conversational service-oriented applications. System Center 2007, currently shipping, enables management of distributed applications. We expect to continue to steadily deliver evolutionary innovations in these areas over time.

Comments (8)

  1. johaneltes says:

    I would say that .Net WCF is purely about communicating across a networked protocol. SCA is a programming model based on dependency injection. It doesn’t enforce communication. It is about associating a service reference expressed using some interface technology with a service implementing that interface. The way the consumer and provider are wired may or may not imply communication. Much for the same reason, SCA is a vehicle for design-time re-use, while WCF targets runtime re-use.

  2. DotNetInterop says:

    Yes, well said.  SCA is about standardizing a programming model – that’s the primary goal.  WCF obviously offers a programming model, but its driven by the primarily goal of interop on the wire.

  3. Dennis says:

    SCA is not only a spec. The standard has been implemented bij IBM and is widely supported in their tooling. It’s already deployed in production.

    Als BEA and Oracle have implemented (parts of) the spec in the productline and have SOA based application in production.

  4. DotNetInterop says:

    Dennis, thanks for the comment.

    Saying "SCA is not only a spec" seems odd to me.  SCA is in fact a specification, and only a specification.  Or if you want to be accurate, a set of specifications.  The fact that the specification has been implemented does not change the nature of SCA.  

    I am nitpicky, so here’s something else:  You’ve said "The standard has been implemented…"  but that seems an error to me, because while SCA is a specification, it is not a STANDARD, not yet anyway, as far as I am aware.  I thought that OASIS was forming technical committees just recently, like just this week, to adopt SCA as a formal standard, but it is not a standard, not officially, not yet.  It probably will be soon, though. how soon?  I don’t know.

    I take your points though – There are actual implementations of the SCA specs, at least partial implementations.  Great.  I guess we can then remove the "SCA is a spec and WCF is actually implemented" as a difference.  SCA is actually a spec, and furthermore there are some implementations of the spec.

    I still believe though, that the primary difference between WCF and SCA is that WCF is about wire-level interop and SCA is about a portable programming model.  Surely, WCF exposes a programming model, but that’s not its main goal.  

  5. Kurt says:

    First, you said "Microsoft views this part of SCA as a big endorsement of the approach we have taken in Windows Communication Foundation".    Then, you say "the primary difference between WCF and SCA is that WCF is about wire-level interop and SCA is about a portable programming model".  So can you explain how it’s an endorsement  of your approach when they aren’t about the same thing?

    You set up the strawman that "SCA is oriented toward consolidating the disparate communications models and APIs within Java", then you knock it down with WCF.

    You then agree isn’t what SCA is about communications.   Are you in marketing?

  6. huh? SCA is an endorsement of WCF ? Seriously? I posted earlier in the summer about SCA and make a statement

  7. DotNetInterop says:

    Kurt, I was going to reply, but then got carried away so I made it another post.

    http://blogs.msdn.com/dotnetinterop/archive/2007/09/17/sca-is-an-endorsement-of-wcf.aspx

  8. huh? SCA is an endorsement of WCF ? Seriously? I posted earlier in the summer about SCA and make a statement