[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.stp.sca-tools] Re: Service term in SCA

Hi Mickael,


Michael Gebhart a écrit :

Assuming a distributed system developed with SCA (S1). We have 5 components (A, B, C, D, E).


Now, another system is developed, also with SCA (S2). It requires functionality that is already implemented in S1, more precisely component A and B.

What happens? The developer who develops S2 does not know about A and B. They are not provided as Webservice and are not registered within a service registry.

A and B are components.
If their services are not promoted, they cannot be used outside the composite.


If they are promoted, then they can be used by any client.
The way this client will find these services is undefined (registry or another solution).




How does the developer find A and B? Should A and B be exposed as web service from the beginning and published into a service registry?
>
> Or are they exposed as web service only on demand? But in this case:
> How  does the developer know about A and B?


That would be the best solution if you want to use existing products.
Another solution is to implement an SCA registry, which will distinguish composite services from component services.


As Stéphane mentionned it, the SCOrWare project proposed a prototype of semantic trader and registry to deal with this case.



Next problem: A third system has to be developed, S3. It requires functionality that is part of S1, but not A, B, C, D or E.

If the feature is not exposed as a service, then you cannot know it. Unless you developped the system (S1) yourself.

That's the basis of SOA: you can only know and rely on the interface (and possibly on meta-data if you have a registry).



The developer of S1 declares himself ready to comply with exposing the required functionality as a component F. This can be used by S1 and S3.

Exposing a feature as a component in SCA makes no sense.
You expose services (=> a component with at least one service that will be promoted at the composite level).




But there are other ways possible: F could also be part of S3 and S1 uses this component as part of S3. Or should F be a completely new application? What is the right way to expose shared functionality?

One solution could be to make F a composite.
You may have one component F' in (S1), having the composite F as the implementation, and F'' in (S3), having another component with the same implementation F.


The usual solution will be to create a new component having the same implementation.

In general, you do not share components in SCA. But you can share interfaces and / or implementations. The goal of component types and SCA Java annotations is to facilitate the reuse of implementations in SCA. A component by itself is only "the configuration of an implementation" (that's what is stated by the OSOA specification).


Eventually, the governance of SCA artifacts is not part of the SCA specification. For the moment, you can only rely on the SOA governance principles (meaning interface + meta-data).



Regards,

          Vincent.


-- Vincent Zurczak EBM WebSourcing +33 (0) 4 38 12 91 72