在应用程序/演示文稿中托管有界上下文 - IIS + Windows服务?

时间:2015-01-17 19:48:30

标签: asp.net iis architecture domain-driven-design distributed

我有一个有限的上下文,处理可以由用户在网站上发表的主题的投票。我通过类库很好地分离了,但最终Votes有界上下文和MVC Web应用程序目前被编译为一组二进制文件。

我还有一个名为Library(一些简单的非DDD代码)的另一个有界上下文,一个索引文件系统上文本的Windows服务,并且还可以在满足某些条件时自动对主题进行投票(索引)逻辑处理正则表达式和状态机,代码与投票有界上下文无关/使用DDD。

javascript前端客户端调用REST API https://api.myapp.com/vote/book/1201012,后者又调用应用程序服务进行投票,而投票又调用ProcessUserVoteCommand

图书馆有界上下文目前也调用javascript前端调用的相同REST API,即https://api.myapp.com/vote/book/5235211,然后继续循环。

我正在考虑通过消息总线发送消息来投票选出投票上下文会听到的主题,但这引发了一些问题:

问题1 - 如果图书馆服务在活动总线上发布,这会是一个命令还是一个事件?

如果图书馆服务在事件总线上发布,此发布的消息是否会被称为事件TopicVotedOn或命令VoteOnTopic?我可以从公共汽车处理,所以这更像是一种形式,但是:

  1. 使用命令是没有意义的,因为我没有引用任何特定的端点并期待回复(我只是发布了一条消息)。
  2. 使用域事件是没有意义的,因为我没有生成实体的身份(库有界上下文中没有DDD实体的概念,只有生成事件的Windows服务)。
  3. 是否存在替代消息命名方案,使服务更有意义发送除命令或事件之外的其他内容?

    问题2 - 投票申请应该在哪里

    我可以通过在Web API项目中引用和编译Votes代码类库,使API流程中的Votes有条件上下文“实时”。

    但是对于IIS托管应用程序,我需要关注应用程序回收,尤其是当我等待来自外部事件总线的事件时(我相信IIS讨厌长时间运行的线程)以及应用程序可以回收吗?

    或者有界上下文更好地运行,因为物理上独立的Windows Server进程远离托管表示层(IIS) - 如果是这样,我将如何在表示层与后端Windows进程之间进行通信? WCF,MSMQ? .NET友好队列的任何其他建议吗?

0 个答案:

没有答案