Hazelcast .net客户端保护问题

时间:2017-04-28 08:37:12

标签: java c# serialization hazelcast

我尝试在Hazelcast使用自定义服务。在文档中,有一个Java示例。我把它添加到我的代码中。另一方面,我有一个.net客户端,所以我需要对它进行deseriliaze,但我不能编写读写方法。我的示例.net客户端代码在这里,我该如何使用它?

public class TestModelSerializer : IStreamSerializer<TestModel> {

    public void Destroy() {
        throw new NotImplementedException();
    }

    public int GetTypeId()
    {
        return 158;
    }

    public TestModel Read(IObjectDataInput input) {
        ?????
         //Here I cannot solved....
    }

    public void Write(IObjectDataOutput output,TestModel obj) {
        ?????
         //Here I cannot solved....
    }
}

在Java端代码是:

public static class TestModelXmlSerializer implements StreamSerializer<TestModel> {


    public int getTypeId() {
        return 158;
    }


    public void write(ObjectDataOutput out, TestModel object ) throws IOException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        XMLEncoder encoder = new XMLEncoder( bos );
        encoder.writeObject( object );
        encoder.close();
        out.write( bos.toByteArray() );
    }


    public TestModel read( ObjectDataInput in ) throws IOException {
        InputStream inputStream = (InputStream) in;
        XMLDecoder decoder = new XMLDecoder( inputStream );
        return (TestModel) decoder.readObject();
    }


    public void destroy() {
    }
}

1 个答案:

答案 0 :(得分:0)

Hazelcast自定义序列化程序应使用兼容的数据格式,以便从各种平台(如.Net)中使用。

Java XmlEncoder / XmlDecoder与.Net XmlSerializer xml格式不兼容,因此不适合此任务。如果忽略性能,可以使用json。例如,您可以在.Net上使用GSON,在.Net上使用共享相同数据格式的json.net。

最好的方法是直接使用自定义序列化API还是委派您选择的高性能序列化库。