积极答复者
asp.net中数据库访问类是否都应该用static?

问题
-
这是我今天写程序时突然想到的,不知道对不对恳请勘正:
我包括我看到的一些例子,都是把访问数据库的相关操作封装到一个类中,然后再每个aspx页面实例化一个数据库操作类的实例进行操作,我今天做的例子里他把数据库中的方法都写成静态方法如:
public static bool getDataReader()
{ ..........}
这样就不必在每个页面实例化一个类。我突然想到的是:在每个页面实例化一个实例,在有很多人访问网站时,它是否要实例化好多实例呀?这样应该对性能有所影响吧?或者说会频繁地启动垃圾回收!
或者可以这样问:什么时情况下适合用static?
我的一点理解:是不是 假如一个类 Class1中有100个方法,我不用静态方法static时,实例化(Class1 c = new Class1)需要分配10K内存,而把类Class1中的方法都改成static 实例化类时也许就用1K内存了?因为static 方法不属于某个实例。
初学者
答案
-
在抉择使用实例化方法或静态方法时,应该根据是否该方法和实例化对象具有逻辑上的相关性,如果是就应该使用实例化对象反之使用静态方法。
- 已标记为答案 KeFang Chen 2010年4月13日 2:18
- 已标记为答案 KeFang Chen 2010年4月13日 2:18
-
你好,用不用Static对数据库性能影响不是很大,更大的区别是程序设计上,对Static概念理解不透彻,有些时候出问题了,比较难查出来,隐藏的比较深。
邹俊才- 已标记为答案 KeFang Chen 2010年4月13日 2:18
-
这是我今天写程序时突然想到的,不知道对不对恳请勘正:
我包括我看到的一些例子,都是把访问数据库的相关操作封装到一个类中,然后再每个aspx页面实例化一个数据库操作类的实例进行操作,我今天做的例子里他把数据库中的方法都写成静态方法如:
public static bool getDataReader()
{ ..........}
这样就不必在每个页面实例化一个类。我突然想到的是:在每个页面实例化一个实例,在有很多人访问网站时,它是否要实例化好多实例呀?这样应该对性能有所影响吧?或者说会频繁地启动垃圾回收!
或者可以这样问:什么时情况下适合用static?
我的一点理解:是不是 假如一个类 Class1中有100个方法,我不用静态方法static时,实例化(Class1 c = new Class1)需要分配10K内存,而把类Class1中的方法都改成static 实例化类时也许就用1K内存了?因为static 方法不属于某个实例。
初学者
记住在asp.net中,static类型的变量时全局变量,所有的用户都会共享这个变量的。不能滥用哈。- 已标记为答案 KeFang Chen 2010年4月13日 2:18
-
static本身也是一个类,只不过全局就只有一个,也就意味着并发能力为0。不过往往在static里面再处理并发和互斥。
一般用static来做类厂,获得一个类对象,然后操作。这样的好处是即利用了static的便利性,又可以有并发,还可以在这个类厂中做缓存等。
感觉用static唯一的好处就是可以少写n多连接参数,其他的区别不大。
霸王- 已标记为答案 KeFang Chen 2010年4月13日 2:18
- 已标记为答案 KeFang Chen 2010年4月13日 2:19
全部回复
-
在抉择使用实例化方法或静态方法时,应该根据是否该方法和实例化对象具有逻辑上的相关性,如果是就应该使用实例化对象反之使用静态方法。
- 已标记为答案 KeFang Chen 2010年4月13日 2:18
- 已标记为答案 KeFang Chen 2010年4月13日 2:18
-
你好,用不用Static对数据库性能影响不是很大,更大的区别是程序设计上,对Static概念理解不透彻,有些时候出问题了,比较难查出来,隐藏的比较深。
邹俊才- 已标记为答案 KeFang Chen 2010年4月13日 2:18
-
这是我今天写程序时突然想到的,不知道对不对恳请勘正:
我包括我看到的一些例子,都是把访问数据库的相关操作封装到一个类中,然后再每个aspx页面实例化一个数据库操作类的实例进行操作,我今天做的例子里他把数据库中的方法都写成静态方法如:
public static bool getDataReader()
{ ..........}
这样就不必在每个页面实例化一个类。我突然想到的是:在每个页面实例化一个实例,在有很多人访问网站时,它是否要实例化好多实例呀?这样应该对性能有所影响吧?或者说会频繁地启动垃圾回收!
或者可以这样问:什么时情况下适合用static?
我的一点理解:是不是 假如一个类 Class1中有100个方法,我不用静态方法static时,实例化(Class1 c = new Class1)需要分配10K内存,而把类Class1中的方法都改成static 实例化类时也许就用1K内存了?因为static 方法不属于某个实例。
初学者
记住在asp.net中,static类型的变量时全局变量,所有的用户都会共享这个变量的。不能滥用哈。- 已标记为答案 KeFang Chen 2010年4月13日 2:18
-
static本身也是一个类,只不过全局就只有一个,也就意味着并发能力为0。不过往往在static里面再处理并发和互斥。
一般用static来做类厂,获得一个类对象,然后操作。这样的好处是即利用了static的便利性,又可以有并发,还可以在这个类厂中做缓存等。
感觉用static唯一的好处就是可以少写n多连接参数,其他的区别不大。
霸王- 已标记为答案 KeFang Chen 2010年4月13日 2:18
- 已标记为答案 KeFang Chen 2010年4月13日 2:19