选择设计模式以在C#客户端应用程序中使用SOAP Web服务

时间:2013-02-13 02:48:53

标签: c# web-services design-patterns

我有一个C#客户端应用程序,我需要使用两个托管在外部webMethods环境中的SOAP Web服务,它们公开相同的功能(相同的名称,相同的参数和数据类型),即

Web服务1 - ManualLoadProduction

功能1 - LoadMontlyData(字符串月份)

功能2 - LoadYearlyData(string Year)

Web服务2 - ManualLoadConsumption

功能1 - LoadMontlyData(字符串月份)

功能2 - LoadYearlyData(string Year)

我在C#解决方案中添加了两个Web服务的Web引用。我可以单独调用这些函数,但是,我需要构建一个分层的解决方案。我应该如何设计/实施解决方案

1 个答案:

答案 0 :(得分:2)

您有一个可以在整个应用程序中使用的界面。这允许消费代码依赖于合同而不是特定的实现。

public interface IServiceWrapper{

    Data  LoadMontlyData(string Month);
    Data LoadYearlyData(string Year);
}

这是ManualLoadProduction包装器的一个实现。包装服务方法允许您围绕服务调用包装其他功能,例如额外验证或对象映射。

public class ManualLoadProductionWrapper: IServiceWrapper{

      public Data LoadMontlyData(string Month){
         //implementation calls service method
      }

       public Data LoadYearlyData(string Year){
         //implementation calls service method
      }
}

public class ManualLoadConsumption: IServiceWrapper{

      public Data LoadMontlyData(string Month){
        //implementation calls service method
      }

      public Data LoadYearlyData(string Year){
       //implementation calls service method
      }
}