.NET体系结构设计问题

本文关键字:问题 结构设计 NET | 更新日期: 2023-09-27 18:29:58

我刚刚开始从事一项特定的开发工作。

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

所以把它看作是信息,

ClientB通过我们的系统向ClientA发送订单,该系统将订单转换为ClientA可读的格式。

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

我需要接收这些消息并将其转发到ClientB上,但我希望它是事务性的,并且我们可以完全控制失败的消息等。

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

很抱歉到处都是,但希望我已经解释了我想做什么:/

Neil

.NET体系结构设计问题

您提出的体系结构是一种经典的队列表模式。Remus Rusanu是用SQL Server构建这样一个东西的规范资源。这些想法也适用于其他数据库。

这个体系结构没有错。请注意,如果在向客户端发送消息时发生错误,则无法知道消息是否已收到。这个问题没有百分之百的解决办法。这是两个将军的问题。

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

考虑为发布者和订阅者利用消息平台。具体来说,考虑使用轮辐模式。

此外,BizTalk专门研究跨分布式系统的工作流。

还要考虑所涉及的努力:

  • 交易(短期和长期)
  • 错误处理
  • 预期的消息格式
  • 业务流程