* Tuscany SCA allows you to abstract business logic as components which can be implemented using different programming languages or frameworks. These components become building blocks and you can compose them into more powerful solutions. Think about assembling lego blocks. All the technology concerns such as communication protocols, databindings and QoS are taken care by the runtime without application coding against the plumbing APIs. With the components and their wirings, Tuscany SCA can deploy them onto one or more runtime instances on the network (map the logical composition into physical nodes, such as those from the cloud). An SCA application will become live as a set of connected endpoints.
* Camel is the mediation framework that allows you to flow and mediate messages from one endpoints to another endpoints.
* ServiceMix and Mules are mostly on the ESB side which are handling the messaging infrastructure. ESB can be the backbone for Tuscany/SCA to facilitate communications in a consistent and simple fashion.
1) Tuscany doesn't have to be exclusive against other stacks such as Camel or ServiceMix. We can plugin Camel as a mediation component into SCA. We can build a binding for ServiceMix/Mule. ESBs can also use SCA as the component model (similar as Mule flow or ServiceMix's spring integration to encapsulate business logic connected to the endpoints).
2) Tuscany specializes in componentizing the business logic and composing them in a fairly technology neutral fashion. With Tuscany, most of the developers won't touch the technology APIs. They are just writing business logic and the Tuscany runtime takes care of the rest.
3) SCA has the domain concept that provides location transparency and service management in the distributed environment.
4) Tuscany adapts to various protocols using the declarative binding concept. It doesn't require normalized messages as most ESBs does.
5) SCA has a policy model that allows the abstraction of QoSs.
In a nutshell, Tuscany SCA does the job to guide you decompose business problems, build reusable blocks, and compose them by wiring. The components are also connected to outside services or clients via the protocol bindings.