2012-09-25 29 views
0

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

+0

当你必须从其他平台使用服务时,为什么不使用另一个序列化?你究竟意味着什么样的序列化? –

+0

那么,我想知道是否可以使用二进制编码的现有服务(正如Carlos指出的),而不必对它们做任何工作。对于我的具体情况,最好的解决方案可能是要求服务开发人员使用另一种更容易使用的编码方式。感谢你和Carlos! –

回答

3

如果“二进制序列”你的意思是用二进制编码的端点,那么,你可以莫名其妙反序列化上non-.NET客户的.NET对象 - 格式公开记录(见下文)。但是,AFAIK没有针对非.NET客户端的库,它们可以反序列化该格式的对象,因此您是独立的。如果可以的话,您应该考虑添加另一个以“普通”XML格式公开数据的端点。

二进制格式(再次,如果这就是你使用的 - 二进制编码器)实际上只是一种XML格式。因此,而不是具有在序列化格式中的数据,如

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

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

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