1

我正在寻找一种可能性来通过中间人监视 SOA 环境中的所有消息,中间人将被设计为对消息的结构和序列实施不同的规则集(例如,假设它将检查并确保服务 A必须在 B) 之前吃完。

显然,想到的第一个想法是 WS-Adressing 在这里可能有什么帮助,但我不确定它是否有帮助,因为我真的没有看到任何机制来确保消息将通过给定的中介传递(就像在 WS-Routing 中一样,这是 Microsoft 过时的专有协议)。

或者甚至可能有一种不同的方法,即监视器不会成为路由的一部分,而是会在请求/响应时收到通知,这可能会再次使积极执行规则变得更加困难。

我期待着任何建议。

4

2 回答 2

1

对于我的所有(技术)服务,我使用消息传递和命令处理器模式,我在此处描述,但实际上并未调用模式名称。我发送一条消息,框架找到实现与我的消息对应的接口的相应类。我可以创建多个可以处理我的消息的类,或者创建一个处理大量消息的类。在本文中,这些是实现 IHandleMessages 接口的类。

无论哪种方式,只要我可以创建多个实现此接口的类,并且它们都被调用,我就可以轻松地添加审计,而无需将此逻辑添加到我的业务逻辑或任何东西中。只需为每条消息添加额外的实现,或增强框架,使其也接受 IHandleMessages 实现。该类可以审核每条消息并集中存储所有消息。

之后,您可以找到有关消息和流程的更多信息。例如,如果您在 WCF/MSMQ 消息的标头信息中输入它的来源,也许还有该单个消息的一些唯一标识符,您可以跟踪各种组件的流。

NServiceBus也有这种审计功能,团队正在为此开发额外的工具,称为ServiceInsight

希望这可以帮助。

于 2013-06-24T21:00:53.753 回答
1

您可以通过拦截每个服务中的所有调用作为基本服务主机的一部分来实现“服务防火墙” 。或者,您可以使用 3rd 方解决方案并将您的所有服务调用路由给他们(他们将进行拦截,然后将调用转发到您的服务)。

您可以使用 ESB 进行路由(和拦截),也可以使用 IBM 的 datapower、Layer7 的 XML 防火墙等专用解决方案。

于 2013-06-17T04:24:58.797 回答