我尝试在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() {
}
}
答案 0 :(得分:0)
Hazelcast自定义序列化程序应使用兼容的数据格式,以便从各种平台(如.Net)中使用。
Java XmlEncoder / XmlDecoder与.Net XmlSerializer xml格式不兼容,因此不适合此任务。如果忽略性能,可以使用json。例如,您可以在.Net上使用GSON,在.Net上使用共享相同数据格式的json.net。
最好的方法是直接使用自定义序列化API还是委派您选择的高性能序列化库。