【问题标题】:WCF - (Custom) binary serialisationWCF - (自定义)二进制序列化
【发布时间】:2010-03-19 17:15:18
【问题描述】:

我希望能够通过 Web 查询我的数据库,并且我希望使用 WCF 服务来处理请求和结果。问题是由于这些查询可能返回的数据量很大,我担心这些结果将如何通过网络进行序列化。例如,我可以想象 XML 序列化看起来像:

<Results>
    <Person Name="Adam" DateOfBirth="01/02/1985" />
    <Person Name="Bob" DateOfBirth="04/07/1986" />
</Results>

以及包含类型名称和其他(不必要的)元数据的二进制序列化。甚至可能是集合中每个元素的类型名称? o_o

理想情况下,我想自己执行某些“DataContract”的序列化,这样我就可以使它变得超级紧凑。有谁知道这是否可能,或者任何解释如何使用 WCF 进行自定义序列化的文章?

提前致谢

【问题讨论】:

  • 您需要突出显示代码行、SQL 或 XML,并在输入问题时使用编辑器工具栏上的“代码”按钮 (101 010) 将这些行格式化为代码,并带有语法突出显示

标签: wcf networking serialization binary datacontract


【解决方案1】:

WCF 支持开箱即用的二进制序列化格式 - 默认情况下在 netTcpBinding 中使用它。我建议首先尝试将其用于您的测试 - 仅当它不起作用且压缩不足,并且您有信心可以超越整个 WCF 团队并对其进行编程时,去推出您自己的自定义二进制序列化格式。

查看一些优秀的资源:

借助 WCF 绑定的可组合性,您还可以轻松地创建一个例如二进制 HTTP 绑定。

这里的主要问题是:如果你做这样的事情,沟通渠道的两端必须就事情的完成方式达成一致,例如您不能再指望一个简单的浏览器能够连接并理解您的自定义二进制编码 - 您需要能够控制客户端和服务器端。

【讨论】:

  • 关于“智胜整个 WCF 团队”这句话:这无关紧要。只需利用有关序列化对象的知识,自定义二进制序列化和编码总是可以胜过通用的。没有必要“智取”任何人。
猜你喜欢
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 2011-06-21
  • 2010-10-13
  • 2012-11-29
  • 1970-01-01
相关资源
最近更新 更多