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

Implement a WCF-Mock and the endpoint before implementing the real service

背景:

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

目标:

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

我的做法:

实施自己的模拟服务 (Blog post) or use a mock framework (WCFMock),模拟已定义的接口。

问题:

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

我的问题:

是否可以模拟或伪造 WCF 服务(无需真正的 Web 调用)并实现在更改配置后也将与真正的 WCF 服务一起工作的端点?

是的。您将需要创建一个 class 作为 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

}