分享
 
 
 

构建asp_net逻辑构件库

王朝asp·作者佚名  2006-01-30
窄屏简体版  字體: |||超大  

构建asp_net逻辑构件库 概要 使用asp.net开发高重用,松耦合,框架良好的web 应用程序。并且可以形成高可用的构件库。

对象 本文主要针对使用asp.Net开发BS系统的开发人员、项目经理以及负责软件质量的领导。

背景以及解决之道 背景,应用软件的特点:1、看重业务,业务繁杂,客户独特要求很多,版本众多,有些公司对每个客户都要产生一个新的版本,很少有人了解所有版本之间的差别,如此之多的版本成为公司的繁重负担,2、产品功能耦合严重,功能很难复用,3、软件修改任务繁重,也许这是最让人头疼的,一个项目开发完之后,客户不断的提出修改意见,很多开发人员长期的陷入修改任务中。这些特点和问题使公司开发部门象雪球一样越滚越大,工作量越来越重。

解决之道:

针对以上问题,应用软件开发可以使用以下方法解决问题:

1、 提取构件,提高重用。

2、 界面换肤,容易修改,界面多变。

3、 脚本传参,避免耦合。

内容 框架:包括页面、构件库、数据组件库、数据组件工厂四个部分。页面负责网站整体外观并且加载构件库,构件库提供逻辑功能,数据组件库提供业务数据、数据组件工厂负责生成数据对象。这四个部分可以概括为两库两纽带。页面是构件库和用户的纽带,数据组件工厂是构件库和数据组件的纽带。

1、 页面 页面负责网站整体外观并且加载构件库。

页面是网站整体UI的表现,主要工作是图片制作,页面切割,加载构件,并且给构件传递参数,并且要负责网站导航。

分工: 美工和熟练html的人员开发。

2、 构件库 这个是框架的核心,我们使用用户控件(user control )可以方便,快捷的完成这3点:

1、提取构件,提高重用。

2、界面换肤,容易修改,界面多变。

3、脚本传参,避免耦合。

1.提取构件,提高重用。

把有一定逻辑功能的处理部分封装成用户控件,这很容易,主要是怎么重用,一般我们主要在同一个工程中使用用户控件,但是只有跨工程使用,才能实现重用,其实,codeBihand技术是一种继承关系,用户界面继承自类库,所以把用户控件所在类库引用到工程中,并且把用户控件的ascx代码放入工程下的目录中,就可以像使用同一个工程中的用户控件一样了。

另外,如果需要调试,可以源代码放入用户控件所在目录,即可跟踪调试。

2. 界面换肤,容易修改,界面多变。

用户控件的界面很容易修改,这个也要深刻理解CodeBihand技术,多个ascx文件(控件ui代码)可以对应同一个cs文件(控件类代码)。我们也需要这样做,例如:

这是一个登录构件,功能是接受用户输入,验证用户,返回登陆信息,如果成功,导向其他页面。 这个构件完成之后,我们发现还需要一个能够放在导航条上的登陆构件,这是我们有3个选择,1,新建一个,复制代码,代码复用,不过代码重复带来到的问题是相当麻烦的。2,扩展构件功能,通过一个参数决定怎么显示。这有一个问题,要修改程序,是程序变得复杂,并且使用代码控制显示往往在以后的维护阶段很麻烦,动不动就需要修改程序,3,作一套皮肤,程序员轻松了,代码不用改动,并且皮肤是可以方便修改的,维护也容易。

这个就是导航条上的登陆构件。

让这2个UI部分对应同一cs代码,是个好主意。

在Microsoft Visual Studio .NET 2003开发工具中,对这个支持的不是很好,它没有很好的对这种代码的组织形式,看上去其中一个控件的cs代码好像丢了一样。如图:

GCon_lineLLogin.ascx 的代码看上去关联不上,不过不影响使用。

可能是微软也没有想到,不过我们确实需要这样用,并得到了实惠。

分工:软件工程师在经过详细设计,功能划分,并且开发出构件,可能不是很美观,然后,美工可以拿走构件的皮肤,制作出多套不同皮肤的构件。而构件的编码只有一份,这样,即实现了构件的多样化,又避免了多个版本的产生。

3、 脚本传参,避免耦合。

控件的使用就必然涉及到与其他控件和页面的交互问题。对于大部分用户控件,它与页面和其他用户控件的交互并不是很复杂,比如上面的登录控件,仅仅需要知道登录成功后,要显示那个页面,对于这种简单的交互就要使用脚本传递参数,就是在页面中书写代码,而不使用codebihand技术。在页面上写的代码更容易改变,降低了强耦合。

下面看一看怎么写脚本代码:

通过分析,发现页面部分与codebihand代码是中继承的关系。所以我们就可以重载OnInit()方法。在页面开发执行是就加入我们的操作。采用这种方式传递参数,在任何时候改变这个参数的值都很方便,程序也不需要编译。

错误的做法,在用户控件中直接决定导入哪个页面,不留参数,这个用户控件会因为这个小小的举动,完全失去灵活性,也失去了重用的可能。

附加:

用户构件的活用,

asp.net 用户构件的作用非常大,用户构件首先是一个服务器构件,它具有服务器端的构件的优点,另外开发方便,非常适合应用软件开发者的需要。

要想活用用户构件,需要了解以下几点:

1, 深入了解Codebehind,它带来的不仅仅是像开发win form 程序一样开发应用。

2, 尝试给用户构件加属性,事件,方法。充分扩展和理解用户构件的功能。

3, 尝试让用户构件继承一个自定义的接口,接口是非常强大的,我们不得不用。

4, 动态加载用户构件。同一个页面上的多个用户构件可以全部是动态加载的。

5, 加载使用另一个dll中的用户构件,这中可以重用用户构件, 构建我们自己的构件库的基础。

6, 让美工给一个编译好的用户空间更护不同的皮肤(编辑ascx中的html代码即可),可以发现因为ascx代码的改变,用户构件将有各种各样的面孔,形成多样的界面系列。

7, 不通过改变页面的cs代码给用户构件传递参数,这样就可以实现构件和页面的松耦合,页面上添加,减少构件, 传递参数,统统不编译程序。

总结:

使用C#开发业务构件和构件工厂,这里暂时没有写出, asp.net构件库和业务构架库共同配合可以统一完成优质的开发流程,包括美工和程序员的分工,形成美工素材库等,积累起公司的资源。

作者:王鲁生

qq:44079546

Email : wanglusheng1@163.net

北大软件工程有限公司软件开发工程师。

2004-06-05

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有