wiki:Grass7/RPCInterface

Version 2 (modified by huhabla, 10 years ago) ( diff )

--

RPC interface for persistent GUI

Proposal of a RPC interface for persistent GUI applications.

Introduction

Like any other GIS needs GRASS GIS a reliable graphical user interface (GUI) to manage, display and interact with maps. The GRASS GIS core libraries should be used to implement a GUI to achieve good performance, especially in case of vector editing. The design of the GRASS core libraries targets the implementation of GRASS modules and is not designed for persistent applications like a GUI. The main problem for persistent application is, that several library functions will terminate the application in case of a fatal error. This approach makes the implementation of GRASS modules more easy, since the handling of fatal errors is mostly done by library functions, which is not usable in persistent applications.

One reasonable approach to use the GRASS GIS core libraries in persistent applications is the implementation of a Remote Procedure Call wrapper, that provides an interface to GRASS library functions that exists in a different process than the persistent application. This will avoid the termination of the persistent application in case of a fatal error. The drawback is the complex implementation of a RPC interface, or in case a third party solution is used to implement the RPC interface additional dependencies. The RPC interface will also add more overhead to each function call, since data that is passed between persistent application and the GRASS library interface process must be serialized and transferred via Interprocess Communication (IPC).

The benefit of a RPC interface are

  • the ability to implement performant and well function persistent applications.
Note: See TracWiki for help on using the wiki.