来讨论一下项目中的静态与非静态

porschev 2010-05-18 11:02:14
如果做一个大型的项目。。。。在来业务逻辑层中。。。

用static修饰方法会有什么好处和坏处。。

如果采用非静态。。用实例化有什么好处和坏处。。。

哪种更适应大型网站的开发。。。?

请各位给出自己的意见。。。

最好有实际体会的。。。。百度。谷歌直接帖过来的就免了。。。

谢谢大家了!!!!
...全文
345 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjdkjs33 2011-05-22
  • 打赏
  • 举报
回复
那静态 类 与 非静态类呢?
Ricercar 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 cuike519 的回复:]

方法有静态的非静态的,可以从下面几个方面说明问题。

方法的存储:对于方法本身来说,都是一段装载到内存代码段(.NET通过CLR装载到代码段中)中的代码。

方法的调用:方法调用是通过找到方法的入口地址然后通过建立方法的局部变量,参数等压栈后进入方法体开始执行方法内容的。

方法的运行:方法是运行在线程上的,上面所说的栈就是建立在线程的空间上,每个线程每一时刻只执行一个方法的某一片代……
[/Quote]

说的太好了,很深刻,从面向对象的设计的角度看,定义对象行为的方法应该是非静态的,而这中方法通常是接口的实现
porschev 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 woshimaikou 的回复:]
SQLHelper 中慎用静态,否则当频繁刷新某页面的时候会爆出一些莫名的错误!
[/Quote]

亲身遇到过的就是好经验。。。值得分享。。。3Q
woshimaikou 2010-05-18
  • 打赏
  • 举报
回复
SQLHelper 中慎用静态,否则当频繁刷新某页面的时候会爆出一些莫名的错误!
porschev 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 ly302 的回复:]
建议楼主可以看看一些比开源的项目是怎么实现的

例如微软的PetShop4

里面非静态用的是非常多的

有时候不能绝对的去追求效率,可以做个比较测试,不同的实现看速度提高了多少,而这些提高的速度,在整个项目中到底有多大的重要性。
[/Quote]

一个可以长期扩展的大型项目,可能每一小步都会影响后期。。。

出来讨论一下就是为了看看实际做过的。。。网上关于这个的我看过不少。。。

心里还是有点答案。。。。2点结帖。。呵呵。。。
porschev 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 maomao90 的回复:]
说多了没用,还是用事实说话比较好,最好自己在项目中测试一下,到底用静态的效果好还是实例化好,
[/Quote]

这个小项目试不出来。。。大项目不可能有这个精力去试。。。。施主,你提的建议有点大。。。
linkinwhite 2010-05-18
  • 打赏
  • 举报
回复
.Net技术群108412141
共同学习.Net技术,分享.Net学习资料,分享.Net工作机会
qiuqingpo 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 zyl_leilei 的回复:]

我一般情况下还是不定义为静态类,只把数据访问层的方法定义为静态的,因为是常用的;业务逻辑层我觉得吧,不用定义为静态类,实例化也不太费事,要是出现了像内存不足或者连接池爆满的情况就不好了。。。
[/Quote]
哈哈.恰好和你相反.我是基本上都是静态类.感觉一般也不会出现这样的情况.
-小蕾- 2010-05-18
  • 打赏
  • 举报
回复
我一般情况下还是不定义为静态类,只把数据访问层的方法定义为静态的,因为是常用的;业务逻辑层我觉得吧,不用定义为静态类,实例化也不太费事,要是出现了像内存不足或者连接池爆满的情况就不好了。。。
皇城龙三 2010-05-18
  • 打赏
  • 举报
回复
建议楼主可以看看一些比开源的项目是怎么实现的

例如微软的PetShop4

里面非静态用的是非常多的

有时候不能绝对的去追求效率,可以做个比较测试,不同的实现看速度提高了多少,而这些提高的速度,在整个项目中到底有多大的重要性。
Ricercar 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 forrest23 的回复:]

一直都挺没搞清楚 什么时候该用静态 什么时候用实例
只是感觉 静态用起来很方便 实例总是要new 如果比较多的话 就有点麻烦
内存方面就没研究过了
[/Quote]

new出来的对象,使用完了,CLR也不是马上释放,一样占资源,而且对象初始化和销毁的操作更占资源
用不用静态取决于实际情况,这种情况往往需要根据测试的结果来判断
maomao90 2010-05-18
  • 打赏
  • 举报
回复
说多了没用,还是用事实说话比较好,最好自己在项目中测试一下,到底用静态的效果好还是实例化好,
mohugomohu 2010-05-18
  • 打赏
  • 举报
回复
内事问百度,外事问谷歌,C#问PetShop
Ricercar 2010-05-18
  • 打赏
  • 举报
回复
你了解了spring.net就知道了,业务对象基本上都是用单例模式
Forrest23 2010-05-18
  • 打赏
  • 举报
回复
一直都挺没搞清楚 什么时候该用静态 什么时候用实例
只是感觉 静态用起来很方便 实例总是要new 如果比较多的话 就有点麻烦
内存方面就没研究过了
porschev 2010-05-18
  • 打赏
  • 举报
回复
各位。。下班吃饭。。。。下午再来问。。。谢谢大家了。。。。
porschev 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 gt7466 的回复:]
如果做一个大型的项目。。。。在来业务逻辑层中。。。

不明白你说[业务逻辑层中]什么意思。

静态当然有一些性能方面的优势,但也不灵活.一般抽像的很好的逻辑你可以去静态,但这点很难--大型项目,很多情况不可控,所以这些地方比较倾向实例和能覆盖的方法族.

等待sp1234
[/Quote]

比如说业务逻辑层的方法。。。。是加static还是不加。。。。就是这个意思。。
GT7466 2010-05-18
  • 打赏
  • 举报
回复
如果做一个大型的项目。。。。在来业务逻辑层中。。。

不明白你说[业务逻辑层中]什么意思。

静态当然有一些性能方面的优势,但也不灵活.一般抽像的很好的逻辑你可以去静态,但这点很难--大型项目,很多情况不可控,所以这些地方比较倾向实例和能覆盖的方法族.

等待sp1234
testtestett 2010-05-18
  • 打赏
  • 举报
回复
小心静态类啊,上次一不小心数据库用了静态类,结构连接池爆满,汗!!
porschev 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ly302 的回复:]
当然如果做大型的项目,就得根据实际情况了

因为静态的会一直占用内存,如果都用静态的,肯定吃不消

所以经常调用的,可以用静态的

不经常调用的,可以用非静态的
[/Quote]

恩。。。项目就是大我才慎重些。。。要不然管球类。。。怎么方便怎么写。。
加载更多回复(17)

62,071

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧