2012-09-25 33 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數據結構」協議。