为 Web API 项目实现 DDD/CQRS 的最佳方法是什么,因为我仍然不太了解从 Web API 调用其他服务时如何获得响应。我阅读了有关 Rx observable 的内容,但我想要一个更清晰的解释和简单的示例链接会很棒。我在 ASP.NET Web API 和 Autofac 中使用 Udi Dahan 样式的域事件进行注入。这是我尝试在 Controller 的 Web API 中使用域事件的方法。我所做的代码都在工作。
public class MyApiController : ApiController
{
// POST: api/myapi
public void Post([FromBody]string value)
{
DomainEvents.Raise(new HelloMessage(value));
}
}
这引发了事件处理程序:
public void HelloMessagesHandler : IDomainEventHandler<HelloMessage>
{
public void Handle(HelloMessage @event)
{
Log.Write($"Hello {@event.Value}");
{
{
当然,HelloMessage 事件名称应该使用通用语言,这样会更合适。这只是一个简单的示例,这很容易。
现在,我想调用另一个,比如说第三部分 Web API 服务,它需要相当长的时间来响应。以及如何检索响应并返回到 MyApiController。根据 Udi Dahan 的说法,直接在处理程序中使用这不是一个好主意。例如:
public void HelloMessagesHandler : IDomainEventHandler<HelloMessage>
{
private readonly IService _service;
public HelloMessagesHandler (IService service)
{
_service = service;
{
public void Handle(HelloMessage @event)
{
var response = _service.DoSomethingWithLongProcess(@event.Value);
// return response <-- to MyApiController
{
{
我的问题是:
- 我如何以简单和更好的方式做到这一点?
- 如何在域被提升后从第 3 方 Web API 检索响应到 MyApiController?
- 为 Web API 项目实施 DDD 的最佳方法是什么?
提前致谢。