主题:  ASP.net程序开发心得交流

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#12004/11/23 1:50:44
最近下决心弄ASP.NET,找到了一些ASP.NET开发的方法。我化了很多精力去想,怎样使一个程序有合理的结构。也许象ASP这样做,我可能会有较快方法,但还是耐着心尽量想着结构。我觉得有好的结构才是以后软件维护和扩展功能最后的方法。

开始设计结构,我把一个程序分成三个部分,数据层、工作层、显示层。

数据层由这些组成,一个数据的基类是必须的,我把它称为DbBase,它负责打开数据库、运行命令或存储过程,给出DataReader对象或DataSet等。有了基类即可派生出象管理员数据类、会员数据类、文章管理数据类、频道数据类等。这些派生类专门负责添加、修改或选择数据。

工作层是在数据层之上的,并不是必须的。一些简单的程序有些就把它省了。这个层主要负责一些规则,比如会员登录时,由数据层得到数据后,该层就专门负责登录会员能做些什么事。一些文章发布系统等也可由该层处理是否有相应发表权。发布后,由该层负责给予发表者相应的分值等。

显示层一般就是指ASPX页面了,为程序的梢节点,负责数据如何显示,及一些相就的提交数据等。

与ASP相比,ASPNET编程是很有优势的。比如一个页面要实现多个功能如添加、编辑、设置、移动等功能,用ASP写的话就会很繁。也许可以用一个功能块来表示,但是程序的可看性就不高。我在实现这样页而是,就用panel控件,该控件是个容器类,在客户端是以<div>来表示的。我把每个功能用一个panel装起来,并在Load事件中按需要,使某功能块的panel的Visible设为true,其它的设为false。

如果熟悉XHTML,我推荐用它。我觉得用这个非常方便,而且ASPX的条理性很强。在设计页面时,我化了用HTML页面的二倍时间来完成。但时随后就发觉它的好处了。当想用一些功能块的移动或重复设计时,用<div>就会很方便。用XHTML同理我也推荐用表格,我反对绝对化用<div>,用表格有时比<div>条理更清晰。如显示一组数据,等。用表格显示可能用一个方法来表示,为了尽量让ASPX页面简洁,可能用程序生成表格。如果用StringBuilder会发现原来用程序生成的表格代码也具很高的可读性。实现表格这些复杂代码与HTML分开,这样使程序的可维护性大大提高。

我觉得用APSX比用ASP有趣得多,一些功能是ASP无法做到的。ASPX的类可能做到用过程难以实现的功能。比如树形结构用类来封闭就容易多,我几乎想不到如何用ASP去实现树这个概念。ASPX中的变量可以作为一个变量,进行再次调用。比如页面生成时的一个DataSet,在提交数据前,仍可以调用DS中数据进行验正,或得到一些传送值。而ASP只能依靠Session了,如果数据量很多,Session就会变得很复杂了。我用这种方法存储了一棵简单的树,当然数据不会很多,不会过多占用内存的。

最后就是想说,不要把ASP.NET的控件当作编程目的,比如dataGrid,在编程中适可而止的应用。开发程序应在这些类的设计及结构方面多动些脑。并告诉大家不好的消息,微软已设计出不用代码的表格控件,可能会代替现有的dataGrid或dataList。但这只是显示层上的运用,具体核心代码还是不能靠控件代替的。


非常大鱼

大梦男人

职务:普通成员
等级:1
金币:1.0
发贴:32
#22004/11/23 10:08:07
从ASP转到ASP.NET确是一件很痛苦的事,但是现在正在适应中,ASP.NET中的库类太多了,要想了解还要待以时日。



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#32004/11/23 11:45:51
确实要有一段时间适应。开始我也这样,学这个控件怎样使用,那个按钮怎样提交,很多一些书都这样的。但据个人体会,这样的书只能说是一本说明书,并不会带你真正进入编程世界。国内一些书,象什么高级站点编程,其实这些书真是误人,一些类的设计是一塌糊涂,程序结构也不好。我买了几本WROX著的书,很好,它是真正教你编程的,虽然有些深,但还是能看懂一些意图。按照书中的方法,可以自己摸拟一下,虽然会偏一些,但在好的方法下,虽偏也不会太多。


非常大鱼

大梦男人

职务:普通成员
等级:1
金币:1.0
发贴:32
#42004/11/23 12:06:05
以前用asp的时候,习惯了直接使用变量,但现在用NET使用变量得先定义,真是很不习惯。



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#52004/11/23 15:13:39
lshfong123在上个帖子中说
引用:
以前用asp的时候,习惯了直接使用变量,但现在用NET使用变量得先定义,真是很不习惯。


这些问题都不是问题
在学习C#的过程中,虽然在语法方面是全新的接触,但是毕竟没有太大的难度,基本上和我以前写js保持了一定的相似性,虽然有一些比较深的东西还没有接触

最近在看c++的书,那才是完全茫然.没有c的基础,那些语句真的很难理解



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#62004/11/23 15:39:28
allinhands在看C++了,我现在可不敢看了,确实要混的,虽然都是C系列,还是差很多,主要是C++的指针难弄。不过C++确实功能强大。


非常大鱼

缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#72004/11/23 15:46:46
本来有点厌烦了web上的编程
不过.net让本来不属于真正意义上的编程的asp变成了一个有趣的东西
但是有时做一些win程序的时候觉得C#还是没有C++灵活,不能接触到比较底层的东西
所以学c++.
不过很多新的东西让我很是头晕.
两种语言搞混是肯定的,但是我觉得问题不大.我现在写代码经常搞错,但是一般都是刚输入就马上发现了



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#82004/11/23 15:58:05
我现在还是对C#很热情,至少可以做很多的事。2.0出来了,让人欢喜让人忧,喜的是2.0功能非常强大了,忧的是,本人属于程序员做的事,都让微软给做了,比如登录控件、角色设计之类。会不会ASPNET又是个傻瓜软件,就象PHOTOSHOP,让一些没有任何美学基础的,都成了设计师,WEB编程的令人担忧。微软好好的不干,净抢程序员的饭碗。
等我厌倦了,也来学C++什么的。


非常大鱼

缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#92004/11/23 16:21:11
微软总是子作多情的做一些事
本来登陆验证什么的都是我们的事
但是2.0里面他非要加上
而且还是高度的可自定义性.
不过总是觉得别扭
在外行人眼里,程序员就这样越来越不值钱了



BALANCE_5d

职务:普通成员
等级:2
金币:1.0
发贴:200
#102004/11/23 20:33:40
用。NET就不要盯表示层,如果不是要兼做设计,多放功夫到逻辑层和数据层吧


万物皆归于平衡

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#112004/11/23 21:06:42
并不担心这个。只是担心一些廉价的东西出来了,好的东西都要便宜了。就如三流的网页设计师出来了,做网页的价格随之都便宜,担心的就是这种竞争。


非常大鱼

老刀把子

职务:普通成员
等级:1
金币:0.0
发贴:207
#122004/11/23 22:43:05
让编程的门槛变得更低本身就是发展趋势,就像工业革命让生产线替代手工劳动一样,生产效率会成倍的增长,但是也会让一些人失业,但是这个趋势是不可逆转的。我们要做的就是学习最新的知识,不能落后于这个时代



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#132004/11/23 23:37:34
但愿这种担心是多余的。就如现在,网页设计业,工具好了,但设计师差了,价格低下来了,设计水平也差下来了,任何人可以不废脑地套一个模板,速度加快了,个性失去了。想做个性网站的好的设计师,除了有好运做一些好的项目,很多好的设计师只能拿普通设计师的薪水了。低价、廉价、没有个性的竞争,当我们固定于套板时,行业的活力也快失去了。


非常大鱼

Lukiya

职务:普通成员
等级:1
金币:0.0
发贴:59
#142004/11/24 12:18:09
数据层由这些组成,一个数据的基类是必须的,我把它称为DbBase,它负责打开数据库、运行命令或存储过程,给出DataReader对象或DataSet等。有了基类即可派生出象管理员数据类、会员数据类、文章管理数据类、频道数据类等。这些派生类专门负责添加、修改或选择数据。

=================================================
启发,我居然没想到用继承,虽然也是三层结构,但是我用的是using引用。
真是启发,这就全部重新构架去。