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 | |
---|
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. |
---|
18 | |
---|
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 | |
---|
24 | First class WPS server |
---|
25 | ----------------------- |
---|
26 | |
---|
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 | |
---|
48 | Compliant |
---|
49 | ........................................................ |
---|
50 | |
---|
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: |
---|
57 | |
---|
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. |
---|
70 | |
---|
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/>`_. |
---|
76 | |
---|
77 | Polyglot |
---|
78 | ........................................................ |
---|
79 | |
---|
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: |
---|
84 | |
---|
85 | ============ =================== ========================= ============ |
---|
86 | **Language** **ServiceProvider** **DataStructure** **Return** |
---|
87 | ------------ ------------------- ------------------------- ------------ |
---|
88 | C / C++ Shared Library maps* M integer |
---|
89 | Java Class File `HashMap`_ integer |
---|
90 | C# Class File `ZMaps`_ integer |
---|
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 |
---|
96 | R Script file `R List`_ integer |
---|
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 |
---|
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 |
---|
107 | |
---|