[英]C# web service do something after return response
据我了解,您想将响应返回给客户端应用,但仍要继续进行一些处理。 这里有几种可能性:
对于域事件,这是一个很好的案例。 我不知道第一个请求是什么-也许下订单了? 下订单后,您将引发一个事件,指示已下订单。 该事件可能包含有关订单的某些信息,也可以包含可用来检索它的参考(id)。 然后其他听众将做出相应的响应。
好处之一是,它可以使应用程序的不同部分分离。 例如,提交订单的类不需要知道会有发票。 它只是引发一个事件,指示已下订单,然后继续进行。
如果您要在下订单时有多种行为,那将变得更加重要。 也许您还想发送一封电子邮件,确认您已收到订单。 现在,您可以将其他行为添加为事件侦听器,而无需修改下订单的代码。
此外,您的应用程序可能会增长,因此可能还有另一项用于下订单的服务。 (尽管我不知道具体事件是什么,但我正在执行“下订单”。)您不希望应用程序中的多个点遵循所有后排序步骤。 如果这些步骤改变了,那么您将不得不在所有这些地方修改代码。 相反,您只是引发事件。
这是一篇很受欢迎的文章 ,很好地描述了这个概念。 事件总线有多种实现。 这是一个 。
在伪代码中,您现在可以有几个事件处理程序,每个事件处理程序都与您的订购代码完全分离。
提交订单后立即引发事件本身。
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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.