2011-12-13 74 views
0

我正在关注WCF上的this教程,并且一切正常。看起来像这样简单的代码,我应该可以调用从我的客户端到服务器的任何类型的方法。我只对管道感兴趣,根本没有网络。由ChannelFactory生成的WCF对象生命周期

我记得读书的地方,这些对象从服务器,如pipeProxy在这个返回代码:

IStringReverser pipeProxy = pipeFactory.CreateChannel(); 

将仅持续5分钟,然后被安置或已完成或类似的东西。这是真的?每次我想调用我的一个服务器的方法时,我是否需要拨打ChannelFactoryCreateChannel?另外,我可以保留我的ChannelFactory实例吗?或者它会在一段时间后自杀吗?

我无法找到关于这些细节的许多信息,我所发现的是大量高级教程,主要讨论关于像http和网络等不关心的东西。我只需要在同一台机器上的两个应用程序之间进行基本的通信。能够调用从应用程序A到应用程序B的方法是我所需要的。

那么,有什么我应该害怕的陷阱或者是链接教程中发布的代码是否足够?我可以只学习本教程中的代码,只需向示例类添加方法,一切都可以正常工作?或者还有什么我需要知道吗?

回答

1

你可以保留你的ChannelFactory,实际上你应该因为创建一个而花费很多。

另一方面,创建新频道不是一项昂贵的操作,每次需要创建(或重试)呼叫时都可以创建新频道。

我没有找到5分钟的参考,所以我想这个教程的意思是,如果你保持连接打开超过5分钟,那么它会超时。如果您想保持连接在两个应用程序之间始终打开,我建议您考虑DuplexChannels而不是

+0

在教程示例中,连接超时的含义是什么?如果我在创建5分钟后尝试在“pipeProxy”中调用方法,是否会得到异常? – Juan

+0

不,如果您拨打电话,您将收到一个例外情况,但时间超过5分钟。无论如何,为什么你会在创建频道5分钟后打电话?在拨打电话之前创建它,并在通话结束后处置它 –

+0

好的,我会尝试看看它是如何发生的。 – Juan