[659] | 1 | .. kernel-what: |
---|
| 2 | |
---|
| 3 | .. include:: <xhtml1-lat1.txt> |
---|
| 4 | .. include:: <xhtml1-symbol.txt> |
---|
| 5 | |
---|
| 6 | What is ZOO-Kernel ? |
---|
| 7 | ==================== |
---|
| 8 | |
---|
| 9 | ZOO-Kernel is the heart of the `ZOO-Project <http://zoo-project.org>`_ WPS platform. It is a WPS compliant implementation written in C language which provides a powerful and extensible WPS server. |
---|
| 10 | |
---|
[711] | 11 | ZOO-Kernel is an extensible WPS server that makes your system more |
---|
| 12 | powerful. It provides a full-featured processing engine which runs on |
---|
| 13 | Linux, Mac OSX |trade| and Windows |trade| operating |
---|
| 14 | systems. ZOO-Kernel is a CGI program which works on common web servers |
---|
| 15 | (namely `Apache <http://httpd.apache.org/>`_ or `IIS |
---|
| 16 | <http://www.iis.net/>`_ |trade|). It can be seamlessly integrated to |
---|
| 17 | new or existing web platforms. |
---|
[659] | 18 | |
---|
[711] | 19 | ZOO-Kernel lets you process geospatial or non geospatial data using |
---|
| 20 | well formed WPS requests. The WPS server is able to manage and chain |
---|
| 21 | WPS Services (see ZOO-Services for examples) by loading dynamic |
---|
| 22 | libraries and source code written in different programming languages. |
---|
| 23 | |
---|
[659] | 24 | First class WPS server |
---|
| 25 | ----------------------- |
---|
| 26 | |
---|
[722] | 27 | Simple |
---|
| 28 | ...... |
---|
| 29 | |
---|
| 30 | The ZOO-Kernel rely on simple principles and tends to ease the |
---|
| 31 | implementation of new services by sharing similar data structures for |
---|
| 32 | every supported programming languages. The ZOO-Kernel is responsible |
---|
| 33 | to parse the requests it receives and return the corresponding WPS |
---|
| 34 | response. |
---|
| 35 | |
---|
| 36 | In case of an *Execute* request, the ZOO-Kernel stores informations in |
---|
| 37 | a basic KVP data structure for the programming language used to |
---|
| 38 | implement the service, dynamically load the Service Provider defined |
---|
| 39 | in the zcfg file and run a specific function corresponding to the |
---|
| 40 | service, passing three arguments. Once the function return, ZOO-Kernel |
---|
| 41 | knows if the service run succeessfuly or failed by checking the |
---|
| 42 | returned value. In the case it succeeded, the ZOO-Kernel then parse |
---|
| 43 | the third arguments containing the result and produce the output in |
---|
| 44 | the desired format. |
---|
| 45 | |
---|
| 46 | |
---|
| 47 | |
---|
[679] | 48 | Compliant |
---|
| 49 | ........................................................ |
---|
[659] | 50 | |
---|
[711] | 51 | ZOO-Kernel implements and complies with the `WPS 1.0.0 |
---|
| 52 | <http://www.opengeospatial.org/standards/wps/>`_ and the `WPS 2.0.0 |
---|
| 53 | <http://www.opengeospatial.org/standards/wps/>`_ standards edited by |
---|
| 54 | the `Open Geospatial Consortium <http://www.opengeospatial.org/>`_. It |
---|
| 55 | is able to perform the WPS operations defined in the OpenGIS |reg| |
---|
| 56 | specification, such as: |
---|
[659] | 57 | |
---|
[711] | 58 | * **GetCapablities**: Returns service-level metadata information.It |
---|
| 59 | provides the list of available processing services. |
---|
| 60 | * **DescribeProcess**: Returns a description of a process, including |
---|
| 61 | its supported input and output. |
---|
| 62 | * **Execute**: Launches computation and returns the output produced |
---|
| 63 | by a particular process. |
---|
| 64 | * **GetStatus**: only available in WPS 2.0.0, it lets the client fetch |
---|
| 65 | the ongoing status of a running service. |
---|
| 66 | * **GetResult**: only available in WPS 2.0.0, it lets the client fetch |
---|
| 67 | the final result of a running service. |
---|
| 68 | * **Dismiss**: only available in WPS 2.0.0, it lets the client ask |
---|
| 69 | the server to stop a running service and remove any file it created. |
---|
[679] | 70 | |
---|
[697] | 71 | ZOO-Kernel compliancy and performances can be tested using the |
---|
| 72 | following tools: |
---|
| 73 | * `cptesting <https://github.com/WPS-Benchmarking/cptesting>`_ |
---|
| 74 | * WPS Test Suite provided by the `OGC compliancy program <http://cite.opengeospatial.org/>`_ |
---|
| 75 | * XML responses validity can also be simply tested using `XMLint <http://xmlsoft.org/xmllint.html/>`_. |
---|
[679] | 76 | |
---|
| 77 | Polyglot |
---|
[663] | 78 | ........................................................ |
---|
[659] | 79 | |
---|
[679] | 80 | ZOO-Kernel is a **polyglot**. The software is written in a valid form |
---|
| 81 | of multiple programming languages, which performs the same operations |
---|
| 82 | independent of the programming language used to compile or interpret |
---|
| 83 | it. The supported programming languages are listed bellow: |
---|
[659] | 84 | |
---|
| 85 | ============ =================== ========================= ============ |
---|
| 86 | **Language** **ServiceProvider** **DataStructure** **Return** |
---|
| 87 | ------------ ------------------- ------------------------- ------------ |
---|
| 88 | C / C++ Shared Library maps* M integer |
---|
| 89 | Java Class File `HashMap`_ integer |
---|
[942] | 90 | C# Class File `ZMaps`_ integer |
---|
[659] | 91 | Python Module File `Dictionary`_ integer |
---|
| 92 | PHP Script File `Array`_ integer |
---|
| 93 | Perl Script File integer |
---|
| 94 | Ruby Script File `Hash`_ integer |
---|
| 95 | Fortran Shared Library CHARACTER*(1024) M(10,30) integer |
---|
[942] | 96 | R Script file `R List`_ integer |
---|
[659] | 97 | JavaScript Script file `Object`_ or Array Object/Array |
---|
| 98 | ============ =================== ========================= ============ |
---|
| 99 | |
---|
| 100 | .. _`HashMap`: http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html |
---|
| 101 | .. _`dictionary`: http://docs.python.org/tutorial/datastructures.html#dictionaries |
---|
| 102 | .. _`Array`: http://php.net/manual/language.types.array.php |
---|
| 103 | .. _`Object`: http://www.json.org/ |
---|
| 104 | .. _`Hash`: http://ruby-doc.org/core-2.2.0/Hash.html |
---|
[942] | 105 | .. _`ZMaps`: https://docs.microsoft.com/fr-fr/dotnet/api/system.collections.generic.dictionary-2?view=netframework-4.8 |
---|
| 106 | .. _`R List`: https://cran.r-project.org/doc/manuals/r-release/R-lang.html#List-objects |
---|
[659] | 107 | |
---|