.NET体系结构设计问题

时间:2014-11-11 13:08:17

标签: c# .net architecture message-passing

我刚刚开始研究特定的开发工作。

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

所以把它想象成消息,

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

然后,ClientA可以通过我们的系统向ClientB发送消息,说出“您的订单已发货”或“您的订单已迟到”等内容。

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

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

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

尼尔

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

此外,BizTalk专注于跨分布式系统的工作流程。

还要考虑所涉及的工作:

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