.NET体系结构设计问题
本文关键字:问题 结构设计 NET | 更新日期: 2023-09-27 18:29:58
我刚刚开始从事一项特定的开发工作。
我们有一个.NET WCF应用程序MySql/EF DAL/ORM,它由线程作业调度程序调用,该调度程序从一个客户端提取数据,将其存储在数据库中,并将最新数据传递给另一个客户端,反之亦然。
所以把它看作是信息,
ClientB通过我们的系统向ClientA发送订单,该系统将订单转换为ClientA可读的格式。
然后,ClientA可以通过我们的系统向ClientB发送消息,比如"您的订单已发货"或"您的订购已延迟"。
我需要接收这些消息并将其转发到ClientB上,但我希望它是事务性的,并且我们可以完全控制失败的消息等。
为了简单起见,我目前的想法是在我们的DB中有一个OrderMessages表,它接收消息,状态为"就绪",然后可以由工厂处理,并使用针对客户端存储的配置转发到相关客户端。
很抱歉到处都是,但希望我已经解释了我想做什么:/
Neil
您提出的体系结构是一种经典的队列表模式。Remus Rusanu是用SQL Server构建这样一个东西的规范资源。这些想法也适用于其他数据库。
这个体系结构没有错。请注意,如果在向客户端发送消息时发生错误,则无法知道消息是否已收到。这个问题没有百分之百的解决办法。这是两个将军的问题。
如果你让客户端直接从数据库中提取,你可以避免这个问题。在这种情况下,客户可以使用自己的交易。
考虑为发布者和订阅者利用消息平台。具体来说,考虑使用轮辐模式。
此外,BizTalk专门研究跨分布式系统的工作流。
还要考虑所涉及的努力:
- 交易(短期和长期)
- 错误处理
- 预期的消息格式
- 业务流程