C# .NET架构设计问题
我刚开始从事一项特殊的开发工作 我们有一个.NET WCF应用程序MySql/EF DAL/ORM,它由线程作业调度器调用,线程作业调度器从一个客户端提取数据,将其存储在数据库中,并将最新数据传递给另一个客户端,反之亦然 所以把它看作是信息 ClientB通过我们的系统向ClientA发送订单,该系统将订单转换为ClientA的可读格式 然后,ClientA可以通过我们的系统向ClientB发送消息,比如“您的订单已发货”或“您的订单已延迟” 我需要将这些消息传递到ClientB,但我希望它是事务性的,并且我们能够完全控制失败的消息等 为了简单起见,我目前的想法是在数据库中有一个OrderMessages表,它接收消息,状态为“就绪”,然后可以由工厂处理,并使用针对客户端存储的配置转发给相关客户端 很抱歉这件事到处都是,但希望我已经解释了我想做什么:/C# .NET架构设计问题,c#,.net,architecture,message-passing,C#,.net,Architecture,Message Passing,我刚开始从事一项特殊的开发工作 我们有一个.NET WCF应用程序MySql/EF DAL/ORM,它由线程作业调度器调用,线程作业调度器从一个客户端提取数据,将其存储在数据库中,并将最新数据传递给另一个客户端,反之亦然 所以把它看作是信息 ClientB通过我们的系统向ClientA发送订单,该系统将订单转换为ClientA的可读格式 然后,ClientA可以通过我们的系统向ClientB发送消息,比如“您的订单已发货”或“您的订单已延迟” 我需要将这些消息传递到ClientB,但我希望它是事
尼尔考虑为发布者和订阅者利用消息平台。 具体来说,考虑使用轮辐模式。 此外,BizTalk专门研究分布式系统中的工作流
还考虑所涉及的努力:
- 交易(短期和长期)
- 错误处理
- 预期的消息格式
- 配器
如果让客户机直接从数据库中提取,则可以避免此问题。在这种情况下,客户可以使用自己的交易。我不明白您想要回答什么问题:-Stransacational意味着一组工作可以一起提交,也可以一起回滚(
ACID
)。您能否更详细地解释一下,OrderMessages
表如何让您做到这一点?我的想法是,任何“处理”消息的失败都会导致处理回滚,并将消息设置为错误状态,允许用户分析错误原因。。在这种情况下,transaction可能是不正确的词。感谢您的回复,我将查看您的链接。确实有两个独立的问题,我可能可以更好地解释它。消息是否被接收并不重要,但对于我们的系统来说,能够识别失败的消息是很重要的,这就是我所说的交易发生的地方。使失败的消息进入失败状态。但是每封邮件的发送者都不知道谁在接收邮件。发件人指定消息的类型,“某物”决定如何处理该消息,这是我试图弄清楚的“某物”。