I already posted a Web Object Oriented Programming. We now explain how moving a step forward allows to merge two current trends into one: combining Internet of Things and Internet of Services to achieve Internet of Objects.
My last blog was explaining that if we follow past programming trends throughout history, and now that the standardisation war around services has been won by web services, the programmers community will want to achieve standardisation at an object-oriented level rather than at a service-oriented level, thus allowing to better leverage model driven approaches.
To do so, we propose an approach the less intrusive as possible, i.e. we use existing popular technologies: REST and WSDL. Actually, we still need a slight modification of WSDL to achieve object orientation, which takes us to what we call WODL (to be presented in a later entry). Thanks to WODL, one can expose any object attributes and operations using a slightly modified version of a standard he knows well: WSDL. In addition, he can directly point to this object using the most widespread way of pointing to resources: URLs.
Now let’s see how we merge Internet of Services and Internet of Things:
1. Internet of Services is -almost by definition- all about Services. Basic assumption is that everything is accessible through services, and therefore we need a complete framework, both technology- and business-wise, to address the technical needs on one hand, and the ecosystem needs on the other hand. Yet, it’s limited by its scope: it only looks at services. Objects are at best hidden behind the services, and at worst are not there at all. Anyone willing to go for a new application on top of the Internet of Services has not other way than to go for service oriented development, hence losing any potential benefit of object oriented programming.
2. Internet of Things is about connecting the real world to the virtual world, e.g. the IT world. Yet it has two main objectives: first, enabling bi-directional communication (with a focus on leveraging the massive amount of data generated by real world “things”, be it e.g. sensors, RFID tags, machine); second, enabling things to be connected to … the internet of Services. Which basically means that again, things are hidden behind services, not exposed as objects.
What we propose is to take any object, be it real (the Things) or virtual (the programmatic Objects) and to enable them using WODL. As a consequence, when dealing with basic attributes retrieval (or edition), one can benefit from REST, directly accessing (respectivly editing!) the values through an HTTP GET (resp. other HTTP verbs) with the relevant URI. And when dealing with operations, one can benefit from WSDL, calling the operations exposed. But this time, we are talking about object-related operations, not services in which one would have to specify the ID of the object as an input parameter.
As a concrete example, we can use the one of a robot controlling a border (yes, it’s a public security use case 🙂 ). In our Internet of Objects world, here is how the interaction with the robot works:
1. The robot has a unique URI, let’s say: http://www.ulmer.fr/robot69
2. I create a GIS mashup where I want to see the position of my robot on a map: assuming one of the attributes exposed by the robot is its geolocation, I only need to do an http get at the relevant URI (e.g. http://www.ulmer.fr/robot69/geolocation) and I get the position.
3. From this GIS mashup, I want to achieve the move of my robot to control a zone. Assuming my robot exposes the operation “controlzone” with input params geopositionx and geopositiony, I do a soap request to the controlzone webservice operation, using as a root of the URI for the operation the following: http://www.ulmer.fr/robot69/controlzone
Thanks to this concept of Internet of Objects, for simple retrieval or edit of basic attributes, I don’t need any clientside framework: pure HTTP use is sufficient, and I can at least read my attributes from a browser. For more complex manipulation, I go for object related operations the same way I was going with web services, yet I still have an object leve view, which means when I do the modeling of my application, I can reason with objects which can be used down to my implementation.
This is it for an introduction to the concept of Internet of Objects, the way we – SAP Research France – see it. Again, we only scratch the surface, but I hope this gives you an idea of the power of the concept. We’re eagerly waiting for your impressions.