| <% set_title(product_name, "PDX Serialization") %> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <%=vars.product_name%>'s Portable Data eXchange (PDX) is a cross-language data format that can reduce the cost of distributing and serializing your objects. |
| |
| <%=vars.product_name%> C++ PDX serialization: |
| |
| - Is <a href="#pdx-ser-portability">interoperable with other languages by <%=vars.product_name%></a> -- no need to program a Java-side implementation |
| |
| - <a href="#pdx-ser-reduced-deserialization">Reduces |
| deserialization overhead</a> by providing direct field access on servers of serialized data, |
| without full deserialization. Stores data in named fields that you can access individually, to |
| avoid the cost of deserializing the entire data object |
| |
| - <a href="#pdx-ser-delta-prop">Works with <%=vars.product_name%> delta propagation</a> |
| |
| For greater control, you can specify individual treatment for domain objects using the `PdxSerializable` interface. |
| |
| ## <a id="pdx-ser-portability"></a>Portability of PDX Serializable Objects |
| |
| When you create a `PdxSerializable` object, <%=vars.product_name%> stores the object's type |
| information in a central registry. The information is passed between peers, between clients and |
| servers, and between distributed systems. |
| |
| When using PDX serialization, clients automatically pass registry information to servers when they store a |
| `PdxSerializable` object. Clients can run queries and functions against the data in the servers |
| without the servers needing to know anything about the stored objects. One client can store data on |
| the server to be retrieved by another client, with the server never needing to know the object |
| type. This means you can code your C++ clients to manage data using Java servers without having to |
| create Java implementations of your C++ domain objects. |
| |
| ## <a id="pdx-ser-reduced-deserialization"></a>Reduced Deserialization of Serialized Objects |
| |
| The access methods for `PdxSerializable` objects allow you to examine specific fields of your |
| domain object without deserializing the entire object. This can reduce |
| deserialization costs significantly. Client C++ apps can run queries and execute functions against |
| the objects in the server caches without deserializing the entire object on the server side. The |
| query engine automatically recognizes PDX objects and uses only the fields it needs. |
| |
| Clients can execute Java functions on server data that only access parts of the domain objects by using `PdxInstance.` |
| |
| Likewise, peers can access just the fields needed from the serialized object, keeping the object |
| stored in the cache in serialized form. |
| |
| ## <a id="pdx-ser-delta-prop"></a>Delta Propagation with PDX Serialization |
| |
| You can use <%=vars.product_name%> delta propagation with PDX serialization. |
| |
| ## <a id='pdx-ser-details'></a>PDX Serialization Details |
| |
| See the following sections for details on implementing PDX serialization: |
| |
| - [Using the PdxSerializable Abstract Class](pdxserializable-interface.html) |
| - [PdxSerializable Example](pdx-serializable-examples.html) |