Corona requires both
synchronous and asynchronous communications between the Corona server and clients (Eclipse Workbench,
etc...).
·
A synchronous call performs its
action completely by the time the call returns. Synchronous communications
are needed for request/response operations.
·
An asynchronous call returns
immediately but its action does not immediately complete. When the action
completes, the success or failure status returns through a callback on a
responder object. Asynchronous communications are needed for
collaboration events.
The Corona
server will support web services for its communications. This will allow
both native Eclipse and non-Eclipse applications interact with Corona.
The Eclipse Workbench (client) will have the Eclipse Communication
Framework (ECF) installed. This will provide collaboration tools such as
chat and shared editors.
The issue that must be resolved is: how should the Eclipse Workbench
(corona-client) communicate with the Corona
server?
The following are the identified alternatives:
1) ECF
for both synch/asynch
2) Web
services for both synch/asynch
3) Web
services for synch / ECF for asynch
There have been several debates on these. I would like to conduct
additional discussion in this email forum. Please post your replies to corona-dev@xxxxxxxxxxx.
-----Original Message-----
From: Okraszewski, Marcin
Sent: Wednesday, May 31, 2006 10:03 AM
Hi,
We have investigated the subject and it doesn't look good. In fact the
only hook about synchronous communication we could find is
org.eclipse.ecf.core.comm.ISynchAsynchConnection. The implementation of
the interface is org.eclipse.ecf.provider.comm.tcp.Client, and it is
used by TCPClientSOContainer. The ISynchAsynchConnect.sendSynch()
implemented in org.eclipse.ecf.provider.comm.tcp.Client sends a
message,
flushes it and closes the link (in fact it only marks the connection to
be closed but it is not closed in fact). It do not read response from
the other side and always returns null. Maybe it is just unfinished
implementation, but this is how it looks now. The code was checked out
today.
We have made an experiment with it and it worked as described above -
the server received a message, but client received null. Every
following
request to the server ended with connection closed exception. We used
ECF 0.8.3.
In order to make synchronous request - response exchange, we would have
to make an extra layer that would match requests with responses. No
matter then if it is a synchronous or asynchronous message transfer. An
additional impression is that ECF is extremely badly documented. There
are rarely javadoc comments and only a few documents at the web page.
It
makes it even more difficult to handle.
After this we think that it would be be better to use web services
instead of ECF. It would provide not only a more stable and mature
environment, but also it would provide simpler integration of any
non-Eclipse tools. In addition we wouldn't have to maintain two
separate
protocols (ECF vs. WS) as it will be in current approach - sooner or
later they will get out of sync.
-----Original Message-----
From: Wright, Jim
>
> In the ECF code
org.eclipse.ecf.provider.generic.TCPClientSOContainer, there is a method called
'createConnection'. This method creates an object called
'ISynchAsynchConnection'. This interface seems to provide a synchronizied
call. The TCPClientSOContainer's parent 'ClientSOContainer' also creates
the 'ISynchAsynchConnect'.
>
> This seems like a good place to start looking for synchronized
messages/calls.
>
> JimW
>
>
> -----Original Message-----
> From: O'Flynn, Dennis
>>
>>During today's conference call, you heard us debate ECF vs web
services. The issue is due to the need for both synch and asynch
communications between an Eclipse Workbench client and Corona server.
>>
>>ECF is very good w/ asynch. However, early releases of
ECF had little support for synchronous communications.
>>
>>A research task is needed to figure out how to best support
invoking request/response synchronous calls using ECF.
>>
The contents of this e-mail are intended for the named addressee only. It contains information that may be confidential. Unless you are the named addressee or an authorized designee, you may not copy or use it, or disclose it to anyone else. If you received it in error please notify us immediately and then destroy it.