Wednesday, August 22, 2018
OSGi Remote Services Between Python and Java
In a previous post, I described the support for OSGi Remote Services and Remote Service Admin in iPOPO 0.8.0 release. The previous post refers to a tutorial showing a Python service impl and Python consumer.
Tuesday, August 21, 2018
Python for OSGi Remote Services
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.
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.
Subscribe to:
Posts (Atom)