News
Newsletter issue #16
2012's first newsletter contains on the SPINE2 framework, co-operative Air Traffic Management, the makeSende project and SCHNEIDER's member profile.
Call for Papers: CONET 2012
The Third International Workshop on Networks of Cooperating Objects is organized again by CONET and will be co-located with CPSWeek 2012. Submission deadline is January 30th, 2012.
EWSN 2012/CONET Master and PhD Thesis Awards
*** Extended deadline for applications: December 31st, 2011 *** The Chairs of the 9th European Conference on Wireless Sensor Networks (EWSN 2012) and the CONET Consortium are pleased to announce the Master and PhD Thesis Award...
Architectural Style
The overall architecture of the CTF platform can be realized using many different architectural patterns that support rich interaction between a set of distributed components. Taking into consideration our stated design principles, we have decided to base the CTF design on the Representational State Transfer (REST) architectural style.
REST is a set of design constraints for developing rich resource-oriented systems that mirror the scalability and the flexibility of the Web. In contrast to Service Oriented Architecture (SOA) and other Remote Procedure Call (RPC)-based architectural styles where the data is kept private, encapsulated and hidden behind the processing components, in REST, the state and the nature of the data elements play a central role.
The resource is the main abstraction of information in a RESTful system. The resource representation captures the current or intended state of the resource. The components (clients, servers, etc.) act on the resources by transferring and modifying their representations. A resource identifier is used to uniquely identify the resource involved in the interaction.
Resource Model
According to the REST style, the APIs are specified through the resource model and the semantics of the application of the unified HTTP method set on those resources. The following table provides an overview of the main resources and their association with the Testbed Federation API (TF API) and the Testbed Adaptation API (TA API).
| TF API | TA API and TF API |
| Federation | Testbed |
| Project | User |
| Experiment | Job |
| PropertySet | NodeGroup |
| VirtualNodeGroup | Image |
| VirtualNode | Task |
| VirtualTask | Trace |
| | Log |
| | Socket |
| | Node |
| | Platform |
| | Interface |
| | Radio |
| | Sensor |
| | Actuator |
| | Mobility |
| | ImageFormat |
Uniform Interface
REST mandates a uniform interface between the components in the system. Since all resources in the system can be manipulated with the same method set, the components don’t have to implement specialized code for accessing different resources in the system.
The semantics of each operation is well defined and uniform across all resources and components. This leads to an interface that is easy to understand and simplifies the interoperability between large number of uncoordinated actors. The uniform method set also opens the possibility of using a standardized set of return values to inform the caller about the success of the method invocation.
The following table provides a succinct overview of the semantics of the most common HTTP methods when applied in a RESTful context on resource collections or individual resources.
| GET | POST | PUT | DELETE | |
|---|---|---|---|---|
Collection URI http://testbed.org/nodes | List the URIs of the collection's members | Append the collection with a new member element | Replace the entire collection with another one | Delete the entire collection |
Element URI http://testbed.org/nodes/14 | Retrieve a representation of the addressed member | Partially modify the addressed member | Create or replace the entire addressed element | Delete the entire addressed element |
Safe Idempotent Cacheable | Idempotent | Idempotent |
Invocation Example
"Registering new experiment"
Request
POST /projects/456/experiments
Host: federation.com
Accept: application/ctf.Experiment+json
Content-Type: application/ctf.Experiment+json
Representation
{
"name":"Test Experiment",
"description":"A simple test experiment",
"user":{
"uri":"http://federation.com/users/123",
"name":"John Smith",
"media_type":"application/ctf.User+json"
},
"project":{
"uri":"http://federation.com/projects/456",
"name":"Test Projest",
"media_type":"application/ctf.Project+json"
},
"sharing":"public"
}
Response
HTTP/1.1 201 Created
Location: federation.com/projects/456/experiments/789
