我有一个名为 S
的网络服务我的客户有一个名为 C
的网络服务如何实施?
答案 0 :(得分:1)
据我了解,您希望返回对客户端应用的响应,但仍会继续进行一些处理。 这里有一些可能性:
答案 1 :(得分:0)
这是域事件的好例子。我不知道第一个请求是什么 - 也许下订单? 下订单时,您将发出一个表示已下订单的事件。该事件可以包含有关订单的一些信息或可用于检索它的引用(id)。然后其他听众会做出相应的回应。
一个好处是它可以使应用程序的不同部分分离。例如,提交订单的类不需要知道它将成为发票。它只是引发一个事件,表明已下订单然后继续下去。
如果您希望在下订单时拥有多种行为,那就变得更加重要。也许您还想发送一封确认收到订单的电子邮件。现在,您可以将该附加行为添加为事件侦听器,而无需修改放置订单的代码。
此外,您的应用程序可能会增长,以便可能还有其他服务来下订单。 (我和&#34一起运行;下订单"虽然我不知道具体事件是什么。)你不希望你的应用程序中的多个点跟随所有帖子 - 订购步骤。如果这些步骤发生变化,那么您必须修改所有这些地方的代码。相反,你只是举起活动。
Here's a popular article很好地描述了这个概念。有许多事件总线的实现。 Here's one
在伪代码中,您现在可以拥有一些事件处理程序,每个事件处理程序都与您的订购代码完全分离。
提交订单后立即引发事件本身。
var order = SubmitOrder(info);
eventBus.Raise(new OrderSubmitEvent(order));
然后你有一些注册的事件处理程序来响应那个事件。
public class SendInvoiceOrderEventHandler : IEventHandler<OrderSubmitEVent>
{
public void HandleEvent(OrderSubmitEvent e)
{
//e contains details about the order. Send an invoice request
}
}
public class SendConfirmationOrderEventHandler : IEventHandler<OrderSubmitEVent>
{
public void HandleEvent(OrderSubmitEvent e)
{
//send an email confirmation
}
}