Architecture 用于客户端/服务器通信的NServicebus?

Architecture 用于客户端/服务器通信的NServicebus?,architecture,nservicebus,esb,servicebus,Architecture,Nservicebus,Esb,Servicebus,我开始了一个新项目,并爱上了服务总线的概念,它可以在后端连接您的服务。因为到目前为止我主要从事Web开发,所以我只是通过ESB将Web层连接到服务 现在我开始开发一个需要服务器/客户机连接的桌面应用程序,ESB似乎是个好主意,因为它默认强制使用异步模型,并且在分配负载时允许一定的灵活性。在许多情况下,酒吧/酒吧也很有意义 你在互联网上读了很多关于ESB的文章,Ayende还开发了他的Alexandria应用程序,该应用程序在请求/应答场景中使用了ESB。还有人说通过ESB执行请求/响应是件坏事

我开始了一个新项目,并爱上了服务总线的概念,它可以在后端连接您的服务。因为到目前为止我主要从事Web开发,所以我只是通过ESB将Web层连接到服务

现在我开始开发一个需要服务器/客户机连接的桌面应用程序,ESB似乎是个好主意,因为它默认强制使用异步模型,并且在分配负载时允许一定的灵活性。在许多情况下,酒吧/酒吧也很有意义

你在互联网上读了很多关于ESB的文章,Ayende还开发了他的Alexandria应用程序,该应用程序在请求/应答场景中使用了ESB。还有人说通过ESB执行请求/响应是件坏事


对于支持服务器/客户端通信的ESB,我可能会看到哪些大问题?

这对我来说是一个非常有趣的问题,因为我从相反的角度提出了相同的问题——从WinForms到Web(虽然在Yahoo group上,但不是这样)

WinForms上的异步请求/响应非常适合我。用户界面只是触发查询命令,然后忘记了它。如果一个响应(带有查询结果)碰巧出现,并且想要它的视图仍然可用,那么数据将填充到视图中

我正试图形成一种观点,解释为什么使用ESB进行查询是“不好的”,我能想到的最好办法是异步模型不容易适应为web应用程序构建页面的要求。与其他更直接的查询方法相比,还有一点性能损失


我不喜欢“仅仅因为”这个答案,所以我饶有兴趣地期待着对你问题的其他回答。

看看Udi Dahan在(命令/查询隔离)上的帖子。这将为您指出需要做出的决策点。客户端应用程序的主要挑战是在后台创建消息泵,并将数据编组回UI线程。对于web来说,将查询分离到一个更非规范化的存储区对我们来说效果很好,但是这种方法会使您对如何构建UI的想法有所不同。它确实极大地简化了模型,因为您不需要47次映射对象来获取数据,我一直在努力证明这一点。显然,缺点是移动部件较多,但我们认为这是值得的。

谢谢您的评论。也许可以给您指出正确的方向:我没有在Web上使用请求/响应,而是使用ESB将命令传播到服务,并从那里发布/订阅以更新Web客户端直接查询的读取模型。我还是不确定这是不是最好的办法。。但效果还行,谢谢你提供的信息。正是出于这个原因,我在一个网页中使用了异步查询,但只是通过阻止一个事件来实现的。。我们现在根本不做aysnc查询。我维护一个视图缓存,该缓存通过使用EventHandler进行更新。如果发布事件,视图缓存将更新SQL表以反映新数据(完全异步),而Web服务器将直接查询该SQL表以获取数据。尽管如此,我们仍然使用ESB发送命令。感谢您提供的指针。在周末翻阅了Udi的博客并收听了分布式系统播客后,我得出了同样的结论。