【问题标题】:Is there any way to do custom serialization in WCF?有没有办法在 WCF 中进行自定义序列化?
【发布时间】:2010-12-22 13:41:50
【问题描述】:

在我的 WCF 解决方案中,服务器不需要知道数据类型。客户端将发送一个类型并接收相同的类型。

出于性能原因,我认为我可以在客户端代理中手动实现序列化,避免在服务器端内置 WCF 序列化,但是有什么方法可以通过正确配置 WCF 来实现相同的目标?

【问题讨论】:

    标签: .net wcf configuration serialization


    【解决方案1】:

    WCF 的整个基本架构是基于客户端调用服务器,发送序列化消息。

    这就是 WCF 的基础——消息传递。你不能把它关掉。你可以调整它 - 但你不能删除它。

    关于自定义序列化 - 查看 Aaron Skonnard 在 MSDN 杂志上的出色的 Serialization in WCF 文章。

    您可以为 WCF 创建自己的自定义序列化程序 - 如果您真的想要 - 但为什么呢?

    为什么您作为一个开发人员或小商店想要与微软相当庞大的团队“竞争”并再次重新发明序列化的轮子?我宁愿专注于微软无法为我解决的实际业务问题,而是让“基础设施粘合剂”成为他们的游戏——他们擅长于此,而且他们有更多的人力和资源来解决这些问题!

    【讨论】:

    • 但是您可以指定以相对不可知的方式传递的数据类型,传递 Object 实例、byte[] 数组或类似的。
    • 是的 - 但即便如此,这个将在某个时候被序列化为一条消息。如果不经过某种形式的序列化,就无法将对象从客户端传递到服务器。
    • 我不认为我可以在可用时间内构建任何与内置序列化一样好的东西。但我想知道内置序列化是否应该像我要求的那样可配置。
    【解决方案2】:

    我认为protobuf-net 自定义了序列化。如果我查看它的源代码,我可以理解如何实现我的目标

    【讨论】:

      【解决方案3】:

      只需使您来回传递给服务器的类型具有类似于 byte[] 属性的东西。然后您可以在客户端上序列化您的已知类型。服务器只需要知道不透明字节

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-28
        • 1970-01-01
        • 2021-11-24
        相关资源
        最近更新 更多