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
|