gpt4 book ai didi

c# - WCF:单个方法或接受 xml 的通用 ProcessMessage 方法

转载 作者:数据小太阳 更新时间:2023-10-29 02:43:25 26 4
gpt4 key购买 nike

我的公司正在开发一个应用程序,它通过 TCP 套接字和 xml 消息从另一家公司接收数据。这被传送到单个网关应用程序,然后将其广播到我们组织中不同机器上同一内部应用程序的多个副本。

WCF 被选为处理内部通信(内部双向)的技术。开发人员考虑了两种方法。

  1. 公开的个别方法每个不同的 WCF 服务网关收到的消息应用。网关应用程序将解析传入的外部消息并调用适当的 WCF 服务方法。这传入的 XML 将被翻译进入 DataContract DTO 并提供作为适当 WCF 的参数方法。

  2. 内部应用公开了一个 WCF 服务方法“ProcessMessage”接受 Xml 字符串消息作为争论。内部应用程序将解析然后反序列化收到的xml 并相应地处理它。

首席开发人员认为选项二是更好的选项,因为它“更容易”序列化/反序列化 xml。我认为这个论点没有意义,因为 DataContracts 是由 WCF 序列化和反序列化的,并且通过使用 WCF 我们可以更好地输入数据。在选项 2 中,有人可以调用 WCF 服务并传入任何字符串。我相信选项 1 提供了一个更整洁的界面,并使应用程序更易于维护和使用。

这两个选项在某些时候仍需要对原始 xml 字符串进行解析和验证,因此执行此验证的推荐位置在哪里也可能是一个问题。

我想知道目前传递此类信息的想法是什么,以及人们对这两种选择的看法是什么。

最佳答案

如果您可以确保客户端始终向服务器发送数据契约的序列化表示,则适合选项 1。

但是,如果您需要序列化/反序列化逻辑中的一些灵 active 并且不与 DataContracts 紧密耦合,那么选项 2 看起来不错。当你想支持 xml 的替代形式时特别有用(比如 Atom 表示、自定义格式的原始 xml 等)

同样在 ProcessMessage() 方法内的选项 2 中,您可以选择决定是否 反序列化传入的 xml 有效负载(基于请求 header 或特定于您的应用程序的内容) .

在选项 1 中,WCF 运行时将始终反序列化负载。

关于c# - WCF:单个方法或接受 xml 的通用 ProcessMessage 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/539503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com