[
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