【问题标题】:How to make WCF service not deserialize message and just send it to the next service?如何使 WCF 服务不反序列化消息并将其发送到下一个服务?
【发布时间】:2012-10-30 12:19:38
【问题描述】:

我的系统如下所示:

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

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

如何让WCF Service 2 充当Management portalWCF Service 1 之间的代理?

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

【问题讨论】:

    标签: asp.net wcf serialization azure-web-roles


    【解决方案1】:

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

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

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

      
      [ServiceContract]
      public interface IService2
      {
      //pass message to Service1
      [OperationContract]
      void MyMethod(Message m);
      }
      
    3. 扩展 ClientMessageFormatter 和 DispatchMessageFormatter 以覆盖默认的序列化实现。仅当您想要更改其被序列化/反序列化的方式 或是否要被序列化/反序列化时。这可能不是您想要的 - 但我想我还是会提到它,因为您的问题提到您想要一个挂钩到 WCF 中您可以更改此行为的位置。详情请见this MSDN article

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多