ServiceDiscoveryComparison
The table below compares the service discovery concepts from Webinos, Opera/CableLabs and Google (Web Intents and Web Introducer).
Feature | Webinos proposal | Opera/CableLabs proposal | Google Web Intents | Google Web Introducer |
---|---|---|---|---|
Level of abstraction | Javascript API to obtain Javascript-based Service APIs | Javascript API to obtain HTTP Service URL endpoints | Javascript API to allow client web application to find and communicate with service web application | Javascript API to allow client web application to find and communicate with service web application |
Relation to underlying low level discovery/communication mechanisms | Agnostic to underlying low levels discovery/communication mechanisms. This is subject for implementation of discovery infrastructure and services based on supported low level discovery and communication mechanisms | Agnostic to underlying low levels discovery/communication mechanisms (but includes standard processing rules for Zeroconf and UPnP). | None | None |
Location of services | In device, locally connected, local network and web-based services | In device, locally connected, local network and web-based services | Anywhere, service is represented by a web application that hides any underlying low level service access methods | Anywhere, service is represented by a web application that hides any underlying low level service access methods |
Network infrastructure required | Underlying infrastructure for registering user’s devices/services (more details) | Both an underlying Zeroconf and UPnP infrastructure | None (Claes: Rich, I believe a “Web Intents server”is needed. Please explain your view | “Web Introducer server” |
Identification of service type | URI identifying a JavaScript API to access the service | Service type tokens exposed from the underlying discovery mechanisms | A service (intent) is defined by:
|
A service (intent) is a string identifying an interaction pattern between a Client and a Service. Examples are bookmark for sharing, link to media file, user's stream of incoming SMSs |
Security / access control | Based on user selection of discovered service and security mechanisms implemented for respective services. A distributed approach where policy decisions are hosted in a Personal Zone. | Based on user selection of discovered service and security mechanisms implemented for respective services. Assumes that access control is handled in the UA. | Based on user selection of discovered service and security mechanisms implemented for respective services | Based on user selection of discovered service and security mechanisms implemented for respective services |
Service registration | An application can register new services through a statement in the manifest file | UA silently (i.e. in the background) handles discovery and registration of services from the local device, local network. UA also silently handles service discovery and registration on visited web sites. | To make a service (intent) discoverable it need to be registered in the UA through a simple API. The services Action, Type and URL to a web page that implements the service is registered. For example, in-page meta header registration syntax is collected as the user browses their web sites. | To make a service (intent) discoverable it need to be registered in the UA through a simple API. The service's name, supported intent strings, icons, URLs to service pages are registered. |
Discovery process | UA searches for networked services at API invocation.A successCallback is issued for each service found. Timer for how long search process lasts could be set. Pending search process can be canceled | UA searches for networked services (the timing of which is at the discretion of the UA) in the local network and on user visited web sites and maintains a list of currently available services. | A web application wanting to use a service calls a simple API stating the requested Action and Type. An iframe allows the user to select one of the registered services for this Action and Type. | A web application wanting to use a service calls a simple API stating the requested intent. An iframe or a new window allows the user to select one of the registered services for this intent. |
Search filter | Yes. Allows web application to search for services belonging to certain user(s), to state remote or local only services and to state location of service. Also allows the page to set a timer for how long search process lasts could be set. Pending search processes can be canceled. | No [1]. | No. | No. |
Communication with service | A standardized / “well-known” JavaScript API is provided to the web application to access the service. | A URL, extracted directly from the underlying service discovery process, is provided to the web application to access the service. The web page can then use standard XmlHttpRequest, Web Sockets, Server-Sent Events and Web Messaging, etc (all with implicit cross-origin resource sharing) to communcate with the service. Protocol depends on messaging format implemented in device implementing service (e.g. json, protobufs, text-based, xml, etc). | Data is sent bi-directionally between client web application page and the service web page through the Web Intents API. The format/protocol of this data exchange is defined for each Action by the Web Intents specification. Underlying communication mechanism is web messaging but this level is hided to the application developer. | Data is sent bi-directionally between client web application page and the service web page through Web Messaging. The format/protocol of this data exchange must be defined for each Intent by specific API/protocol specifications for each intent type. |
Service status monitoring | onLost callback when found but not yet bound service is lost.
onServiceUnavaialble and onServiceAvailable callbacks for bound services. |
readyState changes fire back to web page's network service objects. readystatechange events occur on a network service object when the service becomes available or unavailable. servicesAvailable attribute is used to monitor general number of services of the authorized type currently available in the user's network(s). | No service status monitoring in the Web Intents API itself but guess that this could be handled in the specific protocol for the specific Action. | No service status monitoring in the Web Introducer API itself but guess that this could be handled in the specific protocol for the specific intent type. |
Service binding lifecycle | Service binding valid until unbind() is called or client page is left. Later the binding to the service can be resumed using the saved service id. | Opera to elaborate | To be completed | To be completed |
.... | ... | ... | .... | .... |