2015-01-15 36 views
0

背景前实现一个WCF的模拟和端点:实现真正的服务

我不得不延长其已经使用WCF服务与另一个WCF服务的应用程序。其中一个已经存在的服务应该调用新的WCF服务。现在的要求是,未来的服务应该被嘲笑,这两个服务之间的连接应该在实现真正的服务之前通过这个模拟服务来测试(而不是单元测试)。模拟服务应该将收到的参数写入文件。

目标:

这意味着在现有的WCF服务端点实现和准备(除了在配置一些变化)。

我的方法:

实现自己的模拟服务(Blog post),或使用一个模拟的框架(WCFMock),它模拟了一个已定义的接口。

问题:

模拟服务的调用看起来不同,我有真正的服务实施后更改端点的代码。

我的问题:

是否有可能嘲笑或假的WCF服务(没有真正的网络电话)和执行端点也将与真正的WCF服务更改配置后工作?

回答

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 

} 
+0

感谢您的建议。这是一个很好的解决方案 –

+0

没问题。这也是PRISM的依赖注入通过配置进入它自己的地方,因为服务类的创建和注入是由PRISM通过app.config文件自动处理的 - 如果您使用的是DI,请记住一些事项。 – toadflakz