Re: [eclipse-incubator-e4-dev] next steps for the E4/connection management discussion
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.
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:
...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?
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
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.