1

我的系统如下所示:

在此处输入图像描述

我需要从 to 发送消息Management portalWCF Service 1控制 Web 应用程序(清除缓存等)。

这里的问题是消息必须通过WCF Service 2。我不能WCF Service 2像其他两个组件(Management portalWCF Service)那样频繁地更新,所以我必须制定某种通用方法,在WCF Service 2这种方法中,只需将消息重新发送到WCF Service 1而不关心它。

如何使WCF Service 2充当和之间的Management portal代理WCF Service 1

(注意:我不能直接调用服务 1,因为服务 2 负责加密、日志记录等)

4

1 回答 1

1

一些想法取决于您可能有什么其他要求

  1. 使用 WCF路由器服务,因为这只会传递您的消息。它的主要用途是基于内容的路由(在标头甚至消息内容上)。您可以在行为/扩展中实现任何自定义代码。路由器很好,因为您可以通过配置完成大部分工作。

  2. 更改 WCF Service 2 的合同以接受Message。这可以防止它序列化和反序列化为 .Net 对象,并且基本上接受任何请求并将其转发。

    
    [ServiceContract]
    public interface IService2
    {
    //pass message to Service1
    [OperationContract]
    void MyMethod(Message m);
    }
    

  3. 扩展 ClientMessageFormatter 和 DispatchMessageFormatter 以覆盖默认的序列化实现。仅当您想更改其被序列化/反序列化的方式或是否要进行序列化/反序列化时。这可能不是您要寻找的东西 - 但我想我还是会提到它,因为您的问题提到您想要一个挂钩到 WCF 中您可以更改此行为的位置。有关详细信息,请参阅此 MSDN 文章

于 2012-10-30T22:27:08.387 回答