IOT Standards and Remote Services
A thorough and well though out discussion of a simple yet important question; how can we embrace open standards in IoT?
Join the DZone community and get the full member experience.Join For Free
In a recent post, Ian Skerrit asks: Can open source solve the too-many standards problem?
Even though it's clear that IoT developers want interoperability (the reason for many communications standards), there are other reasons that lead to multiple competing standards efforts (e.g. technical NIH, desire for emerging market dominance, different layering, etc).
I agree with Ian that open source provides one way out of this problem, as open implementations can provide interoperability much more quickly than formal standardization efforts. One doesn't have to look very far to see that's been the case for previous communication and software standards efforts.
One complication for the IoT developer, however, is that they frequently need to make a choice... so that they can build their applications. This choice has risks, however, because if the communications protocol one chooses doesn't end up being widely adopted or popular, does not provide interoperability with the necessary systems, or is a poor fit to the application-level or non-functional needs for your app (e.g. performance/bw requirements, round-trips, etc), then it could mean a very costly re-architecture or re-implementation of one's app or service.
One way to hedge this risk is provided by ECF's implementation of Remote Services. OSGi Remote Services is a simple specification for exposing an arbitrary service for remote access. The spec says nothing about how the communication is done (protocol, messaging pattern, serialization), but rather identifies a pluggable distribution provider role that must be present for a remote service to be exported. Each service can be exported with a distinct distribution provider, and the decision about what provider is to be used is done at service registration time.
One effect of this is that the remote service can be declared, implemented, tested, deployed, used, and versioned without ever binding to a distribution system. In fact, it's possible to use one distribution provider to develop and test a remote service, and deploy with a completely different distribution provider simply by changing the values of some service properties. With ECF's implementation, it's easy to either use an existing distribution provider, or create your own (open source or not), using your favorite communications framework.
ECF Remote Services allows IoT developers maximum flexibility to meet their application's technical needs, now and in the future, without having to commit permanently to a single communication framework, transport, or standard.
Published at DZone with permission of Scott Lewis, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.