<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <!-- Always force latest IE rendering engine or request Chrome Frame -->
  <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">

  
  <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,400italic,400,600' rel='stylesheet' type='text/css'>
  <!-- Use title if it's in the page YAML frontmatter -->
  <title>
      Data Serialization &ndash; C++ |
    Geode Native C++ Docs
  </title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="/stylesheets/all.css" rel="stylesheet" media="screen, print" />
  <link href="/stylesheets/print.css" rel="stylesheet" media="print" />
  <link href='/images/favicon.ico' rel='shortcut icon'>

  <script src="/javascripts/all.js"></script>
  
</head>

<body class="docs docs_geode-native docs_geode-native_cpp docs_geode-native_cpp_113 docs_geode-native_cpp_113_serialization docs_geode-native_cpp_113_serialization_cpp-serialization docs_geode-native_cpp_113_serialization_cpp-serialization_serialization-overview has-subnav">

<div class="viewport">
  <div class='wrap'>
    <script type="text/javascript">
      document.domain = "apache.org";
    </script>

    <!--
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.
-->
<header class="header header-layout">
  <h1 class="logo">
    <a href="/">
        <img src="/images/Apache_Geode_logo_symbol_white.png" style="width:30px;">
      Apache Geode Native C++ Documentation
    </a>
  </h1>
  <div class="header-links js-bar-links">
    <div class="btn-menu" data-behavior="MenuMobile"></div>
    <div class="header-item"><a href="http://geode.apache.org">Back to Product Page</a></div>
    <div class="header-item">
      <a href="http://geode.apache.org/community" target="_blank">Community</a>
    </div>
  </div>
</header>


    <div class="container">

      <!--googleoff: index-->
      <!--
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.
-->
<div id="sub-nav" class="js-sidenav nav-container" role="navigation">
<a class="sidenav-title" data-behavior="SubMenuMobile">Doc Index</a>
  <div class="nav-content">
  <ul>
    <li>
      <a href="/docs/geode-native/cpp/113/about-client-users-guide.html">Apache Geode Native Documentation</a>
    </li>
    <li class="has_submenu">
      <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html">Getting Started with the Native Library</a>
      <ul>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html#set_up_dev_environment">Set Up Your Development Environment</a>
        </li>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html#establish_cluster_access">Establish Access to a Geode Cluster</a>
        </li>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html#app_dev_walkthroughs">Application Development Walkthroughs</a>
        </li>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html#programming_examples">Programming Examples</a>
        </li>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/put-get-example.html">Put/Get/Remove Examples</a>
        </li>
      </ul>
    </li>
    <li class="has_submenu">
      <a href="/docs/geode-native/cpp/113/configuring/configuration.html">Configuring a Client Application</a>
      <ul>
        <li>
          <a href="/docs/geode-native/cpp/113/configuring/system-level-configuration.html">System Level Configuration</a>
        </li>
      </ul>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/configuring/config-client-cache.html">Configuring the Client Cache</a>
    </li>
    <li class="has_submenu">
      <a href="/docs/geode-native/cpp/113/regions/regions.html">Configuring Regions</a>
      <ul>
        <li>
        <a href="/docs/geode-native/cpp/113/regions/registering-interest-for-entries.html">Registering Interest for Entries</a>
        </li>
        <li>
        <a href="/docs/geode-native/cpp/113/regions/region-attributes.html">Region Attributes</a>
        </li>
      </ul>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/serialization/data-serialization.html">Serializing Data</a>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/remote-queries.html">Remote Queries</a>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/continuous-queries.html">Continuous Queries</a>
    </li>

    <li class="has_submenu">
      <a href="/docs/geode-native/cpp/113/security/security.html">Security: Authentication and Encryption</a>
      <ul>
        <li>
        <a href="/docs/geode-native/cpp/113/security/authentication.html">Authentication</a>
        </li>
        <li>
        <a href="/docs/geode-native/cpp/113/security/sslclientserver.html">TLS/SSL Client-Server Communication Encryption</a>
        </li>
      </ul>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/function-execution.html">Function Execution</a>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/transactions.html">Transactions</a>
    </li>
    <li>
      <a href="/docs/geode-native/cpp/113/configuring/sysprops.html">System Properties</a>
    </li>
    <li>
      <a href="/docs/geode-native/cpp/113/client-cache-ref.html">Client Cache XML Reference</a>
    </li>
  </ul>
  </div>
</div>

      <!--googleon: index-->

      <main class="content content-layout" id="js-content" role="main">
        <a id="top"></a>
        <!--
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.
-->
<span style="font-weight:200;font-size:31px;" style="float:left;">
    <img src="/images/Apache_Geode_logo_symbol.png" style="height:26px;">
  Apache Geode Native C++
</span>
  <span class="local-header version-info" style="float:right;">
    <a href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes">CHANGELOG</a>
  </span>

        <!--
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.
-->
  <h1 class="title-container" >
    Data Serialization &ndash; C++
  </h1>

          <div id="js-quick-links" >
            
          </div>
        <div class="to-top" id="js-to-top">
          <a href="#top" title="back to top"></a>
        </div>
        <!--
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.
-->

<p>All data moving out of the client cache must be serializable.</p>

<ul>
<li><p><strong><a href="/docs/geode-native/cpp/113/serialization/cpp-serialization/serialization-options.html">Data Serialization Options</a></strong></p>

<p>The C++ client API provides two serialization options:  Geode PDX serialization and the <code>apache::geode::client::DataSerializable</code> interface.</p></li>
<li><p><strong><a href="/docs/geode-native/cpp/113/serialization/cpp-serialization/pdx-serialization.html">Using PDX Serialization</a></strong></p>

<p>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 a C++ client, you can
implement PDX serialization for each domain object or register a PdxSerializer for the entire cache.</p></li>
<li><p><strong><a href="/docs/geode-native/cpp/113/serialization/cpp-serialization/serialization-using-serializable.html">Serializing Data with the DataSerializable Interface</a></strong></p>

<p>The C++ client API provides a <code>DataSerializable</code> interface that you can use for fast and compact data serialization. This section discusses the Geode DataSerializable interface and presents implementation examples.</p></li>
<li><p><strong><a href="/docs/geode-native/cpp/113/serialization/cpp-serialization/object-graphs.html">Serializing Object Graphs</a></strong></p>

<p>If you have a graph of objects where each node can be serializable, the parent node can call <code>DataOutput::writeObject</code> to delegate the serialization responsibility to its child nodes. Similarly, your application can call <code>DataInput::readObject</code> to deserialize the object graph.</p></li>
<li><p><strong><a href="/docs/geode-native/cpp/113/serialization/cpp-serialization/data-as-blob.html">Serializing and Accessing Data as a Blob</a></strong></p>

<p>If you have data that is best handled as a blob, such as structs that do not contain pointers, use the serializable type <code>CacheableBytes</code> . <code>CacheableBytes</code> is a blob class that implements the serialization for you.</p></li>
</ul>

        

      </main>
    </div>
  </div>
</div>

<div id="scrim"></div>

<div class="container">
  <footer class="site-footer-links">
    <!--
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.
-->
<div class="copyright">
  <a href='/'>Apache Geode Documentation</a>
  &copy; 2020 <a href='http://www.apache.org/'>The Apache Software Foundation</a>.
</div>
<div class="support">
  Need help? <a href="http://geode.apache.org/community" target="_blank">Visit the Community</a>
</div>

  </footer>
</div><!--end of container-->

</body>
</html>
