分享
 
 
 

Web 应用程序模型及其Java实现之第三部分

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

第三部分:MVCD模型

在上一节中,从一般的原则上介绍了两种Web应用模型,但是如何理解和把握这样的模型,将不同的Web技术正确应用到Web程序不同的功能模块中是一个非常实际的话题。下面就在实际编程中如何去把握Web编程模型做一些分析。

1、两层客户/服务器模型

Web应用程序天生是一种客户/服务器应用程序,在ASP(Application Service Provider)逐渐成为Internet应用发展的一个重要方向的时候,使用哪一种编程模型来实现Web应用程序还处于探索之中。上面介绍的微软的DNA结构和Java编程结构就是人们在ASP(Application Service Provider)编程模型上进行探索的结果,但是由于这些技术出现比较新、把握起来也有一些难度,所以许多编程人员采用了使用ASP或是jsp中嵌入“SQL”来实现数据存取和一些相关逻辑,如图11所示。

这样的编程模型有对一些小型系统比较合适,因为不需要太复杂的技术,技术人员比较好找,实现起来也比较快。但是,这种编程模型缺点还是比较明显的:维护困难、重用困难、大型系统中难以治理。

要解决该模型问题的要害是,将逻辑层抽象出来。但是,在以数据中心编程中,数据库不但提供基本的数据存取功能,而且与SQL丰富的表达能力一起提供强大的逻辑表达能力;再上节介绍的图9、图10所示两种模型把握起来有一些难度,所以出现了该模型的一个改良版本。

组成在该改良的模型中,为数据库中的主要的表都建立了一个类,JSP/ASP通过该类实现对数据库表的操作。这个模型一个方面实现了SQL语句封装,方便了程序的维护;另一个方面也提高了系统的重用性,即对Table类的重用。

但是,由于大多数数据库操作都是针对多数据表的操作,假如采用单表的方式来完成逻辑,未免有些浪费数据库与SQL的逻辑功能。另外,由于系统没有实现逻辑层的抽象,不能解决上面提高要害问题。

2、MVC模型的介绍

在传统的面向对象编程中,我们曾经接触过MVC模型。

在该模型中,应用程序分为三个组成部分:

View: 这是用户界面部分,与Web应用程序一样,主管应用程序与人之间的接口:一个方面它为用户提供了输入手段,并触发应用逻辑运行;另一个方面,它又将逻辑运行的结果以某种形式显示给用户。

Controller: 该部分是用户界面与Model的接口;一个方面它解释来自于view的输入,将其解释成立系统能够理解的对象,同时它也识别用户动作,并将其解释对Model特定方法的调用;另一个方面,它也处理来自于Model的事件和Model逻辑执行的结果,调用适当View为用户提供反馈。

Model: 这是整个模型的核心,它表示的是解决方案空间的真正的逻辑。它采用面向对象的方法,将问题领域中的对象抽象为应用程序对象。在这些抽象的对象中封装了对象的属性和这些对象所隐含的逻辑。

上面所示的编程模型中,在应用程序执行过程中,数据就保存在Model的实例中,也就是保存在内存中。当用户需要保存执行的结果时,将模型中的数据保存为特定格式的文件。在用Java实现模型时,可以直接使用Java对象的Serializable特性来保存对象。这种模型适合一些工具软件的开发,如Case工具或是CAD工具。这些工具软件所具有一个共同特征是模型本身比较复杂、数据量不大而且是单用户单模型实例操作。

Web应用程序有着与工具类应用程序不同的特点:数据量大、多用户并行操着。假如象上面一样采用面向对象模型,则往往是多模型实例同时存在,上面的模型不再适合于这样的Web应用程序。

虽然MVC模型不适用于Web应用,但是它为Web应用程序的开发提供了一些借鉴意义。再该模型中提供了对模型的抽象,也就是逻辑的抽象。假如改良该模型,在内存中不保留对象的属性值,并且增加一个数据层,将模型与数据库连接起来,可能是一个好办法。

如何用Java实现图14所示的MVCD模型

3、WCS、MPE模型介绍

图15所示的是在WCS和MPE中所采用的编程模型。该编程模型将JSP、Servlet、JavaBean和JDBC技术有机的结合在一起,基本上实现了图14所示的MVCD模型。

JSP:JSP在本模型中主要起着用户界面的功能,掌管所有的输入和输出。在该部分中所使用的技术包括。

Html:用户从浏览器上所看见的内容主要是以HTML的形式提供的,只是有一些内容是静态的,而有一些内容是由JSP动态产生的。

Applet:这是一种客户端程序技术,它作为一种可以独立运行的程序模块嵌入到HTML中。

Java Script:这里的Java Script指的是客户端脚本技术,主要在客户端提供一些动态功能和实现输入格式的检查。

JSP:这是一种在服务器端执行的脚本技术,它的主要功能是接受服务器端逻辑运算的结果,动态的生成HTML作为对浏览器端请求的响应。

IC (Interaction Controller):IC是以Servlet技术实现的。IC是介于事务逻辑和用户界面之间的一个层次,该层主要起用户界面和事务逻辑之间的枢纽作用。从JSP上接受的用户输入,因为是以HTTP请求的形式发送到服务器端,该HTTP请求的具体内容是什么、它提供了哪些参数需要在服务器端进行解析,然后才能决定为了响应该请求要执行什么事务逻辑;事务逻辑在执行完成之后,作为对某个用户请求的响应,它需要将执行的结果以HTTP响应的形式发送到客户端。IC正是起着上面所示的两种作用的程序单元,它一个方面响应来自于JSP的请求,并将其解释为制定的Command调用;另一个方面它将Command执行的结果传递给特定的JSP并调用该JSP作为给用户的响应。

Command:Command是以JavaBeans技术实现的。在一个应用程序中,比较稳定且起着核心作用的是事务逻辑,而Command就是用来实现事务逻辑的。在这样的Web应用程序中,将系统的事务逻辑封装成许多独立的 Command,这些Command一个方面作为对IC的响应,另一个方面它完成了逻辑与数据库对象PO的结合。

PO:这是一个非凡的Java Class,它在该模型中起着应用与数据库之间的桥梁作用。Web应用程序大多都有丰富的数据,都需要与数据库进行连接。Command对数据库进行调用所需的基本功能都封装在PO中。

DataBean:如图所示,JSP、IC、Command与PO之间是一种功能提供者与调用者之间的关系,那么如何传递参数呢。DataBean便是这样的一个解决方案,它将这些功能模块间传递的参数抽象成对象。

4、对JICPD模型的改进(JIMPD)

在图15所示的模型中,系统抽象出了逻辑层,即Command层。但是,系统并没有将其所有的Command和DataBean有机的整合起来,即开发者看不见一个完整的对象模型,我认为这对面向对象的开发是一个损失。因为,假如一个好的面向对象模型,不但为数据库的设计提供依据,而其也为Command的设计和组织提供了一个依据,并且也将数据库与Command的关系完整的表达出来。所以提高该模型性能的要害就是增加一个模型层,将Command与Databean封装在模型中。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有