[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
Re: [eclipse-incubator-e4-dev] next steps for the	E4/connection	management discussion
 | 
Hi Brian/all,
brian.fitzpatrick@xxxxxxxxxx wrote:
<stuff deleted>
 
Though we didn't come to any solid conclusions, it seemed very evident 
that there's definitely a need for some sort of cross-project 
connection management framework in the E4 timeframe. 
Agreed.
 
Since the meeting, I was contacted by Eike Stepper from the CDO Model 
Repository and Net4j Signalling Platform projects. She would like to 
contribute to the conversation and at least keep informed of our 
progress, so it's good to know that outside of the immediate E4 group 
we have interested parties. Not sure if she'd like to demo their 
current frameworks or not. (Eike, do you want to chime in here?)
FWIW, there's an enhancement request to create an ECF provider using Net4j:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=203406
...so that Net4j capabilities can/could be accessed via ECF-exposed 
common APIs (e.g. for connection management).
Just FYI...last I checked, Eike was male.  Hi Eike.
 
=High Level Goals=
At a minimum, it would be helpful to come up with a common API for 
connection management and persistence.
Some simple use cases might include:
 
* Connecting to a unique connection object (database, system, etc.)
* Disconnecting from a unique connection object
* Retrieving the raw connection class from the managed connection object
* Managing connection properties (such as connect/disconnect state and 
any custom properties for the connection type)
* Managing a list of connections, both connected and disconnected
 
More complicated use cases might include:
 
* Connection timeout
* Backward compatibility
I don't have any criticism of use these use cases, although we might 
want to amend with:
* Representing different types of connections (i.e. for different 
protocols) and extensibly accessing protocol-specific capabilities
* Extensibly representing addresses in a common way across different 
addressing systems (e.g. ID/URI, etc)
* Authentication security with different protocols/authentication schemes
* Supporting other environments (e.g. Equinox-based servers)
I think some level of UI consistency is still an important factor 
also. Maybe if we don't all have the same UI components, we could all 
agree on a consistent set of UI-based connection management tasks? Or 
a consistent look and feel even if we're not all exactly the same?
Thoughts?
Although I agree that UI consistency is important, I hesitate to 
consider it part of a connection/connection management API.  Why?  
Because several of the things we seem to be looking for in a connection 
framework (connection management, transport independence) are logically 
separate from a user interface for creating/configuring connections 
(i.e. stuff needed so connection to external process can be 
established).  I say this because there are plenty of use cases (i.e. 
those Brian lists above) that involve connection management that 
can/could have no user interface at all for some applications (e.g. 
client apps that automatically connect to a number of IM accounts upon 
app startup or server-based apps that create connections for 
server/services, etc).
I do think that there can/should be work on UI for connection 
configuration and usage, and we (ECF) have done some small amount of 
work in this area.  We've created some common/reusable user interface 
components (e.g. connection dialogs and wizards), and we have some ui 
extension points (configurationWizards and connectWizards) that make it 
easier for new provider/protocol impls to introduce their own UI for 
connection creation/configuration.  And I'm in favor of the notion that 
EMF models could be created/used to construct config/connect UIs...we 
just haven't done that ourselves so far.
But I'm not in favor of pulling in UI dependencies specifically for a 
'connection framework'...at least partially because a connection 
framework (like ECF's IContainer APIs) can/is being used in entirely 
different environments...like Equinox-based server applications.  I know 
that this group is not focused on Equinox-based server applications, but 
I do think considering the use of connection frameworks in those 
environments will result in better separation of concerns at the 
bundle/api level for a connection framework.
Also, I would request that any effort to define a new connection API 
first take a look at and try out ECF's IContainer API for satisfying 
these use cases.  I think it can/could meet all the use cases I've seen 
so far on this list, and I think it would be a terrible shame to spend 
significant effort redoing much of what we've done (and is available as 
part of p2-based Equinox).  Also, if there are use cases that we've not 
addressed (so to speak :), then of course the API can/will be migrated 
forward as needed.
Scott