MVC结构

2024-10-02

MVC结构(精选7篇)

MVC结构 篇1

1. MVC与三层结构技术简介

MVC是一种软件,是一种软件框架[1]。软件框架是对通用功能操作进行抽象的软件,这些抽象的功能操作的代码可以根据应用程序的功能要求有选择的改变,并复用框架代码,进而形成特定的应用软件。

就是把一些通用的功能,通过开发平台以代码和架构的形式表示出来,开发者通过框架提供的接口进行功能开发,可以复写框架代码,而不必从开始编写。框架提供了一些软件功能的默认实现,在特定的开发平台下,就是说开发平台已经代替开发者实现了一些通用功能并提供了相应的代码,开发者只需重写或添加功能代码。注意:框架内部代码不可重写;应用程序流程必须在框架内部。

三层结构技术[2]是一种设计架构模式,是一种软件的设计思想。可以把软件设计分为表示层、中间层和数据层,已利于软件功能的设计和实现,称为三层结构技术。

框架给出了应用程序的体系结构,设计模式给出了具体设计的解决方案;设计模式可用不同语言和不同方式来实现,而框架则是开发平台给出的设计和代码的混合体;设计模式与语言无关的,具体设计受制于开发平台框架的具体实现环境。利用框架开发软件应体现设计模式的基本思想,软件设计模式思想的实现要选择合适的软件框架并受制于框架。

2. MVC结构

2.1 组成

由Servlet(Controller)、JSP(View)、Java Bean(Model)三部分构成。Model是负责保持状态、数据的应用组件,通常这个状态持久于数据库之中。View是负责用户界面的组件(UI),通常这个UI是使用Model模型数据来创建的。Controller用来处理用户交互,控制器行为(Action)用来完成用户发过来的每一个请求,操作Model(模型)最终会选择用哪个View(视图)来显示UI的组件。

2.2 特点

视图、控制和模型分离,近一步提高了复用程度,三者可以独立变化,降低了耦合性并进一步提高了模块的复用性;合作效率得到充分发挥,开发成员的分工界面更加清晰;当出现问题时更容易锁定问题。

2.3 结构

3. 三层结构技术[3]

所谓三层体系结构,就基于Web的数据库开发而言就是在客户端与数据库之间加入了一个中间层,也叫组件层。

而软件设计的一般三层体系结构[4]分为:

(1)表现层(UI):就是展现给用户的界面,即用户在使用一个系统的时候展现在操作员或用户的所见与所得及其过程。

(2)业务逻辑层(BLL):针对具体问题的操作,对数据库系统而言也可以说是对数据层的操作,对数据业务逻辑处理和一些事务办理。

(3)数据访问层(DAL):该层所做事务是对数据库直接操作,针对存储数据进行数据的增添、删除、修改、更新、查找等功能实现。

完善的三层结构的要求是:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层。这样就为软件设计提供了架构设计思想,利于代码的模块设计和功能的设计实现,修改和重组。

4. 三层结构在B/S上的应用

在Browser/Server三层体系结构下,应用软件三层结构设计的软件系统被分割为表示层(Presentation)、功能层(Business Logic)、数据层(Data Service)三个相对独立的单元。

第一层:表示层,Web浏览器上的软件设计。

表示层包含系统的显示逻辑,位于客户端。它的任务是由Web浏览器向网络上的某一Web服务器提出服务请求,Web服务器对用户身份进行验证后用HTTP协议把所需的主页传送给客户端,客户机接受传来的主页文件,并把它显示在Web浏览器上,相应数据由此被获得和显示。

第二层:功能层,具有应用程序扩展功能的Web服务器上的软件设计,实现数据处理和事务处理。

功能层包含系统的事务处理逻辑,位于Web服务器端。它的任务是接受用户的请求,首先需要执行相应的扩展应用程序与数据库服务器进行连接,通过SQL等方式向数据库服务器提出数据处理申请,而后等数据库服务器将数据处理和事务处理的结果提交给Web服务器,再由Web服务器传送回客户端。

第三层:数据层,数据库服务器上的软件设计,主要是对数据库直接进行数据处理。

数据层含系统的数据处理逻辑,位于数据库服务器端。其任务是接受Web服务器对数据库数据操纵的请求,实现对数据库查询、修改、更新等功能,把运行结果和数据提交给Web服务器。

5. 主要的MVC[5]

(1)Struts:Struts是Apache软件基金下Takarta项目的一部分。Struts框架的主要架构设计和开发者是Craig R.Mc Clanahan。Struts是Java Web MVC框架中不争的王者。

(2)Spring:Spring实际上是Expert One-on-One J2EE Design and Development一书中所阐述的设计思想的具体实现。

(3)Hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

(4).NET:.NET MVC是微软官方提供的以MVC模式为基础的.NET Web应用程序(Web Application)框架。

6. MVC与三层结构技术应用

传统的软件设计代码繁琐,代码模块间耦合性高,可重用性差,开发更简洁地设计一款代码整洁,耦合性低,可重用性更高,可扩展性更好的软件,MVC与三层结构技术被采用。

(1)Hibernate:Hibernate是一个开放源代码的对象关系映射框架;它是一个基于J2EE的java应用框架。Hibernate有六个核心接口,分别为Session、Session Factory、Transaction、Query、Criteria和Configuration。不仅进行持久化对象操作,还进行事务控制操作,通过这六个核心接口,业务逻辑和数据显示分离,体现了对象编程的思想。

(2).NET:在传统的.NET的WEB软件开发中,显示页面和逻辑页面,代码耦合性高,可维护性差,采用MVC架构,和三层结构技术有效地节约了代码开发工作量,表示层和业务逻辑层及数据层分离,降低了代码的耦合性,提高了系统的可维护性及可复用性。

仅仅使用了XML并不就是.NET应用,仅仅使用SOAP SDK调用一个Web Service也不是.NET应用。.NET是基于Windows操作系统运行的操作平台,应用于互联网的分布式。三层结构技术应用于分布式开发,极大地提高了代码的可读性和可移植性。基于ASP的集中式和Web Service的分布式开发,采用MVC和三层结构技术成为一股潮流。

7. 性能

7.1 可重用性

在使用MVC三层结构技术的软件设计中,代码重用有非常明显的效益和应用场合。使用MVC框架,编码工作需要逐步细化,可通过局部修改和重组,同时保持整体稳定性,因此能大量节省程序设计人员的时间,因此为一般人所接受。

7.2 简洁性

MVC已给出软件设计的框架,三层结构技术使表示层,业务逻辑层及数据层彻底分离,由此开发出的软件代码易于进行模块设计,功能分工更是简洁易于设计开发和使用掌握。

7.3 可移植性

功能模块的设计在该模式下易于实现,软件框架已给出,需要实现各种功能模块,三层结构模块的彻底分离,使软件设计的功能模块易于独立实现,并通过接口连接,实现数据和控制的交互。需要做得很大一部分工作是各个功能的细化,和独立实现,各个模块的耦合性低,可移植性增强。

7.4 可扩展型

软件各个部分和各个功能模块通过接口连接,更能的增减通过接口连接功能模块实现,因此软件的可扩展型非常高和容易实现,要做好软件模块的接口设计和功能代码封装。

7.5 可维护性

简洁的框架流程和模块设计思想,使软件的可读性增高,代码之间的耦合性低,和较高的可移植性,带来了软件维护工作的便利。使用MVC和三层结构技术使系统的可维护性显著增强和可行。

8. 结束语

MVC框架三层结构技术在软件设计和开发中有着广泛的应用市场和开发效益,随着Web和数据库技术的发展和推广,具有重要的作用和地位。MVC是一种软件框架,三层结构技术体现出一种设计思想。本文简要介绍了MVC和三层结构技术与区别,以及主要应用(包括在B/S的应用),并对MVC和三层结构技术开发软件的性能做了重要阐述,具有重要的研究意义。

参考文献

[1]温昱.软件架构设计[M].北京:电子工业出版,2007.

[2]徐爱兰.计算机软件开发中的分层技术探讨[J].计算机光盘软件与应用,2012,24:162-163.

[3]孟勋.基于面向对象技术的学校人员管理系统的设计与研究[J].科技创新与应用,2013,20:7-9.

[4]百度百科http://baike.baidu.com/view/687468.htm

[5]百度百科http://baike.baidu.com/view/5432454.htm

MVC结构 篇2

Struts[1]是Apache组织的Jakarta项目的一个部分, 其提供了关于Web应用开发的一个框架。在使用JAVA技术建立Web应用的开发中, 通过采用servlet和jsp可以高效、快速的开发出不错的web应用。由于应用不是建立在模块上的, 业务逻辑和表示逻辑混合在JSP页面中没有进行抽象和分离。所以非常不利于应用系统业务的重用和改动。

为了使开发的Web应用具有良好的可扩展性和易于分工, 将业务逻辑与用户界面分离, Struts应用框架正是用来解决这些问题的, 它基于MVC的设计思想, 很好地实现了业务逻辑与用户的分离, 同时, 它提供了大量的自定义标记库, 可以在JSP页面中分离动态显示逻辑与静态的HTML, 使页面代更清晰, 可读性大大提高。

1 MVC设计模式

MVC[2]是Model-View-Controller的简称。它的主要思想是将应用程序分为三个部分:模型 (Model) 、视图 (View) 和控制器 (Controller) , 以提高应用程序的可扩展性。这三个部分的作用分别描述如下:

1.1 Model:

它是业务逻辑处理模块。是对企业业务流程中的对象进行抽象, 封装了对象的属性和对象隐含的业务逻辑。

1.2 View:

它是用户视图模块。它为用户提供了输入手段, 并触发Controller运行, 然后通过Model访问企业数据, 并用某种方式来显示这些数据。

1.3 Controller:

它是流程控制模块。它管理着用户与View的交互, 能从View中取得数据并传给Model去执行业务逻辑, 然后它根据Model的执行结果, 选择一个合适的View把结果展现给用户。

MVC模型在基于Java技术的Web应用中扩展形成了MVC模型, 在模型中, Model、View、Controller分别由Java Bean、JSP、Servlet担当。Servlet先接受客户端的请求, 然后调用相应的Bean进行业务逻辑的处理, 根据处理的结果再调用相应的JSP页面, JSP页面依据存储结果的Bean生成HTML页面, 并返回给客户端[3]。

2 Struts的体系结构

作为一个MVC的框架, Struts[4]对Model, View和Controller都提供了对应的实现组件, 下面分别进行介绍, 并且看看它们是如何结合在一起的。

2.1 Controller:

Struts控制器组件负责接受用户请求、更新模型, 以及选择合适的视图。组件返回给用户。在Struts中Controller功能由ActionServlet和Action Mapping对象构成。核心是一个Servlet类型的对象Action Servlet, 这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点, 它截取和分发这些请求到相应的动作类 (这些动作类都是Action类的子类) 。Action Servlet包括一组基于配置的Action Mapping对象, 每个Action Mapping对象实现了一个请求到一个具体的Model部分中Action处理器对象之间的映射。

2.2 Model:

模型代表应用的业务数据和逻辑。Struts为Model部分提供了Action对象, 所有的Action处理器对象都是开发者从Struts的Action类派生的子类。Action处理器对象封装了具体的处理逻辑, 调用业务逻辑模块, 并且把响应提交到合适的View组件以产生响应。同时Struts允许使用其他模型框架来处理应用的业务领域, 如E-JB (Enterprise Java Bean) 和JDO (Java Data Object) , 以及常规的Java Bean。

2.3 View:

Struts框架的视图负责为客户提供动态网页内容。Struts视图主要由JSP网页构成, 此外还提供了Struts客户化标签和ActionFrom Bean。通过使用这些客户化标签创建的JSP表单, 可以实现和Action Form的映射, 完成对用户数据的封装, 同时这些客户化标签还提供了像模板定制等多种显示功能。

同时需要编辑两个配置文件:web.xml和struts-config.xml。通过它们配置Struts系统中各个模块之间的交互。下面对这两个配置文件做一些介绍:

Web.xml的配置内容如下:

通过对两个配置文件的配置, 把Struts框架中MVC的各个部分联系起来, 从而用Struts框架真正实现了该项目的开发工作。

3 结论

Struts作为一种Web应用开发框架, 已经得到了大量的应用。用Struts开发的程序具有灵活性、可扩展性、可维护性等优点。该文就Struts的主要技术进行了一些分析。

参考文献

[1]王霓虹, 王彦博.基于Struts框架实现Web应用的研究[J].信息技术, 2006 (6) .

[2]潘利群, 李耿.MVC模式在J2EE中的实现[J].武汉理工大学学报 (信息与管理工程版) , 2004 (5) .

[3]华英.基于MVC的Struts框架的研究与探讨[J].电脑知识与技术, 2008 (4) .

MVC结构 篇3

MVC是三个单词的缩写, 分别为:模型 (Model) , 视图 (View) 和控制Controller) 。MVC模式的目的就是实现Web系统的职能分工。采用MVC模式设计的架构具有低耦合性、代码重用性等特点, 能有效地降低软件的开发成本, 有利于提高软件的可维护性和工程化管理。MVC模式有诸多优势, 将MVC模式应用到安卓系统项目的开发中, 必然可以提高安卓项目的开发质量, 降低维护难度。

系统结构设计

在安卓系统项目的开发过程中, 没有一个明确的代码开发规范和结构, 会导致开发的系统模块难以维护, 各个模块之间处于高耦合度状态。会给后期的维护和升级带来很大的困难。

在安卓项目的开发中使用MVC思想来设计项目的结构, 能使得模块的分工明确, 代码可复用性高, 模块之间的耦合度降低, 有利于代码的修改和移植, 整个系统的结构清晰。安卓系统的MVC实现思路如图1所示。

在上图中将工程结构分为交互层、控制器层、业务层、中间数据池、工具类、文件系统、数据库、通讯模块、服务器端9部分。

交互层:负责客户端的页面展示和人机交互。

控制器层:负责调用业务层方法和将业务层处理结果返回给交互层, 是交互层和业务层的桥梁。

业务层:负责处理系统的主要业务逻辑。

工具类:负责向业务层提供支持, 包括对客户端数据库的访问以及系统的文件的操作。

中间数据池:用于缓存系统中的临时数据, 提供给业务层做临时数据支持。

通讯模块:Android系统的通讯主要分为两种类型, 一种是自定义通讯协议, 通过Socket模式来达到与服务器交互。另一种是调用Web Service接口来与服务器交互。通讯模块负责系统的数据传输与通讯, 对整个android应用提供支持。

服务器端:为Android客户端提供业务支持, 是整个系统的核心部分。

整体安卓系统设计结构的实现思路为:用户通过Activtiy所展示的页面与系统做交互, Activity根据用户所选择的操作去告诉控制器调用业务层的哪个方法, 根据控制器调用业务层返回的结果刷新Activity。控制器在整个程序中负责响应Activity的事件请求并调用业务层的方法, 在业务层调用结束后通知Activity刷新或是跳转。如果调用业务层有异常情况, 控制器负责将错误信息返回给Activity通知用户。业务层负责处理整个客户端的业务逻辑处理。业务层的主要工作还是将客户端从服务器获取的数据进行转换或处理。工具类负责对业务层的工具支持。比如说文件的访问、复制、修改、客户端数据库的连接、增删改查、客户端数据加密等。中间数据池存储一些在软件运行过程中的临时数据或是业务层在处理业务时常需要的数据。中间数据池是以Java中Map的对象存储数据, 即键值对。中间数据池的好处是其中的数据随时都可以被访问, 没有访问范围, 可以避免不同Activity之间跳转携带数据的繁琐操作。缺点是数据的Key使用需要有规范的写法, 否则有可能导致数据池内数据混乱, 造成程序的业务处理错误。还有就是当客户端程序出现无法恢复的错误时, 数据池会随之销毁, 用户需要重新打开程序。通讯模块是客户端与服务器沟通的桥梁, 通讯模块负责将客户端的数据传输到服务器和接收服务器的响应和数据。是客户端与服务器的沟通桥梁。

在Android开发过程中, 采用这种系统结构符合MVC的设计思想, 整个系统不混乱臃肿, 各个模块都有其单独的功能。工程维护、调试和扩展起来也比较容易。其中工具类、数据池在其他工程中也可以进行重用。

实例解析

下面以模拟系统登录业务为例, 结合上述Android工程的MVC设计思想进行实例解析。工程结构如图2所示。

在项目结构中, communication包为通讯模块, 根据系统的服务器支持不同, 可以选择Socket通讯模式或Web Service调用。Service包为系统的业务实现类。Support包下包括中间数据池和控制器。Utils包为工具类。View包下放所有页面的类。

根据登录的业务需求结合项目的结构?设计登录的序列图如图3所示。

当用户在登录Activity输入登录信息点击确定后, Login Activity先将登录信息放入数据池, 然后通知控制器调用业务层的登录方法。业务层在接收到控制器的调用后从数据池中取出登录信息并做处理, 然后通知通讯模块去调用服务器的登录方法。通讯模块负责调用服务器的登录方法并将服务器返回的数据传回给业务层, 业务层再将数据放回到中间数据池。这时控制器从返回的数据判断登录方法执行的状态是成功还是出现异常。如果出现异常则给用户进行提示, 如果正常跳转到应用首页, 完成整个登录操作。

结语

MVC结构 篇4

MVC设计模式 (模型-视图-控制器模式) 以其模块化的设计与编码、功能扩展的灵活性、系统快速有效的维护性等方面的优点。然而MVC模式本身就是一个非常复杂的系统, 开发基于MVC模式的系统比简单的JSP开发要复杂许多, 它需要更多的时间学习和掌握, 同时新东西的引入会带来新的问题, 所以采用MVC实Web应用时, 最好选一个现成的MVC框架, 在此之下进行开发, 从而取得事半功倍的效果。

(二) MVC模式

MVC模式属于结构型设计模式, 即将应用类和对象组合获得比较复杂的结构。它源于传统的面向对象语言Small Talk-80, 它是第一个将表示逻辑和业务逻辑分开的设计模式。MVC (Model-View-Controller) 设计模式的出现使得模型层、视图层和控制层各层层次分明, 各个模块之间相互独立, 提高了灵活性和可重用性。MVC的核心是实现三层甚至多层的松散祸合, 它将应用程序抽象为三个部分, 三者既分工又合作地完成用户提交的每项任务。

1. 模型 (Model) 模型是应用程序的核心部分, 表示一个应用系统的数据, 并包含访问、维护和管理这些数据的逻辑。模型封装了应用问题的核心数据、逻辑关系和业务规则, 提供了完成问题处理的操作过程。一方面, 模型为控制器所调用;另一方面, 模型还为视图获取显示数据而提供了访问其数据的操作。

2. 视图 (View) 视图是实现模块的外观, 把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户, 此模块承担连接用户和应用程序之间的接口角色。一方面, View模块将用户的请求传递给应用程序, 触发应用程序对用户请求的处理逻辑;另一方面, View模块将应用程序对用户请求的处理结果返回给用户。当模型发生改变时, 视图也随之改变, 以维持系统数据的一致性。

3. 控制器 (Controller) 控制器是联系模型与视图之间的纽带, 它根据用户的操作判断要执行的业务逻辑, 它接受客户端的请求, 把用户数据传给业务逻辑模块, 并调用相应的业务逻辑模块进行处理, 最后根据用户所需要的响应调用相应的视图模块生成结果页面, 返回给客户端。

(三) Struts框架

1. Struts介绍

Struts是一个开源的MVC实现, 它提供了可在应用中继承、修改的基本控制器的功能。除了提供MVC的实现, Struts还提供了一些有价值的定制标签库, 比如模版标签库。逻辑标签库包含有迭代循环、if-then-else结构的定制标签。HTML标签库是许多有价值定制标签的代表, 包括实现form和用于Struts form处理、效验的定制标签。

2. Sruts框架的组件

Struts中使用的核心组件有:Action Servlet、Action、Action Form、Action Mapping、Action Forward。

(1) ActionServlet类是Struts框架的核心组件, 它充当框架的控制器, 用户向服务器发出请求时, 实际上是将请求发到Action Servlet, Action Servlet再将请求信息发送给与请求对应的Action类进行相应的业务操作。

(2) Action类真正实现应用程序的事务逻辑, 负责处理客户端的请求。

(3) ActionMapping类将特定请求映射到特定Action的相关信息存储在Action Mapping中, Action Servlet将Action Mapping传送到Action类的execute () 方法, Action将使用Action Mapping的find Forward () 方法, 此方法返回一个指定名称的Action Forward, 这样Action就完成了本地转发, 若没有找到具体的Action Forward, 就返回一个NULL。

(4) ActionForm类是Struts框架提供的DTO (数据传输对象) , 用于在视图和控制层之间传递HTML表单数据。Action Form还具有表单验证功能, 可以为模型过滤不合法的数据。

(5) ActionForward类代表控制指令所导向的一个来源, 也就是说对将要转向的视图地址的一个封装, 它的目的是控制器将Act ion类的处理结果转发至目的地。

(四) Sruts的工作流程

Struts是基于MVC设计模式的应用, 可以说是MVC设计模式功能的完美实现。MVC减弱了业务逻辑接口和数据接口之间的耦合, 可以让视图层更富于变化。结合Struts的体系结构, 我们可以得到Struts应用的一般工作流程。

ActionServlet是一个Front Controller, 它是一个标准的Servlet, 它将request转发给Request Processor来处理。Action Mapping是Action Config的子类, 实质上是对struts-config.xml的一个映射, 从中可以取得所有的配置信息。Request Processor根据提交过来的url, 如*.do, 从Action Mapping中得到相应的Action Form和Action。然后将request的参数对应到Action Form中, 进行Form验证。如果验证通过, 则调用Action的execute () 方法来执行Action, 最终返回Action Forward。

ActionForm使用了View Helper模式, 是对HTML中Form的一个封装。其中包含有validate方法, 用于验证Form数据的有效性。Action Form是一个符合Java Bean规范的类, 所有的属性都应满足get和set对应。对于一些复杂的系统, 还可以采用Dyna Action Form来构造动态的Form, 即通过预制参数来生成Form, 这样可以更灵活地扩展程序。

ActionErrors是对错误信息的包装, 一旦在执行Action或者Form.validate () 中出现异常, 即可产生一个Action Error并最终加入到Action Errors。在Form验证的过程中, 如果有Error发生, 则会将页面重新导向至输入页, 并提示错误。Action Form Bean中显示了Model的属性, 但它们不包含任何持续性逻辑或者业务逻辑。Action Form只是用来在Model、View之间传递Model信息。

Action是用于执行业务逻辑的Request Handler, 它是一个Back-end Controller, 每个Action都只建立一个instance。Action不是线程安全的, 所以不应该在Action中访问特定资源。一般来说, 应该使用Business Delegate模式来对Business tier进行访问以解除耦合。Struts提供了多种Action供选择使用。

页面显示是由一系列JSP组成的。为了使View的开发更加容易, Struts提供了一整套JSP自定义的tag库 (Tag Lib) 。这些tag库使我们能很容易地提供完全国际化的用户界面, 这些界面通常是与Model组件交互。Struts提供丰富的JSP标签库, 包括Html、Bean、Logic、Template等, 这有利于分开表现逻辑和程序逻辑。

(五) 结束语

MVC模式越来越得到人们的广泛应用, 特别是大型商业网站以及企业管理系统, 本文以对MVC模式进行了简要的介绍, 并对Struts框架以及Struts框架的应用进行了说明。MVC模式作为一个复杂的系统, 如果能够在一个MVC框架下进行开发, 例如Struts框架, 会得到事半功倍的效果。

摘要:Struts是一个广泛应用于基于MVC模式的Web应用程序框架。文章首先说明MVC设计模式的组成部分, 然后描述了Struts的一般组件体系结构, 最后着重介绍了应用Struts框架进行开发的一般工作流程。

关键词:Web应用,MVC设计模式,Struts框架

参考文献

[1]王力生, 沈骏.STRUTS框架应用中Web服务扩展模型的研究[J].微型机与应用, 2004, (10) :13-15.

[2]Kevin Duffey, Vikram Goyal, Ted Husted.JSP站点设计编程指南[M].电子工业出版社, 2002.

MVC结构 篇5

当前网络规模的不断扩大,其发展日益呈现出异构性、动态性、服务层次多样性的特点。具体表现在:

(1)多种信息的融合支持。随着网络规模和应用的日趋复杂,现代网络系统的管理已经从单一的网络管理需求发展到包括拓扑管理、流量管理、信息管理、系统管理、安全管理等多种管理需求,面对如此繁多复杂的管理系统,如何有效地整合这些信息资源,融合海量数据并从中提炼出对网络管理有直接指导意义的信息是十分迫切的要求。

(2)综合态势管理支持。网络管理要求提供多样化的管理行为,要求网络态势管理做到对象可见、状态可视和行为可控。对象可见,就是管理系统中包含被管对象的详细信息,包括网络拓扑信息、网络资源信息等;状态可视,就是要知道网络的运行态势,了解网络流量、故障、网络资源的运行状况等;行为可控,就是可以控制网络和应用系统的行为。

(3)多环境、多系统互操作、协同管理支持。现代网络系统在大规模的、分布的、异构的复杂网络和多管理域环境下运行, 这就要求管理能够跨网络、跨管理域运行,并解决多管理域间的互通和互操作问题。

(4)对网络系统管理个性化需求的快速响应支持。信息系统的管理功能越来越丰富,规模越来越大,用户二次开发需求越来越高。这需要解决管理软件开发效率、软件可维性和可扩充性等问题。

这些变化对现代网络管理的应用和任务的分布性、网络管理规模的可伸缩性、网络管理系统间的互操作性、网络管理方式的动态性和开放性提出了更高的要求。

将MVC设计思想应用到现代综合网络管理中有以下鲜明的特点:层之间的松耦合使得网络管理中的各个层次在其需求变化时可以单独改变;网络管理功能的扩展和性能扩充比较容易,提高了灵活性和可伸缩性;使网络管理系统的性能下降现象或故障表现局部化;网络管理中部分资源可被有效的共享和重复利用。包括数据库连接、线程甚至组件本身;降低了部署和维护的开销;有利于明确开发人员分工,降低开发难度;网络管理的客户端非常轻,适合于Internet接入。

本文首先提出了四层结构的综合网络管理体系结构INMA,在该体系结构的基础上进一步研究了MVC构建技术、大型应用系统管理技术和分布应用系统管理与系统间信息交换协议技术,并设计了MVC构架网络管理系统。

1 网络管理体系结构INMA

综合网络管理框架是一种“集中式管理、分布式控制”的管理模型,由四层组成,如图1所示。位于最底层是被管对象层,它由多个网管代理(Agent)和各种资源组成,网管代理负责收集资源的信息和响应网元管理者发过来的轮询信息,同时还要在被管资源出现故障时产生Trap信息,向网元管理者发出告警。它支持的网络管理协议有TCP/IP的简单网络管理协议SNMP、TL1(Transaction Language 1)、命令行接口协议CLI(Command Line Interface),基于OSI的通用网络管理协议CMIP和CORBA等。

第二层网元管理层包括多个网元服务器,它们是网络中不同的物理域的子管理者,每一个网元服务器负责管理各自域内的所有资源,完成资源分布、资源配置和资源状态信息的收集、转发和事件报告等功能。接收上层网络管理层发布的策略信息和控制信息。

位于第三层网络管理服务器由众多分布的网络管理服务构成,网络管理服务提供两大类网络管理功能,一类是常规网络管理服务,一类是用户定制的网络管理服务,这两类服务都被封装成标准的Web服务供外部系统使用。

最高层的系统管理服务器由多个应用系统管理代理(System Management Agent SMA)和资源数据库组成。一个SMA管理一个应用服务。SMA查询资源数据库,建立应用相关的资源列表;通过平台API与下层的网络管理服务器进行交互,完成资源状态更新和信息查询。

2 网络管理体系结构INMA关键技术

2.1 MVC设计模式的应用技术

MVC(Model/View/Control)体系结构是为那些需要为同样的数据提供多个视图的应用程序而设计的。MVC体系的目的是从用户输入控制中分离用户显示信息,它强制性地使应用程序的输入、处理和输出分开,MVC应用程序被分成三个核心部件:模型、视图、控制器,它们各自处理自己的任务。

(1)视图部分使用JSP动态页面设计技术实现,通过获取用户输入,并将请求传递给控制器,控制器将业务逻辑处理交给模型,控制器将模型处理后的结果转交表现视图,视图通常采用JSP标记语言,由视图组织页面返回给浏览器。

(2)控制器接受用户的输入并调用模型完成用户的请求,所以当通过GET和POST方法发送HTTP请求时,控制器对输入参数进行验证后调用模型构件去处理请求,最后将模型的执行结果通知视图,视图根据控制器提供的数据决定如何为用户产生视图。

(3)模型表示企业数据和业务规则,在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

在综合网络管理系统中使用MVC设计模式能够有效地对管理系统软件进行解耦合,相对独立的视图、模型和控制器非常有利于进行单元测试。MVC对于建立稳定和灵活性更强的综合网络管理系统有着重要意义。

2.2 大型应用系统管理技术

大型网络应用系统的特点表现在用户多、结点多、资源丰富,通常与应用相关的资源跨多个物理网络,由多个网元服务器共同管理。这些网络应用系统需要端到端的服务质量保障,需要在公共网络上构造高安全的私有安全系统。

定义1 物理管理域(Physical Domains)定义为任一网元服务器管理区域内的所有资源,对于任意的网元服务器NESi,它对应的管理域表示为PDNESi

定义2 虚拟管理域(Virtual Domains)对于任意应用服务Aj,与Aj相关的所有资源所在的区域构成了服务Aj的虚拟管理域,表示为VDAj

从而可以得到物理管理域和虚拟管理域之间有以下的映射关系。

(1)VDAj={PDNES1,…,PDNESk},k∈[1,N],N为网元服务器的总数。

(2)对任意两个应用服务AiAj,VDAiVDAj≠〉。也就是说两个应用服务的虚拟管理域可能重叠。

应用服务是由与之相关的所有资源构成的。

定义3 应用服务Ai的资源集合RSi={Ri1,…,Ril}表示为与应用服务Ai相关的所有资源的集合。对任意RSijRSijRSi,表示为由网元服务器NESj管理的应用服务Ai的资源子集。对任意两个RSijRSikRSijRSik≠〉,也就是说,多个网元服务器管理的资源可能重叠。

一个应用服务代理SMA管理一个应用服务。应用服务代理查询资源数据库中建立的与应用相关的资源列表;同时通过平台API得到下层网络管理服务器的事件通知后,更新它所维护的服务。

资源代理(Resource Broker RB)的主要作用是访问资源目录服务。SMA给RB发送它所包含的服务资源列表,RB然后就在应用服务和相应的网元服务器之间建立了联系。

2.3 分布应用系统管理与系统间信息交换协议技术

跨Internet/WAN的大型应用系统其系统规模和提供的应用服务十分复杂,它通常分布在多个自治网络环境中,而各个自治网络之间通常设置防火墙和访问控制,在此基础上构建分布式网管平台,一个最大问题是如何解决分布式网管平台中的信息交换问题,处于自治网络环境中的网元服务器如何和处于另外一个自治网络环境中的网络管理服务器之间相互通信、交换信息。

SOAP(Simple Object Access Protocol) 使用XML和标准规范来定义不同系统之间的沟通,封装通信协议,并且通过HTTP传送到远程的系统之中,可解决以往难以解决的集成的困难。另外,HTTP使用的端口 80是所有系统接受的标准,即使是使用防火墙也会允许使用Port 80来进行Internet/Intranet的存取工作,但是对于其它的Port却可能使用防火墙来阻挡,所以SOAP可以顺利穿越防火墙进行数据通信和远程调用,而其他的组件技术却做不到。SOAP是定义如何封装信息的标准,而使用SOAP功能规格封装的信息称为SOAP包(SOAP Packet)。SOAP包由标准而固定的元素组成,然后使用标准的规则封装交换的信息,因此使用SOAP标准沟通的双方就可以遵照SOAP标准而解析并且了解SOAP包中封装的信息意义,进而达成交换信息的目的。

3 基于MVC综合网络管理系统的实现技术

综合网络管理服务器由三个构件组成,它们是业务处理、业务控制与界面处理,如图2所示。业务控制构件响应浏览器请求,调用相应的业务处理构件完成请求要求的操作,决定返回的页面;业务处理构件完成业务控制构件交给的具体业务,这些业务可能包括与网络上的其它系统通信、访问数据库等等;界面处理构件在业务控制构件的指导下,根据业务处理构件的执行结果,生成返回给浏览器的页面。构件的结构符合MVC设计模式INMA服务类图如图2所示。

业务控制工作由BussinessRequest(业务请求)类、BussinessController(业务控制)类完成。BussinessInfoMonitorController(业务信息监视控制)类、SystemStateMonitorController(系统状态监视控制)类、BussinessInfoQueryController(业务信息查询控制)类、QueryCommandController(查询指令控制)类、ControlCommandController(控制指令控制)类、RegisterCommandController(注册指令控制)类、SettingController(配置控制)类继承BussinessController(业务控制)类,以响应浏览器请求,调用相应的业务处理类完成要求的操作,并返回相应的JSP页面。

界面处理工作由TopoDisplayApplet(拓扑显示程序)类、TrafficMonitorDisplayApplet(流量监测显示程序)类和FaultManageDisplayApplet(故障管理显示程序)类等一系列JSP文件完成。在业务控制类的指导下,根据业务处理类的执行结果,生成返回给浏览器的页面。

业务处理工作由BussinessProcess(业务处理)类及其子类SystemStateMonitorProcess(系统工况监视处理)类、BussinessInfoMonitorProcess(业务信息监视处理)类、BussinessInfoQueryProcess(业务信息查询处理)类、QueryCommandProcess(查询指令处理)类、ControlCommandProcess(控制指令处理)类、RegisterCommandProcess(用户注册指令处理)类、SettingProcess(配置处理)类完成。这些类封装为JavaBean,完成业务控制类交给的具体业务。

其它辅助类还有JDBCAccess(JDBC访问)类、CommandListener(指令监听)类、RMICommunication(RMI通信)类、SOAPCommunication(SOAP通信)类、WatchDataTransfer(实时数据接收类)及其接口、MonitorException(监控异常)类,用于提供一些底层服务,辅助业务处理类完成具体业务。

其中,BussinessRequest(业务请求)类负责存储业务请求数据。BussinessController(业务控制)类控制监控服务流程,是所有业务控制类的父类。BussinessInfoMonitorController(业务信息监视控制)类控制业务信息监视服务流程。响应浏览器请求,调用相应的业务处理JavaBean完成业务信息监视需要的查询操作,调用相应的JSP页面进行显示。BussinessInfoMonitorController类是BussinessControl类的子类。它们类定义如下。

4 结束语

网络管理在组网、建网和管理维护中的重要地位已成为计算机与信息技术领域专家的共识。综合网络管理集通信技术、网络技术和信息处理技术于一身,通过调度和协调资源(信息、设备、应用等),进行配置管理、故障管理、性能管理、安全管理、应用管理、系统管理、信息管理等多方面的管理,达到网络信息系统可靠、安全和高效运行的目的。本文提出了四层结构的综合网络管理体系结构INMA,在该体系结构的基础上进一步研究了MVC构建技术、大型应用系统管理技术和分布应用系统管理与系统间信息交换协议技术等关键技术,并实现了MVC构架综合网络管理系统。

摘要:针对当前对网络管理的日益需求,提出了适应大型通信网络和网络应用的综合网络管理体系结构INMA,在该体系结构基础上,研究了MVC设计模式在综合网络管理中的应用技术、大型应用系统管理技术和分布应用系统管理与系统间信息交换协议技术等关键技术,设计并实现了基于MVC架构的网络管理系统。

关键词:MVC,系统管理代理,SOAP

参考文献

[1]Kar G,Keller A,Calo S.Managing Application Services over ServiceProvider Networks:Architecture and Dependency Analysis[C]//Pro-ceedings of the 2000 IEEE/IFIP Network Operations and ManagementSymposium(NOMS2000),Honolulu,HI,USA,2000:61-74.

[2]Keller,Kar G.Classification and Computation of Dependencies for Dis-tributed Management[C].The Fifth IEEE Symposium on Computersand Communications(ISCC 2000),France July 4-6,2000,Antibes.

[3]Ktker S,Paterok M.Fault isolation and event correlation for integratedfault management[C]//IM’97,1997.

[4] Lobo J, Bhatia R, Naqvi S.A policy description language[C]//Proc. of AAAI, Orlando, FL, July.1999.

[5] Strassner J,Elleson E.Terminology for describing network policy and services[R].Technical Report draft-strassner-policy-terms-01.txt, IETF, February 1999.

[6] Paul V Biron, Ashok Malhotra. XML Schema Part 2: Data Types. 2[EB/OL].[2001-05].http://www.w3.org/TR/2001/REC-xmlschema-2-20010502.

[7] Fielding R, Gettys J, Mogul J C,et al.Hypertext Transfer Protocol-HTTP/1.1. RFC 2616[S]. January 1997.

[8]Brown A,Kar G,Keller A.An Active Approach to Characterizing Dy-namic Dependencies for Problem Determination in a Distributed Appli-cation Environment[C].IEEE/IFIP International Symposium on Inte-grated Network Management,2001:377-390.

[9] Paul V Biron, Ashok Malhotra. XML Schema Part 2: Data Types.[EB/OL].[2001-05].http://www.w3.org/TR/2001/REC-xmlschema-2-20010502.

MVC结构 篇6

随着计算机与互联网的普及,商家为了探求新经营模式,创造了电子商务模式,同时人们对信息与商品的需求促使他们产生网上购物的欲望。电子商务是一个迅速增长的新兴行业,电子商务利用简单、快捷、低成本的电子通讯方式,买卖双方无须见面,而通过互联网进行各种商贸活动。

电子拍卖系统正是这样一个电子商务平台,只要将系统部署在互联网上,全球的客户都可以在本系统上发布想销售的商品,也可以对拍卖中的商品参与竞价。整个过程无须人工干预,由系统自动完成。本文所设计的系统开发语言选用J2EE,所以采用Myeclipse为主要开发工具,然后结合Tomcat,Mysql与Windows XP操作系统进行。既考虑了系统的需求,又兼顾了运行的效率,以及今后系统的功能拓展等。

1 系统概述

为了实现网络化、科学化、现代化的电子拍卖系统,使用My SQL和J2EE中的Struts2+Hibernate+Spring技术,编写一个B/S结构的电子拍卖系统。系统的总体设计是提供给上网浏览者一个高效率、能进行丰富网上活动的网站,为网站用户提供及时发布、查询信息的平台。

系统目标如下:

1)应用网络的优势,开发本电子拍卖系统,模拟了淘宝系统部分功能,抽取了实际电子拍卖系统的部分功能,但没有提供个人身份认证等细节问题,本系统主要实现了电子拍卖系统中的核心功能。

2)网站用户能够在网站首页及时浏览拍卖商品的信息,并可以随时注册账号,登录网站发布拍卖信息。

3)网站有新闻公告模块,除了拍卖信息,用户可以浏览、阅读本站公告和时事新闻。

4)本系统要求用户参加拍卖之前,必须登录系统,并进行登录验证。本系统通过用户名和密码管理登录。用户的权限控制并没有放在控制器中完成,而是通过Spring的AOP框架控制。

5)注册用户可以添加用户物品和物品种类。添加之前必须登录系统,控制器中并不判断用户是否登录,而是由AOP框架提供的代理完成权限检查。

非注册用户可以浏览当前拍卖中的物品以及流拍的物品。

注册用户可以参与竞价,参与竞价系统将提供邮件通知用户。

2 系统功能

根据前面系统的分析,可将其划分成前台和后台两部分。前台功能主要为网站注册用户提供,后台功能为管理员提供,系统功能模块图如图1所示。

软件的主要模块和功能如下:

前台功能:

1)普通用户模块:浏览、搜索拍卖信息,浏览拍卖物品。

2)注册会员模块:浏览、搜索、发布、修改和删除拍卖物品和竞价信息,修改个人密码信息。

后台功能:

1)物品管理:能查看拍卖物品信息发布详细情况,并可作出删除管理。

2)注册会员管理:查看网站系统注册会员,并可作出删除管理。

3)物品种类管理:添加、修改、浏览、删除物品种类。

3 数据持久化model层实现

下面以竞价表为例。

4 小结

本文利用J2EE技术和MYSQL后台数据库等工具建立的电子拍卖系统,缩短了生产商与消费者之间的距离,有利于商品的快速流通和降低整体分销成本。同时,该系统建立了多种竞价模式,商家可以方便地发布商品,买家可以自由地选择商品竞价,最终购买。

参考文献

[1]郑阿奇.J2EE应用实践教程[M].电子工业出版社,2009.

[2]张洪斌.例解Java web开发技术精髓[M].清华大学出版社,2008.

浅谈MVC框架模式 篇7

MVC模式是"Model-View-Controller"的缩写, 中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。

(1) 视图 (View) :视图是用户看到并与之交互的界面。对老式的Web应用程序来说, 视图就是由HTML元素组成的界面, 在新式的Web应用程序中, HTML依旧在视图中扮演着重要的角色, 但一些新的技术已层出不穷, 它们包括Macromedia Flash和像XHTML, XML/XSL, WML等一些标识语言和Web services。

(2) 模型 (Model) :模型表示企业数据和业务规则。在MVC的三个部件中, 模型拥有最多的处理任务。例如它可能用像EJBs和Cold Fusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的, 就是说模型与数据格式无关, 这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用, 所以减少了代码的重复性。

(3) 控制器 (Controller) :控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时, 控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求, 然后确定用哪个视图来显示模型处理返回的数据。

以MVC为框架的Web应用如图1所示:

1.1 MVC框架模式的优点

(1) 可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化, 从而使所有关联的视图和控制器做到行为同步。

(2) 视图与控制器的可接插性, 允许更换视图和控制器对象, 而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。

(3) 模型的可移植性。因为模型是独立于视图的, 所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。

(4) 潜在的框架结构。可以基于此模型建立应用程序框架, 不仅仅是用在设计界面的设计中。

1.2 MVC框架模式的缺点

(1) 增加了系统结构和实现的复杂性。对于简单的界面, 严格遵循MVC, 使模型、视图与控制器分离, 会增加结构的复杂性, 并可能产生过多的更新操作, 降低运行效率。

(2) 视图与控制器间的过于紧密的连接。视图与控制器是相互分离, 但确实联系紧密的部件, 视图没有控制器的存在, 其应用是很有限的, 反之亦然, 这样就妨碍了他们的独立重用。

(3) 视图对模型数据的低效率访问。依据模型操作接口的不同, 视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问, 也将损害操作性能。

(4) 目前, 一般高级的界面工具或构造器不支持模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的, 从而造成MVC使用的困难。

2 现有的MVC框架

MVC在J2EE里已经广泛使用, 并不断有新的MVC框架发布。目前最流行的MVC框架Struts和Spring MVC。

2.1 Struts

Struts是Apache基金会Jakarta项目组的一个Open Source项目, 它采用MVC模式, 能够很好地帮助java开发者利用J2EE开发Web应用。和其他的java架构一样, Struts也是面向对象设计, 将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs框架的核心是一个弹性struts的控制层, 基于如Java Servlets, Java Beans, Resource Bundles与XML等标准技术, 以及Jakarta Commons的一些类库。Struts由一组相互协作的类 (组件) 、Servlet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准, 可以说是一个传统MVC设计模式的一种变化类型。

2.2 Spring MVC

Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构, 可以选择是使用内置Spring Web框架还可以是Struts这样的Web框架。通过策略接口, Spring框架是高度可配置的, 而且包含多种视图技术, 例如Java Server Pages (JSP) 技术、Velocity、Tiles、i Text和POI。Spring MVC框架并不知道使用的视图, 所以不会强迫您只使用JSP技术。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的角色, 这种分离让它们更容易进行定制。

3 结语

当今社会对于软件开发是一个分工很细的工作, 在开发过程中不同的人负责不同的模块开发, 比如有专门的人负责业务逻辑, 有专门的人负责图形界面, 所以现在的开发人员都是某一方面的专家。引入MVC模式之后, 逻辑层与表现层分离开来, 业务逻辑不再关心具体的显示层面, 逻辑层的代码量消除了膨胀隐患, 表现层也可交由其它非业务人员自由调整, 最后完美整合, 在层次分工上, 比传统模式更加清晰, 利于维护, 在项目有升迁移植改造需求时, 由于业务逻辑层不与表现层直接关联, 故可直接使用已有的业务逻辑, 大大减少了重构成本。越大的项目中MVC的作用表现的越明显。

参考文献

[1]张红实, 何桂兰.Java Web应用开发[M].北京:电子工业出版社, 2010.

上一篇:临床医学留学生下一篇:适切教学