Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[ecf-dev] available: ECF remote services over websockets

Hi Folks,

I was recently engaged by Tim Vogel,  a consumer of ECF's Remote Services/RSA implementation.  Tim is using ECF to create standardized remote services for the cloud hosted by a Karaf server, and consumed by an Eclipse-RCP-based applicaton.  I think Tim has some plans to describe this work on blogs and/or postings to this mailing list (he is a member of ecf-dev list), so I won't try to describe it further.

Due to firewall constraints, Tim's requirements included hosting/consuming remote services using http and/or https over standard ports (80/443).  This made the recently-standardized websockets attractive, and so Tim approached me about enhancing/extending one of the ECF distribution providers so that websockets transports could be used to expose and consume his remote services.

ECF's implementation of OSGi Remote Services/RSA standards is modular, allowing new distribution (or discovery) providers to be introduced easily, eliminating the need to re-implement the RS/RSA specifications with new distribution providers.   That is, with ECF's impl, new distribution providers can be created by enhancing or extending existing providers...or implementing one's own if desired...and all of these providers are *guaranteed* to be RS/RSA specification compliant.

What this means is that for remote service creators (like Tim) is that they have the ability to move to other/new providers without changing their application or their remote services, and even have the ability to move to other impls of RS/RSA if they wish.   In other words:  no lock-in.  In my view, this comes from a happy-for-ECF-consumer combination of specification (RS/RSA/OSGi Services), extensibility and modularity (ECF's implementation), and open source/open frameworks (ECF's RS/RSA implementation and supporting APIs).

In January, Tim engaged me to create a websockets-based distribution provider.   With a code/technical contribution from Jan Rellermeyer, original author of r-osgi (one of the existing ECF distribution providers), I then implemented two new providers:  one for r-osgi over websockets http, and one for r-osgi over websockets https. With Jan's contribution, and taking advantage of ECF's modularity and extensibility, this was a very modest technical effort, requiring a total of less than 10 classes, less than a month of very part-time effort (including testing, examples development, and both service and client integration), and zero changes to the ECF RSA implementation.

The r-osgi enhancement bundles are available via this github project [1].   It's Jan's desire and intention to contribute these to ECF's EF project (to be built and deployed as part of ECF's EF releases), but things have to go through the EF IP process before they can be added to ECF's EF repo.   The rest of things required for these two new providers are already part of ECF 3.9.3.

Thanks are due to Tim for allowing this work to be contributed to ECF.   He/his product development is an immediate beneficiary of this work, but he has allowed me to contribute it to ECF, and thereby allowing others to use/benefit from that.  Thanks much Tim. I hope that Tim will have a chance to say more here about his use of remote services and his application, and encourage him to do so.

I would also like to highlight for ECF consumers what I think of as a new model for supporting/contributing to the ECF project:    Directly engaging ECF committers for

a) sponsored open-source development in areas of specific need. Websockets transport was the need in this case, but there are plenty of other RS/RSA use cases that imply other needs...e.g. custom discovery providers, remote services tooling, custom topology managers, custom/additional transports...e.g. MQTT, COAP, better releng/integration/packaging/deployment for other runtime environments, use of asynchronous remote services, use of java8 capabilities, and others.
b) technical support on
    i)  the integration/use of 'a'
    ii) both server and client-side effective usage and integration of ECF RS/RSA
    iii) designing, developing, testing, deploying, updating, managing, optimizing distributed applications based upon RS/RSA

Thanks,

Scott

[1] https://github.com/ECF/Websockets

Back to the top