基于MVC模式的Joomla!框架在Web系统组件扩展开发中的应用研究
2009-06-17胡前进蔡永州吴敏
胡前进 蔡永州 吴 敏
【摘要】文章以Joomla!框架如何在Web系统中进行组件扩展开发为核心问题,从组件扩展开发的设计思想﹑技术方法、扩展机制方面进行讨论,并以某外语教育出版社高等英语教学网专家答疑组件扩展开发为例,具体阐述Joomla!框架组件扩展机制在Web系统扩展开发中的应用流程和实现方法。
【关键词】MVC模式;Joomla!;Web系统;专家答疑组件
【中图分类号】G40-057 【文献标识码】A 【论文编号】1009—8097(2009)06—0097—04
软件开发中,通常用耦合度和内聚度作为衡量模块独立程度的机制。传统的Web系统开发,常常围绕着事件驱动的界面表示层来组织开发,此开发模式把数据处理、程序功能和界面层代码完全杂糅在一起,不利于模块间的复用,降低了系统各模块间的独立性,系统模块间具有高耦合度。MVC模式由于把数据处理、程序输入输出控制和数据表示分离开来,并描述了三者之间的通讯方式,提高了系统各模块间的独立性与模块的可复用性,很好的解决了上述传统Web系统开发中所遇到的问题。
在Web系统开发中,对于MVC模式的实现主要有三种技术框架:基于ASP.NET的框架、基于PHP的框架、基于JSP的框架。基于ASP.NET的框架的最大弱点是不具有跨平台性,依赖于Window平台,安全性与稳定性较弱且版权使用费用昂贵;基于JSP的框架的最大弱点是开发周期长,技术实现复杂,只合适大型Web系统项目应用;而实现MVC模式的PHP的框架由于具有跨平台性、安全性与稳定性高、开发周期短、开源(软件免费使用)等特征在中小型Web系统开发中得到了广泛的应用。作者通过文献调研发现,研究ASP.NET的框架与JSP的框架在Web系统开发中应用的文献 较多,而对于实现MVC模式的PHP框架在Web系统开发中的应用研究则很少。
目前,基于MVC模式的PHP技术框架众多,如Symfony、Zend Framework、Joomla!、Drupal等,开发者依据开发需求灵活的选择框架,本文则选取Joomla!框架, 探讨其在Web系统开发中如何进行组件扩展开发。首先,本文分析了基于MVC模式的Joomla!框架在Web系统扩展开发中的应用 设计思想、技术方法;其次,重点分析了Joomla!框架在Web系统扩展开发中的扩展机制;最后,以某外语教育出版社高等英语教学网专家答疑组件扩展开发为案例,剖析了Joomla!框架扩展机制在Web系统扩展开发中的实现。
一 Joomla!框架应用于Web系统的组件扩展设计
由于Joomla!框架具有自带的用户注册管理、新闻发布、媒体管理等组件,并且拥有优秀的扩展能力等优势,提高了开发的效率和灵活性,因此它在中小Web系统开发中得到了广泛应用。Joomla!框架的组件概念即是完成一定功能的应用程序。下面围绕Joomla!框架的Web组件扩展问题分别对Joomla!框架应用于Web系统组件扩展开发的设计思想、技术方法进行探讨。
1 Joomla!框架组件扩展的MVC模式设计思想
为了克服传统Web开发中将数据处理、程序功能和界面代码完全杂糅在一起的问题,Joomla!框架应用于Web系统组件扩展开发遵循MVC模式设计思想,如图1所示,包含三个部分:模型(Model)﹑视图(View)和控制器(Controller) ,分别对应于内部数据﹑数据表示和输入输出控制。
模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法;视图是模型的外在表示,一个模型可以对应一个或者多个视图,视图是程序系统与外界的接口;控制器起到 沟通模型和视图的作用,用于控制应用程序的流程。它处理来自用户的行为事件和数据模型的改变事件,并对事件进行响应。
如图1所示,Joomla!框架遵循MVC设计思想进行Web系统扩展开发采用如下的数据交换机制:控制器——视图和控制器——模型方法。控制器是视图和模型之间进行数据交换的纽带,在控制器——视图方法中,控制器根据用户输入直接调用不同视图改变响应流程,或与模型交互后获得需要显示的数据,再调用视图改变响应流程;而在控制器——模型方法中,控制器与模型交换,控制器将输入数据传递给模型处理,控制器中也可以从模型中抽取数据。
2 Joomla!框架组件扩展的技术方法
采用Joomla!框架进行Web系统的组件扩展开发,要求开发者编程语言必须使用PHP技术,数据库使用MySQL、 Web服务器通常推荐开源的(免费使用)的Apache。Joomla!官方发布的最新框架版本采用分层架构机制:框架层、应用层、扩展层,框架层由Joomla!的基本类库和插件组成;应用层由应用程序类构成;扩展层由组件、模块、模板构成,其架构机制如图2所示。
Joomla!框架应用于Web系统扩展开发的方法对于Web系统交互界面设计人员来说是采取模板定制方案,将设计好的Web页面与CSS样式遵循Joomla!模板定制机制,将已经设计好的模板嵌入到Joomla!框架中,依据客户的不同需求进行个性化Web系统外观的设计;对于Web系统编程人员来说,Joomla!框架已经为Web系统中最常用的功能进行了实现 ,如果Web系统开发有另外的功能需求,可以使用Joomla!框架进行Web系统的扩展开发,即遵循Joomla!框架扩展开发的规范与机制编写组件、模块、插件来满足Web系统开发的功能需求。
二 Joomla!框架应用于Web系统的组件扩展机制
对于Web系统编程人员来说,应用Joomla!框架进行Web系统扩展开发需要遵循Joomla!框架扩展开发的规范与机制开发组件、模块、插件来满足Web系统的功能需求。Joomla!框架最重要的扩展机制当属组件扩展机制,图3所示为Joomla!框架的组件扩展机制MVC模式图。
Joomla!框架中JModel﹑JController﹑ JView三个类分别对应于图3中的Model﹑Controller﹑ View部分,其中JController类是JModel类和JView类数据交换的纽带,这三个类与Joomla!框架中的JDispatcher类, JRoute类等互相配合,进行Web组件扩展开发。
JModel类是Joomla!框架组件扩展机制的事务逻辑处理模块,其是最终负责处理客户请求的模块。它能够处理用户的大多数需求,快速的从数据库中获取请求数据,协调事务,保证应用程序各部分间的事务组合;JController类是Joomla!框架组件扩展机制的控制模块。此模块首先接收客户端发送的与网络协议相关的请求,然后解析请求并转换为事物逻辑模块(JModel)的输入参数, 调用相应的事务逻辑模块进行处理,最后根据事物逻辑模块的处理结果调用相应的用户视图模块(JView)生成结果页面,返回至浏览器;JView是Joomla!框架组件扩展机制的用户视图模块。此模块的主要功能是根据事务逻辑模块(JModel)处理结果生成返回至客户端的页面。
开发者应用Joomla!框架进行组件扩展开发,都需要继承JModel类、JView类、JController类,形成如图4所示的Joomla!框架组件扩展开发机制图,开发者借助于图4的流程,运用PHP编程语言对上述三个类分别进行继承,完成Web系统扩展组件的开发。开发者依据此模式进行Web系统开发,提高了代码的可复用程度,节省了开发的时间,提高了开发效率;Joomla!框架通过提供扩展组件的方式来满足Web系统的功能扩展,提高了系统各个部分之间的独立性,降低了Web系统模块间的耦合度。
三 组件扩展案例——高等英语教学网专家答疑组件
本文以某外语教育出版社高等英语教学网专家答疑组件的扩展开发为案例,具体阐述Joomla!框架组件扩展机制在Web系统组件扩展开发中的应用流程和实现方法。
1 专家答疑组件的扩展开发需求
为教师的教学, 和学生的学习提供异步专家指导;专家也可以发表指导英语教学和学习的文章;对于教师和学生的问题应分开显示;对于教师和学生的提问应有归类和按类别显示功能;支持关键字搜索;页面支持图片与附件功能;教师与学生提问审核功能;教师与学生的提问具有优先发布功能;具有创建管理问题种类功能。
2 专家答疑组件的组成
Joomla!框架的扩展组件由后台管理与前台显示两大部分构成。专家答疑组件的后台管理具有对问题的管理﹑分类﹑审核﹑ 优先发布﹑ 与上传附件功能;专家答疑组件的前台显示专家的指导和教师与学生的提问,并显示问题的搜索和分类界面。
3 专家答疑组件的数据库设计
Joomla!框架的组件扩展开发使用MySQL数据库,在已存在的数据库中新建组件开发所需要的表。专家答疑组件,在已存在的数据库中新建专家答疑数据表,它包含主键标识符、问题标题、问题答案、问题分类、疑问主体、关键词、创建时间这些字段。通过继承Joomla!框架中的JTable类,将得到一个专家答疑表类文件存放在Tables文件夹中,它将在组件扩展的Model部分存储数据方法中得到调用。
4 专家答疑组件的后台管理开发
遵循Joomla!框架的组件扩展开发机制和流程,应该包括三个部分:Model、Controller和View,进行组件开发的时候,通常创建Models文件夹存放 组建开发中的Model文件;Controllers文件夹存放 组件开发中的Controller文件;Views文件夹存放 组件开发中的View文件。下面将以专家答疑组件为例具体阐述Model、Controller、View这三个部分的开发。
专家答疑组件的Models文件夹中包含有QuestionanswersModel和QuestionanswerModel文件,它们都继承自Joomla!框架中的Jmodel类,负责对问题管理列表和单个问题进行数据逻辑处理。这两个类除了拥有共同的Jmodel的父类方法,还共同拥有数据保存方法、数据删除方法,代码的可复用程度得到很大提高。对于 处理多个问题列表的QuestionanswersModel类还具有分页方法,方便用户进行浏览。在数据保存方法中通过对专家答疑表类的调用,将信息绑定到相应的数据库的表中,简化了开发者对于 数据保存的处理,提高了开发者的效率。
专家答疑组件的Controllers文件夹中包含QuestionanswerController文件,这个文件包含一个QuestionanswerController类,它继承自Joomla!框架中的Jcontroller类。除了文件夹之外,还有一个默认的QuestionansersController类,Joomla!组件扩展开发,通常把这个默认的类放在Controllers文件夹外,它的作用是默认情况下,调用组件Views文件夹下问题管理列表这个页面。而QuestionanswerController类是通过一系列方法与专家答疑组件中的Model类进行联系,从而调用专家答疑组件中的对应的单个问题页面将结果返回给浏览器。这个类除了拥有父类Jcontroller的方法外,还具有对于 问题进行编辑的方法、对于 问题进行保存的方法、对于 问题进行删除的方法 、取消操作的方法。对于 问题的添加和编辑方法,通过设置调用专家答疑组件中的相关View文件夹下的类,直接将页面返回给浏览器;对于 问题进行保存、删除的方法是通过调用专家答疑组件中的QuestionanswerModel中的数据保存和删除方法来完成;对于 取消操作的方法是通过进行 地址的重新定位来实现。在Joomla!组件开发中,Controllers文件夹下的各个控制类文件都拥有上述的共同方法,在开发的时候,除了调用不同的Model和View外,其他的代码都大致相同,代码在很大程度上可以进行复用。
专家答疑组件中的Views文件夹下有两个子文件夹,它们分别是专家答疑的问题管理显示页面和单个问题显示页面。两个子文件夹下都包含一个模板文件夹和对应的View类,模板文件夹可以存放若干个模板文件,以供View类进行选择调用,将所获得的数据填入到模板文件中形成显示页面。它使数据处理与功能代码与界面表示层代码得以分离,避免了代码的杂糅,提高了各部分间的独立性。专家答疑组件拥有QuestionanswersView类和QuestionanswerView类,它们都继承自Joomla!框架中的Jview类。它们通常运用一个显示方法将数据填入到指定的模板文件中,由于专家答疑组件的显示页面都具有单一的模板文件,所以没有涉及到模板的选择调用。
5 专家答疑组件的前台开发
由于专家答疑组件的前台开发和上述的后台管理开发方法完全一样,所以限于篇幅不再重复叙述。但是需要指出的是前台开发除了多个问题显示和单一具体显示功能外,还具有问题搜索和问题分类显示功 。开发者仅仅需要在其Models文件夹、Controllers文件夹和Views文件夹增加相应的类文件即可,不会影响到其他部分的功能代码,很方便为组件增加 额外的功能,提高了组件各个部分之间的独立性,降低了系统之间的耦合度。
6 专家答疑组件的安装
经过上述五个步骤,就完成了专家答疑组件的开发,开发者最后还需要建立一个XML文件,将专家答疑组件所拥有的文件按照层次顺序添加到XML中,完成安装的XML文件后, 进行压缩成ZIP格式的文件进行安装使用,专家答疑组件的后台问题管理页面效果图如下所示。
四 结束语
本文以某外语教育出版社高等英语教学网的专家答疑组件开发为案例详细阐述了应用Joomla!框架进行Web系统组件扩展开发的机制和流程,限于篇幅,对于Joomla!框架的Module和Plugin开发没有涉及。通过遵循Joomla!框架的MVC组件扩展机制,我们在开发过程中提高了系统各个部分的独立性与代码的可复用程度,降低了系统各部分之间的耦合度。
参考文献
[1] MVC模式研究的综述.任中芳,张华,闫明松等 [J].计算机应用研究,2004,10:1-2.
[2] MVC模型在Web程序中的应用及java实现.张莹,许俊华,张毅, 等[J].计算机工程与应用,2001,17:160-161.
[3] 基于ASP.NET的MVC设计模式的研究.林庆,朱翠苗, 等[J].计算机工程与设计,2008,1:167-168.
[4]Dan Rahmel.Professional Joomla![M].US: Wiley Publishing Inc,2007.
[5]Dan Rahmel.Beginning Joomla! [M].US: press Publishing, 2007.
[6]James Kennard. Mastering Joomla!! 1.5 Extension and Framework Development [M].Birmingham: Packt publishing, 2007.
[7]Joseph LeBlanc. Learning Joomla!!1.5 Extension Development [M].Birmingham: Packt publishing, 2007.
[8] [EB/OL].
[9] [EB/OL].
[10] [EB/OL].
[11] [EB/OL].
A Study on the Application of MVC-Based Joomla! Framework in Extension and Exploration of Web Components
HU Qian-jinCAI Yong-zhou WU Min
(University of Science and Technology of China, Center of Modern Educational Technology, Hefei Hubei, 230026)
Abstract: This paper is going to answer the question of how to apply Joomla! framework in the extension and exploration of Web system. It is based on some discussions on design, technology, and expansion of component extension. Detailed explanation of the application of Joomla! framework in extension and exploration of Web system will be made through analysis of expert question-answering component extension and exploration of an English website.
Keywords: MVC Model; Joomla!; Web System; Expert Question-answering Component