I'm not very knowledgeable about Spring, but I'm pretty familiar with SCA from working with it in the IBM WebSphere Integration Developer IDE and the environments in which it is deployed: WebSphere Enterprise Service Bus and WebSphere Process Server.
It really is all about abstraction and the thought of letting developers focus on what is most important - business logic. We are all familiar with the concept of object-oriented programming and how this abstraction better reflects the "real world". Then comes web services and a service-oriented approach. Web services further abstract our logic, making it less dependent on what language is behind our logic. Now C ++ or .Net or Java or even RPG or COBOL or something else may be behind our web service. We can get languages and systems to talk to each other in a way that is independent of CORBA and libraries, and what is not.
SCA (Service Component Architecture) is trying to take SOA to the next level. He tries to abstract the protocol and address used to talk to another system or service. Here's why: when working with web services, you, as a developer, should still work with the protocol and write or connect to LOT templates. You need to know if you are http or https. You need to know if you (in the Java world) are JAX-RPC, JAX-WS 2.0, JAX-WS 2.1, JAX-WS 2.2 or even JAX-RS (based on REST). You need to know if you work with JSON, XML or SOAP, and if SOAP is 1.0, 1.1 or 1.2? And sometimes you even need to know how your application server provider implements certain things (you should not do this, but it may be). And then what happens if you want your web service to talk to another service. But this second service is based on the use of messages. Does this mean JMS? Mq? JMS over MQ? Others? What about just pure HTTP POST and GET?
Here is the SCA. SCA tries to abstract the endpoints of your services and hide the protocol implementation from the developer. When you need a service, you simply view it through the SCA API and then call the service (I think the method is executing? At least it's an IBM SCA extension). But anyway ... Now you don’t need to know that the service you are talking to is JAX-WS 2.1 or REST or even MQ. You do not have to know that you are working with SOAP / HTTP or JSON / XML or SOAP / JMS or something else. SCA hides it all from you. This allows you to connect services of different implementations to each other so that they can talk to each other through a common "service interface".
As you can imagine, this is another layer of abstraction and technology on top of existing abstract technologies. But, seeing this myself, I find it worth a look. I know that both IBM and Apache (and I think others that just don't come to mind at the moment) worked to come up with the SCA standard. (And in fact, the version of IBM SCA is now built on the open standard introduced by Apache. We hope that other vendors supporting SCA will do the same.)
I think it's worth taking the time to watch. This can help you focus not so much on the integration of services based on their protocols, but on the business logic of the services, which really represents the value that they bring to the table.
source share