Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] Re: [osgi-dev] Best practice to decouple remote technology from bundles

Hi Scott,

Thanks for your detailed answer. As I have already used ECF now for about one year I see the advantages of this technology. But I do also have to convince my project lead and other colleagues of the reliability and sustainability of ECF. Thanks to your mail I can now bring forward some arguments that might be helpful for a decision.

Regards,
Eugen

Am May 25, 2009 um 2:28  schrieb Scott Lewis:

See below for comments about Eugen's note to osgi-dev.

Scott Lewis wrote:
Hi Eugen,

I think this discussion should be moved over to ecf-dev at eclipse.org so I'm going to repost it there and respond in that forum with comments WRT ECF.

Scott


Eugen Reiswich wrote:
Hey folks,

as I understand ECF is a layer above a specific remote communication technology (like RMI) and it's various APIs can be used without the knowledge of the underlying remote technology. But as far as I understand there has to be an ECF specific implementation for a remote communication technology which acts as a communication bridge between the ECF API and the underlying technology. If this is the case I would:

1. need to wait for a new ECF implementation for RCF 119

That depends upon what you are waiting for. Do you mean an RMI implementation of the ECF remoteservices API?


2. hope that the ECF implementation is as reliable as the underlying technology

If by ECF implementation you mean the ECF provider (i.e. that uses the underlying technology)...yes, that's true of course. It's true of others as well (i.e. all implementations)...so we're not unique in this. The good news about this is:

1) We've created some modularization at the provider implementation level, which allows provider implementers to reuse code to implement the remote services API (if they wish, of course). This does have the added side effect that testing/debugging/hardening the providers that use the provider modularization improves the other providers that use it as well. 2) We've created a number of abstract test cases that are present so new provider implementations can be tested (against the remote services API and the RFC119 impl) without having to rewrite new tests.

But just to return to your original point...yes, the ECF implementation does have to be as reliable as the underlying technology...yes, this is true. But we're working toward making this as easy as possible for provider implementers (i.e. may or may not be us/ECF team).


If this is correct I would on the one hand decrease the dependency to a specific communication technology in my code but I would on the other hand create a new one to ECF.

Your new dependencies would be on the API, rather than on the implementations.

What if the ECF implementations are too buggy for business applications?

It is always possible that implementation issues would create problems, of course...although I'm not sure if I would use 'too buggy for business applications' as the appropriate bar ;-). Further, with network protocols it is possible that the choice of *approach* (i.e. not the software, but rather the protocol) will affect things like reliability.

How much effort do I have to spent to switch to pure RMI/Riena etc. without ECF?

It's hard to answer this in general...because each provider implementation will differ in how it's structured. So, for example, it is/would be trivial to switch from using ECF remote services to (say), r-osgi...because r-osgi is implemented as a separate plugin, has an existing API, has been well-designed for remoting osgi services (that was it's original intention), etc. I expect the Riena provider (once completed) to be similarly easy, as it also was originally designed for doing osgi distribution/remoting as well.

OTOH, there's more to mapping RMI to OSGi remoting...because RMI has no concept of a service registry, no concept of service references (local or remote), and further RMI introduces/requires RemoteException (as you know). So that one thing alone (RemoteException) can change the face of the service interfaces themselves (i.e. your code) significantly. But with ECF remote services you can use any service interface you wish (i.e. with RemoteException too). So there really isn't any work *required* to move between ECF and RMI remoting WRT the service interface itself.

However, like I said above, in RMI there's no concept of services at all...so all of those concepts will/are lost when moving to 'pure' RMI only. So there *is* work in an RMI provider in implementing the concepts around (e.g.) retrieving remote references (getRemoteServiceReferences), registering remote services (registerRemoteService) and some other things.



I would like to decouple my application completely from a specific technology and use the plug-in concepts of OSGi to add e.g. an RMI bundle for RMI communication, ECF bundle to switch to RMI over ECF or something else but without code changes in my main application.

I'm actually thinking that yours is not so much a question about RMI or ECF, but rather one of differences between OSGi's model of services (whether remoted or not), and RMI's notion of 'simple' remote objects. It's the support of the OSGi service registry concepts that adds on the work for remote services APi implementers...not the service interface itself.

Hope this addresses some of your questions WRT to what's necessary to create/use an ECF remote services API provider. If not please say so and we'll discuss further.

Scott


_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ecf-dev



Back to the top