| --- | |
| title: Serializing Data with 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. | |
| --> | |
| PDX is a cross-language data format that can reduce the cost of | |
| distributing and serializing your objects. PDX stores data in named | |
| fields that you can access individually to avoid the cost of | |
| deserializing the entire data object. When you use PDX serialization | |
| with the C++ client API, you can implement PDX serialization for each | |
| domain object or register a `PdxSerializer` for the entire cache. | |
| You can also set the object preference of the cache to the `PdxInstance` type, which allows you to access fields of a PDX object without deserializing the entire object. | |
| - **[Serialize Using the PdxSerializable Class](pdxserializable-interface.html)** | |
| Domain classes need to inherit the `PdxSerializable` abstract class to serialize and de-serialize the object. When you write objects using PDX serialization, they are distributed to the server tier in PDX serialized form. | |
| - **[Serialize Your Domain Objects with PdxSerializer and PdxWrapper](using-pdxserializer.html)** | |
| For domain objects that you cannot or do not want to modify, use the `PdxSerializer` and the `PdxWrapper` classes to serialize and deserialize the object's fields. | |
| - **[Programming Your Application to Use PdxInstances](using-pdxinstance.html)** | |
| A `PdxInstance` is a lightweight wrapper around the raw bytes of the PDX serialized objects kept in the cache. It provides applications with run-time access to files of a PDX serialized object. <%=vars.product_name%> provides the implementation of the `PdxInstance` class. | |
| - **[Configuring PDX to Ignore Unread Fields During Deserialization](pdx-ignore-unread-fields.html)** | |
| Use the `setPdxIgnoreUnreadFields` API to control whether PDX ignores fields that were unread during deserialization. | |
| - **[Using PdxInstanceFactory to Create PdxInstances](using-pdxinstancefactory.html)** | |
| You can use the `PdxInstanceFactory` API to create a `PdxInstance` from raw data when the domain class is not available on the server. | |
| - **[Using C++ Enum Type with PDX Serialization](using-enum-type-with-pdx.html)** | |
| Because there is no "object" base type in C++, enums cannot be directly passed as parameters to the `writeObject` and `readObject` API. | |
| - **[Using PDX Serialization with Delta Propagation](pdx-with-delta-propagation.html)** | |
| To use delta propagation with PDX serialization, you must implement the `Delta` interface methods. | |