APP下载

基于MVC的网站群系统实现

2013-08-14韩旭东景雷李守宏

电大理工 2013年3期
关键词:类库视图路由

韩旭东 景雷 李守宏

辽宁广播电视大学 (沈阳 110034)

网站群是指通过统一标准、统一规范,统一规划建立在统一技术构架基础之上,按照一定的隶属关系组合在一起的完整的WEB应用解决方案。各站点既可以统一管理,也可以单独管理自成体系,站点之间基于特定权限共享公共的资源与数据。

1 MVC介绍

系统是基于模型-视图-控制器这一设计模式的。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范,是一种将应用程序的逻辑层和表现层进行分离的方法。 模型 (Model)模型的定义由Model类来完成,代表数据结构。通常来说,模型类包含取出、插入、更新数据库资料这些功能。视图 (View)是展示给用户的信息,由Template类和模板文件组成,模板做到了100%分离,可以独立预览和制作。一个视图通常是一个网页,也可以是一个页面片段,如页头、页尾。它还可以是一个 RSS页面,或任何其它类型的“页面”。控制器 (Controller)是模型、视图以及其他任何处理 HTTP请求所必须的资源之间的中介,并生成网页。应用控制器(核心控制器App类)和Action控制器都承担了控制器的角色,Action控制器完成业务过程控制,而应用控制器负责调度控制。

2 特性概述

本系统在设计时借鉴了很多国外成熟的框架和设计模式,使用面向对象的开发方法,采用MVC设计模式,融合了Struts框架的Action方法,封装了创建、更新、读取、删除和一些常用操作,在系统配置、模板引擎、类库导入、查询语言、表单自动验证和完成、视图模型、模板编译、缓存控制、SEO优化、多数据库支持、分布式数据库支持、SSO认证机制等方面都有高效、稳定的表现。

其主要特性包括:

CBD架构:核心+行为+驱动架构模式。

编译机制:有效减少了面向对象开发中文件加载的性能开销。

类库导入:本系统的类库导入方式包括基于类库包、类库命名空间等,让类库导入更加简洁清晰,并且还支持类库的自动加载。为了方便网站群的跨平台部署,本系统严格区分加载文件名称的大小写。

数据库:支持Mysql、Oracle、SqlServer等数据库,内置分布式数据库和读写分离功能支持。

查询语言:系统内置了丰富的查询机制,主要包括组合查询、关联查询、快捷查询、统计查询、多表查询、子查询、原生查询等。

数据模型:无需创建任何对应的数据模型类,轻松完成增、删、改、查等操作,支持多模型间的动态切换,使得对数据的操作更加简便与规范。

URL路由:本系统支持普通、PATHINFO、REWRITE和兼容模式的URL,支持不同的WEB服务器和运行模式的部署,结合URL路由功能,可以方便的创建所需要的URL地址和进行搜索引擎优化优化。支持灵活的规则路由和正则路由以及路由重定向。

模板引擎:系统内建了一套性能卓越的基于HTML的编译型模板引擎,支持模板文件的分离。本套模板引擎借鉴了Smarty的基本流程和方法,并内置了页面布局功能和插件扩展支持。

AJAX异步支持:系统内置了一套与客户端无关的AJAX数据返回方法,支持XML、JSON和EVAL类型数据返回客户端浏览器,并且可以扩展返回数据格式。

多语言支持:系统默认使用UTF-8编码,从而支持多语言包功能。每个项目和分组都可以拥有单独的语言包,并且可以根据用户的IP地址、操作系统语言、浏览器语言等检测方式自动加载对应的语言包。

自动验证和自动完成:自动完成用户表单的数据验证和数据过滤,系统集成了IP地址、有效期等多种验证方式,配合自动完成可以生成安全可靠的数据集对象。

字段类型安全检测:系统会自动缓存数据库表的字段名称和字段类型,支持强制的非法字段过滤和字段类型转换,从而确保了数据的输入和查询更安全。

缓存机制:系统支持包括文件缓存、数据库缓存、Memcache服务器等动态数据缓存类型,及可定制的静态缓存规则,并提供了快捷方法进行存取操作。

扩展机制:系统内建的扩展包括模式扩展、类库扩展、驱动扩展、模型扩展、行为扩展、控制器扩展、插件扩展等,如此强大灵活的扩展机制使得二次开发人员不再受限于核心程序的不足,随心定制自己的核心框架和应用扩展,满足实际开发中复杂的项目需求。

3 系统流程

本系统工作流程如下图所示:

图1 系统流程图

首页作为前端控制器,初始化运行网站群系统所需要的基本资源。路由(Router)检查 HTTP请求,以确定谁来处理请求。如果缓存(Cache)文件存在,它将绕过通常的系统执行顺序,被直接发送给浏览器。安全(Security)。控制器(Controller)装载之前,HTTP请求和任何用户提交的数据将被过滤。控制器装载核心库、模型库、函数库,以及任何处理特定请求所需的其它资源。最终视图(View)渲染发送到 Web浏览器中的内容。如果开启缓存(Caching),视图首先被缓存,所以将可用于以后的请求。

4 站点主要管理流程及实现

站点管理子系统是站点管理功能的集合,子系统包括站点设置、主题设置、模板编辑等功能。其中主要的实现方法为:

定义站点管理基类(WebsiteadminbaseApp),在其中创建初始化检查(_run_action)、获取权限(_get_privileges)、获取主题(_get_theme)等公共方法,以方便子类继承。

定义主题设置类(My_themeApp),继承于WebsiteadminbaseApp。My_themeApp类主要实现主题设置界面(index)、设置参数保存(set)、获取风格(_get_themes)等方法。

定义模板编辑类(TemplateApp),继承于WebsiteadminbaseApp。TemplateApp类中的主要方法包括可编辑的页面列表(index)、页面编辑(edit)、保存编辑(save)等。

站点设置类(MywebsiteApp),继承于WebsiteadminbaseApp。其中的主要方法包括My_websiteApp用于初始化类属性、index用于显示设置页面及保存设置参数、_get_member_submenu用于获取页面子菜单项、_upload_files用于文件的上传、drop_uploadedfile用于异步删除附件。

图2 站点主要管理框架示意图

5 结语

本文采用MVC框架进行网站群系统的实现,结合MVC框架的优点,系统的性能得到了提高,安全性也得到了较大改善,同时提高了网站群系统的可扩展性和可复用性,

[1]谷岩.浅谈高职院校网站群建设[J].科技资讯,2008,(10):213.

[2]董西尚.网站集群管理系统研究与开发[J].吉林广播电视大学学报,2009,(5):27-29.

[3]董珂.基于角色授权和MVC模式的内容管理系统研究[J].软件导刊,2009,8(4):47-49.

[4]李刚.Struts2权威指南:基于WebWork核心的MVC开发[M].北京:电子工业出版社,2007.

[5]许宏云,李煜.基于thinkphp的权限控制模块的设计与实现[J].微计算机信息,2012,9:234-235

猜你喜欢

类库视图路由
用Java编写客户机/服务器端应用程序
Python在数据可视化中的应用
探究路由与环路的问题
数据结构课程教学改革方案和应用效果
数据结构可视化类库的设计与实现
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
PRIME和G3-PLC路由机制对比