[
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