Skip to main content

[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



Back to the top