实践ADO.Net Team相关学习

开发 后端
对于ADO.Net Team的学习,首先碰到的就是环境的配置。以前学的Visual Studio2003,但并没有怎么用。所以有一个星期的时间基本是在用实践着.net 1.0。

ADO.Net Team如何设置呢?要修改Connection Pool 唯一的方式就是通过设定ADO.Net Team来完成。此属性代表是否需要使用到连接池,默认为True,如果指定为False,不使用连接池。

Pooling (true)When true, the connection is drawn from the appropriate pool, or if necessary, created and added to the appropriate pool.此属性代表是否需要使用到连接池,默认为True,如果指定为False,ADO.Net Team不使用连接池。

这个属性表示一个Connection的有效时间,如果一个Connection返回到ConnectionPool的时候,超过了ADO.Net Team时间,这个连接不会再次放到Connection。当下一个请求发来时,ADO.Net会新建一个Connection。

这个属性主要使用于群集的SQL数据库中,用于负载平衡。可能大家经常看到网络上有很多文档以及MSDN站点都推荐大家使用using(sqlconnection cn=new sqlconnection()){}这样的方式来创建Connection,因为当超过{}后,.net framwork会自动执行Connection.dispose()方法,所以能够确保Connetion被及时的关闭。

那么及时的调用.dispose()真的这么重要么,如果一个对象超出了生存空间,在.ADO.Net Team中不是会自动被GC(垃圾回收器)自动清理的么?

这个问题其实是由于GC导致的,.net中使用的GC,他对于工作并不像我们这样勤奋。ADO.Net Team只有当外界环境极其恶劣的时候(没有足够的内容分配的时候)他才会动手打扫卫生(清理不使用的对象)。所以对于Connection 即使超出了变量的生命周期,它可能还没有被GC干掉。#t#

依旧未将Connection返回给Connection Pool。所以这就导致了下一个连接可能会有Connection Pool中没有Available的Connection而从新打开一个新的连接,无端的浪费了多余的性能。所以ADO.Net Team反复强调要及时的关闭当前的连接。一个最好的方法就是使用using{}block 系统会在退出{}的时候自动调用connection.dispose方法,而dispose会自动去执行close方法,释放当前的connection。

其实Connection.dispose方法就是call了一次close方法,所以两者是等同的。也就是说,如果您及时的执行了connection.close()方法,就没有必要必须再把connection包裹在一个using(){}中。如果使用using 是必需的,那么如果程序结构导致我无法使用using(){}来包裹我的Connection,比如说我的ADO.Net TeamConnection是同一个help类返回的,那我又怎么办呢?

这是一个经常遇到的问题。在这样的环境中,我们无法将整个connection包裹在一个connection中。解决这样的方法有两个,一个就是修改您的代码结构。传入一个ConnectionString来返回Connection。另一个方法就是反复检查您的代码,是否及时关闭了ADO.Net Team。因为Close的效果与dispose是相同的。但是如果不使用using(){}这个及时关闭Connection的任务就等于是交到了我们自己的手上,而不再由.net framework为我们把关了。

责任编辑:chenqingxiang 来源: 机械工业出版社
相关推荐

2009-12-29 16:33:35

ADO.Net Tea

2009-12-22 09:50:23

ADO.NET学习

2009-12-21 16:45:41

ADO.NET程序

2009-12-22 15:20:25

ADO.NET功能

2009-07-06 10:43:51

ADO.NET

2009-12-23 11:25:30

ADO.NET处理

2009-12-21 17:35:24

ADO.NET对象

2009-12-21 15:58:19

ADO.NET集合

2009-12-25 10:25:59

2009-12-22 13:34:48

ADO.Net Tea

2009-12-24 09:14:52

ADO.Net Tea

2010-05-24 09:49:47

ADO.NET

2009-12-28 15:46:22

ADO.NET操作

2009-12-29 14:24:40

使用ADO.NET

2009-12-21 13:59:03

ADO.NET特性

2009-12-22 10:27:01

ADO.NET数据

2009-12-18 16:44:57

ADO.NET统计

2009-12-22 10:15:17

ADO.NET规则

2009-12-31 14:28:09

ADO.NET参数

2009-12-25 16:26:03

ADO.NET控制
点赞
收藏

51CTO技术栈公众号