在实现真实服务之前实现WCF-Mock和端点

时间:2015-01-15 09:04:46

标签: c# wcf .net-4.5

背景

我必须扩展已经将WCF服务与另一个WCF服务一起使用的应用程序。其中一个已存在的服务应该调用新的WCF服务。现在的要求是应该模拟未来的服务,并且在实现真实服务之前,应该使用这个模拟服务测试这两个服务之间的连接(而不是单元测试)。模拟服务应该将接收到的参数写入文件。

目标:

这意味着现有WCF服务中的端点已实现并准备就绪(配置中的某些更改除外)。

我的方法:

实现自己的模拟服务(Blog post)或使用模拟已定义界面的模拟框架(WCFMock)。

问题:

模拟服务的调用看起来不同,我必须在实际服务实现后更改端点的代码。

我的问题:

是否可以模拟或伪造WCF服务(没有真正的Web调用)并实现端点,该端点在更改配置后也可以使用真正的WCF服务?

1 个答案:

答案 0 :(得分:1)

是。您将需要创建一个类作为WCF服务客户端调用的中介,然后根据某个值(可能是配置值)加载实际客户端或模拟服务。这样,处理代码中的依赖关系,这样您只需更改标志即可切换实现。

这项工作的最大限制是服务接口必须可供客户端实施。

基本思路如下:

public class ServiceFacade : IMyWCFService
{
    private IMyWCFService _clientImplementation;

    public ServiceFacade()
    {
        _clientImplementation = (Settings.Default.UseMockService == true) ? new MockWCFServiceClient() : new MyWcfServiceClient();

    }

    #region IMyWCFService implementation

    public int MyServiceCall()
    {
       return _clientImplementation.MyServiceCall();
    }

    #endregion

}