[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [ecf-dev] ecf-dev Digest, Vol 113, Issue 3
|
On 12/10/2014 4:36 AM, Hallvard Trætteberg wrote:
Scott,
I really liked the tutorial. I'm lecturing component-based design in
combination with model-driven development next autumn, and have been
looking for ways of combining this with REST services. The idea is to
model data and services using EMF and generate both the REST web
service and OSGi implementations, thus showing how the model is
independent of implementation techniques and frameworks. Now I should
be able to also support a remote version!
Indeed.
I'm glad you liked this tutorial. To be honest with you, for some time
I've wanted to produce a book on ECF Remote Services...with a
'tutorial-style' for chapters/sections...including this tutorial and
many of the others on the ECF wiki...in addition to new/additional
content. I would like it to be based upon community
contributions...i.e. with chapters/sections done by consumers and other
community members...as well as writing by myself and other committers.
Unfortunately, I don't personally have the means to support my time for
the creation of such a book, so can't do this at the moment.
IMHO there are a lot of deep advantages to using ECF Remote
Services...either on the client-only as this tutorial shows...and/or on
the remote service host. Just a few big ones I've been thinking about:
1) A clear contract/implementation separation (service interface vs.
remote implementation) -- critical for distributed systems...where the
contract/implementation boundary is out of process.
2) A rich language for expressing service contracts (java interfaces),
rather than depending upon API documentation alone (e.g. Geonames
Timezone service and most others)
3) OSGi Service Dynamics - critical for building distributed
applications...which are inherently dynamic
4) Versioning - The ability of remote services to support multiple
versions of a given service interface is very important for maintenance
and migration in any service-oriented architecture, and not generally
well-understood
5) Scaling - As per Neil's presentation [1]
6) Need for protocol-independent approaches to building distributed
API...e.g. RS-distribution, RS-discovery, RSA...to allow for new
protocols (e.g. MQTT, COAP, etcd) and serialization formats (e.g. JSON,
xml, protocol buffers, etc)...since I don't believe there will ever be
'one-protocol/transport-to-rule-them-all'
7) Need for application-defined service-level security
8) The utility of having dynamics-supporting service-level dependency
management (e.g. DS) and use of injection frameworks (DS, Spring)
9) Easy synchronous or asynchronous access to remote services (e.g.
ECF's asynchronous proxy work with java8 CompletableFuture)
10) Easy integration and co-existence with existing systems (backward
compatibility) and frameworks...e.g. the tutorial under discussion, EMF,
other new/emergent frameworks.
11) Open Source and community-driven development (rather than product
lock-in, corporate control of standards, etc).
Anyway, there are more :), but I won't subject you to them now. And I'm
sure that people have other ideas about what's valuable and/or
problematic about Remote Services...so please feel free to speak up.
Scott
[1] https://wiki.eclipse.org/ECF#What.27s_New