c# - .NET 架构设计问题

标签 c# .net architecture message-passing

我刚刚开始从事某项开发工作。

我们有一个 .NET WCF 应用程序 MySql/EF DAL/ORM,它由线程作业调度程序调用,它从一个客户端提取数据,将其存储在我们的数据库中,并将最新数据传递给另一个客户端,反之亦然.

因此将其视为消息,

客户 B 通过我们的系统向客户 A 发送订单,系统将订单转换为客户 A 可读的格式。

然后,ClientA 可以通过我们的系统向 ClientB 发送消息,例如“您的订单已发货”或“您的订单已延迟”。

我需要获取这些消息并将它们中继到 ClientB,但我希望它是事务性的,以便我们能够完全控制失败的消息等。

为了简单起见,我目前的想法是在我们的数据库中有一个 OrderMessages 表来接收消息,状态为“就绪”,然后可以由工厂处理并使用存储的配置转发给相关客户端客户。

很抱歉这到处都是,但希望我已经解释了我想做的事情:/

尼尔

最佳答案

您提议的架构是一个经典的队列表模式。 Remus Rusanu is the canonical resource for building such a thing with SQL Server.这些想法也适用于其他数据库。

这种架构没有任何问题。请注意,如果在向客户端发送消息时出现错误,您无法知道消息是否已收到。这个问题没有 100% 的解决方案。这就是二将问题。

如果让客户端直接从数据库中拉取,就可以避免这个问题。在这种情况下,客户可以使用自己的交易。

关于c# - .NET 架构设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26865687/

相关文章:

wpf - 使用 PRISM 构建数据库感知应用程序

wcf - 哦问题: applying same logic to 2 similar objects

c# - AsyncLocal 的语义与逻辑调用上下文有何不同?

c# - 如何在 C# 中获取日期范围内的所有周末

.net - ClickOnce部署 "System.IO.IOException"

c# - IronPython DLR;将参数传递给编译代码?

c# - 包装托管代码以供非托管使用

c# - 当您还需要 "default"具体依赖项时,哪种依赖项注入(inject)更好的模式?

c# - 在映射中保留 null - 不要为类型创建默认值

.net - 如何在Vista下使用WIA 1进行开发?