Denis Magda created IGNITE-3501:
-----------------------------------

             Summary: Step-by-step guidance on how to configure and use binary 
type across Java and .Net
                 Key: IGNITE-3501
                 URL: https://issues.apache.org/jira/browse/IGNITE-3501
             Project: Ignite
          Issue Type: Improvement
          Components: platforms
    Affects Versions: 1.6
            Reporter: Denis Magda
            Assignee: Denis Magda
            Priority: Critical
             Fix For: 1.7


It's quite a common task and endeavor to work with objects, stored in Ignite 
caches, in their deserialized form on Java and .Net sides. This requires 
special setup at the configuration level. Presently we don't have a page that 
list this particular steps with examples. 

The following can be used as a draft

1) Explicitly configure all your custom types on Java side using 
BinaryConfiguration.typeConfigurations property [1] or 
BinaryConfiguration.classNames property [2].

2) Explicitly configure the same corresponding .Net types on .Net side using  
PlatformDotNetBinaryConfiguration.types property as it shown under XML tab on 
this page [3]. Remove BinaryConfiguration bean from .Net XML configuration if 
you use it before. Set additional required properties to 
PlatformDotNetBinaryConfiguration bean if BinaryConfiguration used any.

3) If you use custom keys then make sure that both "hashCode" and "equals" 
methods are implemented properly on both Java and .Net ends.

4) On .Net side you should implement IBinarizable interface [4] or go with 
Ignite Reflective Serialization [5] for your custom objects.

5) On Java side you can implement Binarizable interface as well or rely on 
reflective serialization making sure that your objects don't implement 
Externalizable interface and don't override readObject/writeObject methods [6].

Please let me know if everything works fine on your side after applying the 
listed steps.

Regards,
Denis

[1] 
https://apacheignite.readme.io/docs/binary-marshaller#configuring-binary-objects
[2] 
https://ignite.apache.org/releases/1.6.0/javadoc/org/apache/ignite/configuration/BinaryConfiguration.html#setClassNames(java.util.Collection)
[3] https://apacheignite-net.readme.io/docs/serialization#ibinarizable
[4] https://apacheignite-net.readme.io/docs/serialization#ibinarizable
[5] 
https://apacheignite-net.readme.io/docs/serialization#ignite-reflective-serialization
[6] https://apacheignite.readme.io/docs/binary-marshaller#basic-concepts


On .Net side the configuration must be provided for App.config, C# config and 
Spring XML.

On Java side the configuration must be provided for Java and Spring XML configs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to