时,需要一种方法来关闭ChannelFactory请帮我解决这个问题。当客户端只知道接口
我有一个客户端使用WCF。我不希望这个客户知道它从服务获取数据。我想使用这样的模型,所以我更容易对代码进行单元测试,并稍后替换给定接口的实现。这个模型的问题是我无法在ChannelFactory上调用close。我不确定我需要打电话关闭,但它感觉正确。
所以我的问题是:
有谁知道关闭时,客户端只应该知道服务的接口的ChannelFactory的良好格局呢?或者是ChannelFactory通过某种魔法自我封闭?
下面是我希望一些示例代码,你会明白的问题:
static void Main(string[] args)
{
ITestService service = GetTestService();
Console.WriteLine(service.GetData(42));
}
private static ITestService GetTestService()
{
var cf = new ChannelFactory<ITestService>(new WSHttpBinding(), new EndpointAddress("http://localhost:8731/TestService/"));
return cf.CreateChannel();
}
感谢, GAT
这听起来像一个不错的解决方案。 所以我可以做的是有我自己的“ServiceFactory”,其中包含一个静态ChannelFactory。每次我需要一个频道时,我都会在这个成员上调用CreateChannel()。 当应用程序终止时,我在ChannelFactory上调用close。 这听起来像是正确的做法吗? –
GAT
2009-10-16 07:57:04
这是正确的方法。重点是每次需要频道时都不应创建新的ChannelFactory。在程序期间保持ChannelFactory存活没有任何问题。 – 2009-10-16 08:47:14