ProtoSD Logo

Proto Service Discovery (Proto-SD) is a toolkit that brings together multiple service discovery protocols that can be accessed through a single interface. It provides application and user Web-based interfaces for creating services and providing access to the services it discovers and for integration into third party applications.

For service discovery, ProtoSD exposes the raw functionality of two Java-based discovery systems, JmDNS and INDI, in a programming-friendly way to applications using command line integration or through Web interfaces via its ReST API. It also provides full bindings to Python to control ProtoSD instances through the ReST interface. The following image provides an overview of the services provided by ProtoSD along how they might be used in some sample applications.

ProtoSD Usage Example

ProtoSD has the following specifications, which are shown in the overview image below:

  1. A Java-based client/server interface to the JmDNS and INDI service discovery systems
  2. It embeds a lightweight Web engine (250K jar, i.e. not at all a J2EE container), which is used to expose a generic Representational State Transfer (REST) API, implemented using Jersey using the JAX-RS (JSR 311) standard.
  3. The Web API is exposes the functionality in two ways: using a Web browser based desktop-style Graphical User Interface (GUI); and for exposing a Web programming API for accessing ProtoSD from other languages.
  4. Being written in Java, ProtoSD also exposes a Java API directly for service discovery integration into any Java application.
  5. ProtoSD also has a command line tool to advertise and discovery services, just as one would use Apple's "dns-sd" application.
  6. There is a full Python binding to the RESTful Web API, which can create ProtoSD instances and services, and search or discover services on the network.

ProtoSD Architecture Diagram

When ProtoSD is run, you can pull up the user interface by browsing to http://localhost:8080. Further detailed documentation including a programming manual and code examples can be found at http://localhost:8080/documents.html.

Download

The ProtoSD source code is available from: http://downloads.pf.itd.nrl.navy.mil/protosd/

Contact

For further information on ProtoSD, please contact protosd_info@nrl.navy.mil.