我有一组位于队列中的服务(非 WCF)。当消息到达时,典型的服务会进行一些计算并将零个或多个结果消息输出到其输出队列。除了其主要功能外,每个服务都有一些管理逻辑,如身份验证/审计/日志记录/状态跟踪,确切的步骤和顺序在服务之间有所不同。这就是管道概念进入画面的地方。
我对我们最终得到的设计不满意,并寻找简化它的方法。我应该模仿 CCR 端口吗?ASP.NET 管道?奥普?还要别的吗?
我目前的设计如下:我有一个IMessageHandler<TMessage>
接口和大约 15 个实现,它们使用 IoC 以 6 种独特的方式链接在一起。该接口定义了单个方法Handle(TMessage msg),因此每个实现都可以在将消息传递给菊花链中的下一个处理程序之前和之后执行一些逻辑。
这样做的问题是:很难记住每个实现究竟做了什么,以及为什么它们以这种特定的方式链接到这个特定的服务。另一方面,将每个方面放在自己的类中可以更好地分离关注点,从而更容易进行单元测试。
想法?我可以查看任何好的管道模式吗?我可以用作参考的任何不错的管道实现?还是我应该JFHCI?