背景
我必须扩展已经将WCF服务与另一个WCF服务一起使用的应用程序。其中一个已存在的服务应该调用新的WCF服务。现在的要求是应该模拟未来的服务,并且在实现真实服务之前,应该使用这个模拟服务测试这两个服务之间的连接(而不是单元测试)。模拟服务应该将接收到的参数写入文件。
目标:
这意味着现有WCF服务中的端点已实现并准备就绪(配置中的某些更改除外)。
我的方法:
实现自己的模拟服务(Blog post)或使用模拟已定义界面的模拟框架(WCFMock)。
问题:
模拟服务的调用看起来不同,我必须在实际服务实现后更改端点的代码。
我的问题:
是否可以模拟或伪造WCF服务(没有真正的Web调用)并实现端点,该端点在更改配置后也可以使用真正的WCF服务?
答案 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
}