The iPOPO project is a Python implementation of key parts of a standard OSGi framework...e.g. bundles, the service registry and servicereference api, and a dynamic service injection framework similar to the Apache iPOJO project...thus the name iPOPO.
With the 0.8.0 release of iPOPO, there is now a Python implementation of the OSGi Remote Services and Remote Service Admin (RSA) specifications. To distinguish from the previously-provided remote services in iPOPO, this is known as RSA Remote Services.
iPOPO's RSA Remote Services has many of the same advantages as Java-based Remote Services/RSA. Some of these advantages:
Decoupling - name/service contract is decoupled from the implementation (and distribution)
Dynamics - The service registry dynamics behavior, along with all notifications, etc is available in Python
Injection and Service Dependency Management - iPOPO provides service injection and dependency management, built upon the Python API
Standard RemoteServiceAdmin Management Agent, RSA Console Commands
API for Distribution and Discovery Providers - There are documented APIs for creating new distribution and discovery providers, making it easy to support other transports and implementations for distribution (e.g. REST/JaxRS, Jsonrpc, MQTT, Zeroconf Discovery, etc).
Other advantages of Java-based OSGi services are described here. All of these advantages apply to Python/iPOPO-based services, but Python can be used to implement and/or consume services.
Currently, there are two distribution providers included with iPOPO 0.8.0: XmlRpc, Python-Java and one discovery provider: etcd. See here for tutorials showing their usage with included sample remote services.
Other distribution and discovery providers are being considered or worked on. If you are interested in seeing a particular transport supported for distribution or discovery please open an issue on the iPOPO project.
Remote Services between Python and Java
The Python-Java distribution provider makes it possible to use OSGi Remote Services between Python and Java...on both sides. This allows Remote Services to be exported from Python, and discovered/imported and consumed in Java, or exported from Java and discovered/imported/consumed from Python. See here for a sample and tutorial. These capabilities and the underlying distribution provider will be described in more detail in a subsequent posting.
No comments:
Post a Comment