我目前在 .Net 3.5 中有多个 WCF 服务,它们通过 NetTCP 绑定(bind)与客户端进行通信。我们从 WsHTTP 绑定(bind)切换到 NetTCP,以减少客户端和服务器之间的数据流量(NetTCP har 二进制编码传输)。
我们对结果并不满意(在我们的测试中仅减少了 30%),并且希望使用二进制序列化器而不是对象的默认 xml 序列化。
这会进一步减少有效负载吗?如何在 WCF 中实现二进制序列化?我们使用类型化数据集作为传输对象..
最佳答案
绝对没有讽刺的意思,但您应该认真考虑为服务的数据契约使用普通对象而不是数据集。强类型 Dataset 对象可能非常复杂(只需查看后面的代码),并且它的任何序列化在大小上都将非常庞大。 NetTcpBinding 已经使用了二进制序列化器,它应该产生更小的有效负载。作为替代方案,如果您尝试创建可查询/灵活的服务层,请考虑使用 resource-based service architecture相反。
如果您认为可以改进 Microsoft 的 netTcpBinding 二进制编码器,请查看此 MSDN post 中引用的示例代码。开始吧。
关于wcf - WCF NetTCPBinding 中的二进制序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7146550/