【发布时间】:2014-12-16 07:32:57
【问题描述】:
我看到有很多方法可以序列化/反序列化 Haskell 对象:
- Data.Serialize -> 编码、解码函数
- Data.Binary http://code.haskell.org/binary/
- MsgPack、JSON、BSON 等
在我的应用程序中,我想设置一个简单的 TCP 客户端-服务器,客户端可以在其中发送序列化的 Haskell 记录对象。如何在这些序列化替代方案之间做出选择?
此外,当序列化为字符串的对象使用Network.Socket 通过网络发送时,会返回字符串。是否有一个更高级别的库,可以在整个 TCP 消息的级别上工作?换句话说,有没有办法避免在接收端编写解析代码:
- 收集一系列 recv() 调用的结果,
- 检测到已接收到整个对象,并且
- 然后解析成haskell类型?
在我的应用程序中,对象不会太大(最大可能约为 ~1MB)。
【问题讨论】:
标签: sockets haskell serialization