ASP.NET开发要抛弃ASP旧习和破烂

上一篇 / 下一篇  2008-09-10 10:05:34 / 个人分类:.NET

技术应该有新技术的做法,进入ASP.NET的世界,就应该把以往的习惯改正,全新的进入新的世界,把ASP的破烂扔掉。用ASP.NET的方法去开发,而不是在ASP.NET中用ASP的写法去做。   使用ASP没有错,只要适用够用就行了。但是在用ASP.NET开发网站或系统的时候,应该抛弃开发ASP时形成的习惯,用ASP.NET的方法去开发,而不是在ASP.NET中用ASP的写法去做。
qJJ"a4G.R b/h0  在技术更新的进程中,仍然有一些人死抱着已经过了气的东西不放,也有一些人虽然进入到新的世界,但仍摆脱不了陈旧的习惯,我没有用”陋习”这个词,因为我对这个词也非常反感。51Testing软件测试网7Ak+na,PlVM2SC |
  新技术应该有新技术的做法,进入ASP.NET的世界,就应该把以往的习惯改正,全新的进入新的世界,把ASP的破烂扔掉。
&ghr8v)F#NF X#F0  以下列举的都是错误的做法,请不要误以为是推荐的做法而进行推广:
k(Hb|K!kJW&T0   1. 使用Server Side Include给ASPX引入共同的页面构图.51Testing软件测试网-x K Jz^$]"Z#k
  在ASP.NET的机制下,应使用ASCX(web user control)来实现。ASCX提供了更多可控制接口,并且更重要的是,ASCX是一个类,一个实实在在的类,可以全面控制它。
u'}5nQq9MY9J6k0   2.不使用web.config51Testing软件测试网9EZ#JX7S`om K~
  web.config提供了非常丰富的配置管理接口,是一个应用程序最核心的部分,但是很多人的web.config往往是空的,或者就从来没有修改过。51Testing软件测试网'k5~;S:H*buLg.V.g e
  3.使用Response.Write向前端输出消息
0lj F0A{ aM0  ASP.NET平台下的Response和ASP的Response有很大的不同。虽然表示同一含义,但用法上已经大不相同。Response.Write的内容只会输出到页的最前端,向前端输出消息的正确方法是使用PlaceHolder。51Testing软件测试网MCi-I_
  4.使用一系列Session管理用户连接状态
g lAzCo0  这种方法在ASP里被滥用。在ASP.NET环境下,正确的做法应该是设计一个类,结构化地保存数据,将对Session或者Cookie的访问封装起来。
H!Kd'zm0  5.使用Session验证身份
'M.PR;i7e.AN#B ~3? Z0  这几乎是通病,ASP.NET提供了一组用于用户身份验证的API,类型是forms验证或者windows验证,这一点quick start有一节讲解得很清楚,可是绝大部分人还是依靠给Session赋值来保持用户身份验证状态。
rp]w"~ Z l0   6.使用Response.Redirect重定向页
f#aJ%Hd'M-lPqC"MD.k0  这一点在必要的时候可以使用,但不可滥用,事实证明滥用重定向将导致逻辑上的严重混乱,这是在以页为程序单元的时候的做法,使用front controller模式将使用户的操作逻辑集中起来。
B,Ud2s;@B0}(b {0  7.使用太多ASPX页51Testing软件测试网%B"V3`,w4KI
  ASP环境下的程序单元只有*.asp页,ASP.NET可不是这样,还有后端的类库,ASCX等等。应将业务逻辑分别集中在不同的单元,而不应该一项操作使用一个ASPX。更多时候ASPX将做为ASCX或者custom control的容器而管理页内逻辑,ASPX重用ASCX的同时,ASPX也做为统一的页构图重用。
9F/yZt4ON1Zs0  8.在多个逻辑单元之间复制代码并修改相应逻辑
3BX ZB$Xj8iV0  重用!重用!重用!处理此类问题的原则是不出现任何相同或相似的过程,如果你用上面的方法,一旦出现重大逻辑更改,带来的结果将是灾难性的。51Testing软件测试网$rM7]1S#Uc
  9.害怕使用DataSet51Testing软件测试网&Y(]gQ1a;q-]+}C U
  很多人被DataSet吓坏了,认为”肯定”影响性能。但连最初的尝试都不敢,他们总认为他们的产品一定重大,设计上应该”慎重”。他们往往使用ArrayList或者设计低级的类来保存集合数据,进行艰难的数据倒入工作51Testing软件测试网)|*K b []7[+z
   10.对“性能”过多注意51Testing软件测试网N*y+n.zJ B}J
  对ASP.NET ViewState的机制特别不满,或者总是挖空心思迫害人家,反倒把自己弄得很累,如果在对付ViewState的同时多注意少连几次数据库也许更文明些。
.p*F9m7l4^&`7])[0  11.应用程序根目录很乱
^N1gKg}0  ASP.NET是开发项目,不是网站。应该把不同的资源分类放置。例如把所有静态资源(样式表, 脚本, 图像)组织到一起,甚至可以写一组API来管理他们,ASPX应该放在一起,ASCX应该放在一起,*.cs呢?应该把他们放到另外一个project里。
T$h\ j0ic0  12.不厌其烦的写访问数据库的过程
.w)z&M;tJi/U0  应该把这工作交给DataAccess Application Block。你自己还要开关connection,何苦呢?51Testing软件测试网3C{.S]`P*E
   13.自己写的东西最靠得住
"z#c:Y$L@:_0  事实往往正好相反,多注意使用人家写好的产品,又不收你钱,何苦那么爱面子呢?51Testing软件测试网 Kf!sW)lgT i"^J
  14. 胡乱命名ASPX文件名
t'L9eG9d-} Px0  这是最让人痛苦的了,ASPX文件名不仅需要容易识别,还应该遵循一定规则,因为behind每个ASPX都会有一个同名的类,想象一下,多难受。另外大部分人不知道管理自己的项目的name space,让人好像看到一本帐一样。
o1{(p-r8IF2r0  15.从来不作继承或派生51Testing软件测试网2jH$g$i0qv1S1JEi
  一些具有相同行为的类,应该从公共的基类派生出来,实际意义上,我们的ASPX应该有一个基类PageBase,因为总有一些公共的特性需要抽象出来。51Testing软件测试网m8}%E2s;Kn*Yh1XF
  16.零property51Testing软件测试网.O,q2i,|bI9[v
  他们的类(ASPX所对应)里只有private method,不公开自己的任何秘密,可以这一定是JAVA的遗老干的事。51Testing软件测试网'C_/D%H2AFqX\
  17. 零ASCX
Jsh1A#w3adk0  不用说,他还没学会ASP.NET。51Testing软件测试网1}1@H@lr,j
  18.使用DreamWeaver“画“ASPX
@ K$J8_a-}0  这批人是美工,甚至有一些人在非常陶醉地讨论如何更好地“整合“ DreamWeaver和Visual Studio。
a2Z&j1Q0j9Bv0   19.只熟悉System.Web.UI.WebControl和System.Data.SqlClient应该还有一些值得熟悉的类库。
z@[%S O BP0W0  20.零注释
-_rS/zV+]2e2e0  这些都是心里很明白的快手,一任IDE生成的缺省注释横在那里不管。51Testing软件测试网m8ZDP ].SV,w;yQ'_f
  21.零事件51Testing软件测试网!t Q:g]e]m
  对“事件驱动“一无所知,只知道在Page_Load()里写过程,或者双击一个按钮写Xxx_Click()过程,在他们的程序里看不到event和delegate。

TAG:

 

评分:0

我来说两句

Open Toolbar