我有一个ASP.net页面创建一个WCF服务的服务引用,并在我的页面的多个地方拨打电话。我实例在Page_Load中的服务引用,并有一个实例变量来存储它:ASP.net页面中的WCF服务参考 - 何时处理?
private FooClient _serviceClient;
protected void Page_Load(object sender, EventArgs e)
{
_serviceClient = nwe FooClient();
_serviceClient.GetAllFoos();
}
protected void btnSave_Click(object sender, EventArgs e)
{
_serviceClient.SaveFoo();
}
我才发现,原来我需要配置服务引用的时候,我用它做,否则连接将被保持活并且如果达到最大连接数将阻止传入连接。处理这些参考文献的最佳地点在哪里?我正在考虑在OnUnLoad事件上做这件事。
有没有更好的方法来做到这一点?
为什么继承'IDisposable'性能很重? – 2010-08-31 17:13:38
所以你建议我在每种需要访问数据的方法中打开一个频道?这在表现上似乎相当重要。 – Dismissile 2010-08-31 17:17:18
@Dismissile - 为什么打开连接而不是在需要时打开它?如果数据库没有被使用,你会保持与数据库的连接吗?当然,目标是在可能的情况下保持连接免费使用,因此只在必要时才打开.WCF服务可以在Dispose()上抛出异常,因此垃圾收集器将不得不清理连接。如果代码看起来很难看,那么确保它可以被重新考虑以保持代码DRY – stack72 2010-08-31 20:33:45