设计一个具有健壮性,灵活性,可重用性的Web应用架构(一)---实验总结

news/2024/11/9 12:13:54
 

虽然这是一个功能很简单的基于Web的应用程序,但是经过认真地探索,最终设计出了具有健壮性,灵活性,可重用性的基于层模式的Web应用的架构。

Ø         基于层模式的Web应用的架构中不同层的作用:

1.         表示层:表示层就是客户端,为用户转换工作流层返回的结果。它包括客户端的软件组件、应用程序、Web浏览器等。这些不同形式的客户端能够以可视形式提供丰富、灵活的用户交互界面,用来表示信息和收集数据,并利用业务逻辑层提供的功能服务完成用户请求,并且还可能会执行一些简单的业务逻辑,比如对用户输入的数据进行简单的检查。整个业务处理的结果最后回传给表示层。

2.         控制层:这是体系结构下的一个业务流程控制层,也称为业务接口,它提供了一个到表示层的简单界面(也称为接口)。工作流层管理内部状态,并使用业务逻辑层提供的自动操作来完成复杂的工作流。

3.         业务逻辑层:业务逻辑层通过隐藏来自更高层的事务逻辑和实施细节来提取业务事务,用于实现业务逻辑以及事务规则处理。这一层是分布式应用系统的关键所在。它负责处理所有来自外观表示层的用户请求,当它通过数据服务层提供的接口处理完请求之后,还要把处理结果返回给外观表示层。这层通常也被称为中间层。业务逻辑层提供执行业务的规则,为具体应用提供事务处理、安全控制以及为满足不同数量客户端的请求而进行性能调整等功能。

4.         数据访问层:数据层的上一层为数据访问层,也称数据持久层。它从数据库中数据的表示形式中提取数据,完成数据的定义、维护、访问与更新,并且包含所有数据库操作公用的例程。数据访问层直接由业务逻辑层使用,管理并响应业务逻辑层的数据请求。

5.         数据层:它距离客户端最远,其中存储了应用所需的信息。

最终的类结构如下图所示:

 

 
 

Ø         MVC模式来设计表示层,控制层,业务逻辑层,我的blog里有关于MVC模式的介绍:http://blog.csdn.net/lin_bei/archive/2006/08/18/s1093749.aspx,

   关于MVC模式的两种实现形式Mode1Model 2的比较,http://blog.csdn.net/lin_bei/archive/2006/08/18/1095236.aspx

   本实验对这两种实现方式都运用到了:

ü         对于学生注册模块,使用Model 1来实现:

这种以JSP为中心的实现方式,详细的实现方式解释如下:

 

从上图各个jsp页面可以看出来,student.jsp(学生注册页面)充当Model 1里的表示层(View)跟控制层(Controller)的角色,也就是说在student.jsp这个代码里显示用户注册的JSP代码,也有业务流程代码,用来选择下一个要显示的页面,如果说注册成功则是thanks.jsp(addStudent_success.jsp),如果是注册失败则是error.jspdaoerror.jsp)。而在Controller(student.jsp)里调用了Model层的StudentService类: 

 
 
     上图的IStudentDAO是一个接口,它用DAO工厂类DaoFactory通过一个配置文件CourseConfig.xml来动态获得,具体的过程就在下面的运用DAO模式来设计数据持层部分来解释了。

这样整个Model 1的架构就很清晰了,我们可以发现这个过程里一个Servlet也没有用到,这就验证了那句话:“Model 1JSP为中心(JSP Centric)的设计模型”。

 
 

ü         按照实验说明,对于选课模块,使用Model 2来实现:

 

这种以Servlet为中心的实现方式,详细的实现方式解释如下:

 

 对于上图,对应MVC模式的Model 2实现方式:

     显示层(View)register.jsp(作为控制层的输入),register_success.jsp(作为控制层的输出,如果学生选修该门课程成功就转到这个页面)daoerror.jsp(作为控制层的输出,如果学生选修课程时发生错误,如已经选修了,就转到这个错误页面。)

     控制层(Controller):RegisterServlet.java(它负责接收客户端请求(控制层的输入,register.jsp)并处理此请求:doPost,将它传递给合适的JSPsuccess or error))。

     模型(Model):RegistService.java Student.java Register.java LessonService.java Lesson.javaMVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。在这个实验里,也是按“以便于模型的重构和提高重用性”的规则来设计Model的。另外,模型是所有的商业逻辑代码片段所在,从上图也可以看出模型提供了两种对象:业务实体对象(Student,Register,Lesson)和业务处理对象(RegistSerivce,LessonService)。业务处理对象封装了具体的处理逻辑,业务实体对象可以通过定义属性描述客户端表单数据。业务处理对象RegistSerivce等并没有直接对可持久的数据进行操作,而是通过那些DAO接口来操作,这也是为了“以便于模型的重构和提高重用性”。

       对应下图,我们可以发现这种实现方式跟Model 1相比的不同之处。   

    




http://www.niftyadmin.cn/n/3651875.html

相关文章

数据结构与算法 题集

转自:http://hi.baidu.com/geogre_jsj/blog/item/e4b98fd2aab5aa3611df9b92.html由于这些题,实在太火了。所以,应广大网友建议要求,在此把之前已整理公布的前80题,现在,一次性分享出来。此也算是前80题第一…

快速实践JAX-WS 2.0

本文根据SUN官方网站Enterprise Java Technologies Tech Tips栏目上的一篇文章改写的,所有过程均调试通过。 一.前言 SOA思想的核心在于"S",凡是从服务的角度去看待系统功能,并且构建和实现应用,都可以认为是…

ros中使用摄像头

How to Use a Webcam in ROS with the usb_cam Package wiki:http://pharos.ece.utexas.edu/wiki/index.php/How_to_Use_a_Webcam_in_ROS_with_the_usb_cam_Package有一点要注意的是,摄像头的数据格式,看了一下usb_cam的源码就只有三种yuyv ,…

JAX-WS RI 架构文档

以前也上过好几次JAX-WS Project的网站,但是今天晚上浏览https://jax-ws.dev.java.net/ 时才发现里面关于JAX-WS的资料真得很多,其中发现JAX-WS RI Architecture Document这个文档特别有用,对于理解JAX-WS协议栈中在底层处理时各种协议是如何…

BUG!!求二进制数中1的个数---编程之美

问题如题,在编程之美中也给出了很多方案,而对于这一个题,我想大家最快想到的就是通过移位来进行,而编程之美中也是写了两种用位操作的方式,我就拿其中一个来说吧,这个bug也不是什么大问题,但它确…

JAX-WS2.0规范--第一章:Introduction

Chapter1 IntroductionXML是一种平台无关的表示结构化信息的方式。XML Web服务使用XML为基础在基于网络的服务和这些服务的客户之间进行通信,并继承了XML的平台无关性。SOAP描述基于XML的消息格式,并“使用XML技术定义一个扩展的消息框架,该框…

JAX-RPC vs JAX-WS(二):用JAX-WS 2.0实现高性能的Web服务

面向服务的架构(SOA)能够使多个遗留系统或者是新的软件产品作为一个服务,对外通过Internet连接整合起来,实现服务与服务的相互通讯。Web服务技术是SOA实现的一个基础,它包含了不同的业务实体之间的复杂事务处理。XML 处理,作为Web…