2012-12-06 171 views
3

我有python服務器,通過使用marshal module序列化一些字典。並將序列化的消息發送到C#客戶端套接字。如何在客戶端(c#)端反序列化此消息。由於執行速度的問題,我無法使用IronPython。Python序列化c#反序列化

或者你知道其他的方式來序列化/反序列化Python和C#之間的「消息」。

+0

您應該使用WCF進行互操作。 –

+0

執行問題的速度是多少? –

+0

@ IgnacioVazquez-Abrams該程序應在3秒內執行。並且IronPython模塊執行會增加1-3秒的時間。 – godloky

回答

3

JSON呢?你可以爲C#編寫或者甚至找到一個de-Python pickle-er,但是像dict這樣的東西很容易用JSON來表示,這是一個衆所周知的定義良好的標準,可靠,快速的serilaize /反序列化庫幾乎在每種語言中都存在。當然也有XML,但JSON通常更容易處理。

1

marshal通常是針對Python的。如果你想跨語言支持,那麼你應該使用json

0

作爲marshal的替代方案,「協議緩衝區」在python和c#中都有很好的支持。 Google提供了python實現,並且有多個c#實現。協議緩衝區提供出色的版本支持,豐富多樣的跨平臺實現以及非常高效的串行化,是快速二進制套接字使用的理想選擇。

1

YAML支持在許多languages可用,並支持許多數據類型JSON語法是YAML 1.2版的一個子集,也享有廣泛的支持。