Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] What can / must not be done with ECF ?

Hi Cyril,

cyril giraudon wrote:
Hello,

I'd like to learn eclipse RCP technology in the context of a distributed (not web) application (client / server).
My first glance was for RMI and then read same papers about ECF.

The use of RMI would be for some calls of remote sevices, object transfers, sending messages over a secured layer, strong authentication.

Since comments about ECF could make think ECF can be a replacement for RMI in a some tasks, I'd like to know, if it's possible to answer, what can / must not be done with ECF.

Hmmm, interesting questions.

RMI is based upon the notion of using remote procedure call (RPC) for building distributed systems. ECF is closer to a category of distributed systems frameworks called 'message oriented middleware'...because the basic model for ECF uses asynchronous messaging. Message-oriented middleware also includes 'group' messaging (aka 'publish and subscribe' messaging...i.e. not just single sender and single receiver as in traditional client-server).

ECF also supports remote procedure call as well (e.g. the ECF remote services API), as RPC can be (and is) implemented above an asynchronous messaging layer. Of course, you can go the other way...i.e. implement asynchronous and group messaging on RPC-based abstractions like RMI.

I think ECFs main strength lies in the notion of creating open transport-independent messaging APIs. The main ECF APIs: discovery, datashare, filetransfer, remote services, shared object, presence, telephony, new ones, etc all share at least two very useful properties...which I believe are at least closely related to 'openness':

a) the APIs are wire protocol independent...i.e. these apis can (and have been) implemented on multiple transports and their openness allows others to create their own transports, own clients/peers, own servers if they desire b) they are extensible...using consistent and open extensibility mechanisms (i.e. OSGi, IAdaptable)

'a' supports greater freedom for integration as well as greater reuse...i.e. multiple clients and/or servers can be written for a given protocol. 'b' allows the framework to more flexibly respond to the changing needs of application developers over time.

As for your questions...i.e. what can/ must not be done with ECF?

What can be done with it: lots. As a framework, we've tried to put as few limitations in as possible...that is, I believe it's possible to build very scalable, very performant, very appealing applications with ECF/pieces of ECF...for a relatively low cost (in code size, memory space, programmer learning time). It's designed to support both human-human kinds of communication (e.g. IM, VOIP, filetransfer) as well as inter-process communication (datashare, remote services, discovery, filetransfer). But, I would say that there are parts that are much more mature than others...for example, we haven't yet done a tremendous amount with the ECF telephony APIs for doing VOIP. We have done some, but not nearly as much as with (for example), the datashare APIs. Also, our documentation is not nearly as complete as it should be. So although lots can be done with ECF, it still has some way to go in certain areas...but we are trying to move in those directions as much as possible to address these areas.

What must not be done with ECF...well, I would say that if your application has no need for interprocess communication then the overhead of adding asynchronous messaging would not be worth it. Also, if you have a legacy app that has a private protocol, and there is no benefit to you, developers, or users to having others be able to build applications that interoperate with yours, then ECF's communications abstractions would not be of enough benefit.

I hope this helps. If others have comments about what ECF provides that is useful or not useful please speak up.

Thanks,

Scott



Thanks a lot,

Cyril.

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



Back to the top