0

有什么方法可以让我使用使用二进制序列化进行通信的 WCF 服务?序列化的格式是什么,我可以以某种方式反序列化 .NET 序列化对象(使用非 .NET)吗?

4

1 回答 1

4

如果“二进制序列化”是指具有二进制编码的端点,那么是的,您可以以某种方式反序列化非 .NET 客户端上的 .NET 对象 - 该格式已公开记录(见下文)。但是,AFAIK 没有用于非 .NET 客户端的库可以反序列化该格式的对象,因此您只能靠自己。如果可以,您确实应该考虑添加另一个端点,以“普通”XML 形式公开数据。

二进制格式(同样,如果您使用的是二进制编码器)实际上只是 XML 的一种格式。因此,不要将数据序列化为以下格式

<Person xmlns="http://my.namespace.com">
    <Name>John Doe</Name>
    <Age>29</Age>
</Person>

它将以二进制版本序列化,但它代表相同的数据(XML 信息集)。

可以在http://msdn.microsoft.com/en-us/library/cc219210(v=prot.10).aspx找到二进制 XML 格式的规范。二进制格式还定义了一个字典概念(用于从流中消除重复或常用的字符串),您可能需要查看http://msdn.microsoft.com/en-上的“SOAP 数据结构”协议us/library/cc219175(v=prot.10).aspx也是如此。

于 2012-09-25T17:19:01.520 回答