| <% 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%> .NET 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> |
| |
| The simplest option is to use [automatic serialization](dotnet-pdx-autoserializer.html) by registering the <%=vars.product_name%> .NET |
| PDX reflection-based autoserializer in your application. When you have an autoserializer, |
| <%=vars.product_name%> uses it for all domain objects that are not separately treated under the IPDXSerializable interface. |
| |
| For greater control, you can specify individual treatment for domain objects using the `IPdxSerializable` interface. |
| Objects derived from the `IPdxSerializable` interface are not subject to autoserialization. |
| |
| ## <a id="pdx-ser-portability"></a>Portability of PDX Serializable Objects |
| |
| When you create an `IPdxSerializable` 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. |
| |
| This offers a notable advantage to the .NET client, which shares data with Java cache |
| servers. When using PDX serialization, clients automatically pass registry information to servers when they store an |
| `IPdxSerializable` 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 .NET clients to manage data using Java servers without having to |
| create Java implementations of your .NET domain objects. |
| |
| ## <a id="pdx-ser-reduced-deserialization"></a>Reduced Deserialization of Serialized Objects |
| |
| The access methods for `IPdxSerializable` objects allow you to examine specific fields of your |
| domain object without deserializing the entire object. This can reduce |
| deserialization costs significantly. Client .NET 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 and autoserialization: |
| |
| - [Using the Geode PDX Autoserializer](dotnet-pdx-autoserializer.html) |
| - [Using the IPdxSerializable Interface](serialize-using-ipdxserializable.html) |
| - [IPdxSerializable Examples](pdx-serializable-examples.html) |