框架良好的web 应用程序

来源:互联网 发布:激光打印机 知乎 编辑:程序博客网 时间:2024/05/20 01:11

对象 
本文主要针对使用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()方法。在页面开发执行是就加入我们的操作。采用这种方式传递参数,在任何时候改变这个参数的值都很方便,程序也不需要编译。

0 0
原创粉丝点击