﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.7.5/dotnetdoc/api/Apache.Ignite.Core.Binary.html" />

<META NAME="ROBOTS" CONTENT="NOINDEX">

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Namespace Apache.Ignite.Core.Binary
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Namespace Apache.Ignite.Core.Binary
   | Apache Ignite.NET ">
    <meta name="generator" content="docfx 2.24.0.0">
    
    <link rel="shortcut icon" href="../images/favicon.ico">
    <link rel="stylesheet" href="../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../styles/docfx.css">
    <link rel="stylesheet" href="../styles/main.css">
    <meta property="docfx:navrel" content="../toc.html">
    <meta property="docfx:tocrel" content="toc.html">
    
    <meta property="docfx:rel" content="../">
    
  
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
  <body data-spy="scroll" data-target="#affix">
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="../index.html">
                <img id="logo" class="svg" src="../images/logo_ignite_32_32.png" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search" id="breadcrumb">
            <ul class="breadcrumb">
              <li></li>
            </ul>
          </div>
        </div>
      </header>
      <div class="container body-content">
        
        <div id="search-results">
          <div class="search-list"></div>
          <div class="sr-items"></div>
          <ul id="pagination"></ul>
        </div>
      </div>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="Apache.Ignite.Core.Binary">
  
  <h1 id="Apache_Ignite_Core_Binary" data-uid="Apache.Ignite.Core.Binary" class="text-break">Namespace Apache.Ignite.Core.Binary
  </h1>
  <div class="markdown level0 summary"></div>
  <div class="markdown level0 conceptual"></div>
  <div class="markdown level0 remarks"></div>
    <h3 id="classes">Classes
  </h3>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.BinaryBasicNameMapper.html">BinaryBasicNameMapper</a></h4>
      <section><p>Base binary name mapper implementation.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.BinaryConfiguration.html">BinaryConfiguration</a></h4>
      <section><p>Binary type configuration.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.BinaryObjectException.html">BinaryObjectException</a></h4>
      <section><p>Indicates an error during binarization.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.BinaryReflectiveSerializer.html">BinaryReflectiveSerializer</a></h4>
      <section><p>Binary serializer which reflectively writes all fields except of ones with 
<span class="xref">System.NonSerializedAttribute</span>.
<p>
Note that Java platform stores dates as a difference between current time 
and predefined absolute UTC date. Therefore, this difference is always the 
same for all time zones. .NET, in contrast, stores dates as a difference 
between current time and some predefined date relative to the current time 
zone. It means that this difference will be different as you change time zones. 
To overcome this discrepancy Ignite always converts .Net date to UTC form 
before serializing and allows user to decide whether to deserialize them 
in UTC or local form using <code>ReadTimestamp(..., true/false)</code> methods in 
<a class="xref" href="Apache.Ignite.Core.Binary.IBinaryReader.html">IBinaryReader</a> and <a class="xref" href="Apache.Ignite.Core.Binary.IBinaryRawReader.html">IBinaryRawReader</a>.
This serializer always read dates in UTC form. It means that if you have
local date in any field/property, it will be implicitly converted to UTC
form after the first serialization-deserialization cycle. </p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.BinaryTypeConfiguration.html">BinaryTypeConfiguration</a></h4>
      <section><p>Binary type configuration.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.BinaryTypeNames.html">BinaryTypeNames</a></h4>
      <section><p>Binary type name constants.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.TimestampAttribute.html">TimestampAttribute</a></h4>
      <section><p>Instructs the serializer to write DateTime fields and properties in Timestamp format,
which is interoperable with other platforms and works in SQL,
but does not allow non-UTC values.
<p>
When applied to a struct or a class, changes behavior for all fields and properties.
<p>
Normally serializer uses <a class="xref" href="Apache.Ignite.Core.Binary.IBinaryWriter.html#Apache_Ignite_Core_Binary_IBinaryWriter_WriteObject__1_System_String___0_">WriteObject&lt;T&gt;(String, T)</a> for DateTime fields.
This attribute changes the behavior to <a class="xref" href="Apache.Ignite.Core.Binary.IBinaryWriter.html#Apache_Ignite_Core_Binary_IBinaryWriter_WriteTimestamp_System_String_System_Nullable_System_DateTime__">WriteTimestamp(String, Nullable&lt;DateTime&gt;)</a>.
<p>
See also <a class="xref" href="Apache.Ignite.Core.Binary.BinaryReflectiveSerializer.html#Apache_Ignite_Core_Binary_BinaryReflectiveSerializer_ForceTimestamp">ForceTimestamp</a>.</p>
</section>
    <h3 id="interfaces">Interfaces
  </h3>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinarizable.html">IBinarizable</a></h4>
      <section><p>Interface to implement custom serialization logic.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinary.html">IBinary</a></h4>
      <section><p>Defines binary objects functionality. With binary objects you are able to:
<ul><li>Seamlessly interoperate between Java, .NET, and C++.</li><li>Make any object binary with zero code change to your existing code.</li><li>Nest binary objects within each other.</li><li>Automatically handle <code>circular</code> or <code>null</code> references.</li><li>Automatically convert collections and maps between Java, .NET, and C++.</li><li>Optionally avoid deserialization of objects on the server side.</li><li>Avoid need to have concrete class definitions on the server side.</li><li>Dynamically change structure of the classes without having to restart the cluster.</li><li>Index into binary objects for querying purposes.</li></ul></p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinaryIdMapper.html">IBinaryIdMapper</a></h4>
      <section><p>Maps class name and class field names to integer identifiers.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinaryNameMapper.html">IBinaryNameMapper</a></h4>
      <section><p>Maps type and field names to different names.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinaryObject.html">IBinaryObject</a></h4>
      <section><p>Wrapper for serialized objects.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinaryObjectBuilder.html">IBinaryObjectBuilder</a></h4>
      <section><p>binary object builder. Provides ability to build binary objects dynamically
without having class definitions.
<p>
Note that type ID is required in order to build binary object. Usually it is
enough to provide a simple type name and Ignite will generate the type ID
automatically.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinaryRawReader.html">IBinaryRawReader</a></h4>
      <section><p>Raw reader for binary objects. </p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinaryRawWriter.html">IBinaryRawWriter</a></h4>
      <section><p>Raw writer for binary objects. </p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinaryReader.html">IBinaryReader</a></h4>
      <section><p>Reader for binary objects. </p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinarySerializer.html">IBinarySerializer</a></h4>
      <section><p>Binary serializer. </p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinaryType.html">IBinaryType</a></h4>
      <section><p>Binary type metadata.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Binary.IBinaryWriter.html">IBinaryWriter</a></h4>
      <section><p>Writer for binary objects. </p>
</section>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            © 2015 - 2018 The Apache Software Foundation
            
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../styles/docfx.js"></script>
    <script type="text/javascript" src="../styles/main.js"></script>
  </body>
</html>
