【问题标题】:Binary serialization in WCF NetTCPBindingWCF NetTCPBinding 中的二进制序列化
【发布时间】:2011-08-22 11:06:52
【问题描述】:

我目前在 .Net 3.5 中有几个 WCF 服务,它们通过 NetTCP 绑定与客户端进行通信。我们从 WsHTTP 绑定切换到 NetTCP 以减少客户端和服务器之间的数据流量(NetTCP har 二进制编码传输)。

我们对结果不满意(在我们的测试中仅减少了 30%),并希望使用二进制序列化器而不是对象的默认 xml 序列化。

这会进一步减少有效载荷吗?如何在 WCF 中实现二进制序列化?我们使用类型化的数据集作为传输对象..

【问题讨论】:

    标签: wcf strongly-typed-dataset nettcpbinding


    【解决方案1】:

    绝对没有讽刺的意思,但您应该认真考虑为服务的数据合同使用普通对象而不是数据集。强类型的 Dataset 对象可能非常复杂(只需查看后面的代码),并且它的任何序列化都会非常庞大​​,在大小方面。 NetTcpBinding 已经使用了二进制序列化程序,它应该产生更小的有效负载。作为替代方案,如果您尝试创建可查询/灵活的服务层,请考虑改用 resource-based service architecture

    如果您认为您可以改进 Microsoft 的 netTcpBinding 二进制编码器,请查看此MSDN post 中引用的示例代码以开始使用。

    【讨论】:

    • 你好,谢谢。该项目完全锁定为使用强类型数据集,所以这不是一个选项。您确定 NetTCPBinding 使用二进制序列化程序吗?我知道序列化的对象是用二进制编码传输的,但我认为对象是正常序列化的(xml)?
    • 我现在没有时间验证这一点,但我相信 netTcpBinding 使用 binary XML 序列化格式 documented in this MSDN post. 如果您正在考虑,请务必查看该文档滚动您自己的序列化格式。这个MSDN blog post 会让你开始走这条路。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2016-07-27
    • 1970-01-01
    相关资源
    最近更新 更多