【问题标题】:How should I handle queuing wcf messages?我应该如何处理排队的 wcf 消息?
【发布时间】:2010-12-22 12:39:32
【问题描述】:

我正在实现基于第 3 方 WSDL 的 WCF 服务。我不想同步处理消息,而是想将 xml 转储到数据库中,并由另一个部分进程处理。直接使用 WCF Message 类是解决这个问题的正确方法吗?还是应该让 WCF 反序列化消息并重新序列化,以便将其放入数据库中?

澄清一下,我不能使用 WCF MSMQ 绑定,因为第 3 方已经规定这将是一个肥皂网络服务。我只是想以某种方式将消息排队,以便处理可以异步进行。

【问题讨论】:

    标签: .net wcf


    【解决方案1】:

    你可以使用MSMQ 吗?这是经典的消息队列系统,WCF 支持它。

    您可以从该第三方服务接收消息,然后将其放入 MSMQ 以供以后处理。

    至于消息与反序列化对象:两者都可以,但我认为拥有一个真正的 .NET 对象更容易处理。

    更多信息:

    【讨论】:

    • 感谢您的回复。除非我误解,否则服务器也必须是 msmq 对吧?服务器端已经定义好了,它必须是一个肥皂网络服务。
    • 所以您要连接到您无法影响的第三方服务器?没问题-您从客户端应用程序中的远程服务器获取消息/对象,然后将其粘贴到 MSMQ 队列中以供以后处理,然后返回例如确认号码什么的给第三方。这行得通吗?
    • 是的,这行得通,我只是想了解是否必须让 wcf 反序列化消息,或者是否可以在此之前获取消息并将其放入队列中。
    • 罗宾:你可以两者兼得;我发现使用反序列化的 .NET 对象比直接处理低级“消息”类更容易。
    【解决方案2】:

    您是否有理由希望他们去数据库?调查 MSMQ 作为一种适用的替代方案可能在这里很聪明......这样它更接近于配置更改,而不是大量的自定义开发。

    如果您确实需要这样做,我建议为此创建一个自定义通道堆栈(客户端和服务器)。然后,是的,您只需序列化和反序列化消息。

    【讨论】:

    • 感谢您的回复。服务器是第 3 方,不会改变,所以这是不可能的。
    猜你喜欢
    • 2019-01-21
    • 2013-10-21
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 2023-03-07
    • 2022-08-20
    • 1970-01-01
    相关资源
    最近更新 更多