韓旭東 景雷 李守宏
遼寧廣播電視大學 (沈陽 110034)
網站群是指通過統一標準、統一規范,統一規劃建立在統一技術構架基礎之上,按照一定的隸屬關系組合在一起的完整的WEB應用解決方案。各站點既可以統一管理,也可以單獨管理自成體系,站點之間基于特定權限共享公共的資源與數據。
系統是基于模型-視圖-控制器這一設計模式的。MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,是一種軟件設計典范,是一種將應用程序的邏輯層和表現層進行分離的方法。 模型 (Model)模型的定義由Model類來完成,代表數據結構。通常來說,模型類包含取出、插入、更新數據庫資料這些功能。視圖 (View)是展示給用戶的信息,由Template類和模板文件組成,模板做到了100%分離,可以獨立預覽和制作。一個視圖通常是一個網頁,也可以是一個頁面片段,如頁頭、頁尾。它還可以是一個 RSS頁面,或任何其它類型的“頁面”。控制器 (Controller)是模型、視圖以及其他任何處理 HTTP請求所必須的資源之間的中介,并生成網頁。應用控制器(核心控制器App類)和Action控制器都承擔了控制器的角色,Action控制器完成業務過程控制,而應用控制器負責調度控制。
本系統在設計時借鑒了很多國外成熟的框架和設計模式,使用面向對象的開發方法,采用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服務器等動態數據緩存類型,及可定制的靜態緩存規則,并提供了快捷方法進行存取操作。
擴展機制:系統內建的擴展包括模式擴展、類庫擴展、驅動擴展、模型擴展、行為擴展、控制器擴展、插件擴展等,如此強大靈活的擴展機制使得二次開發人員不再受限于核心程序的不足,隨心定制自己的核心框架和應用擴展,滿足實際開發中復雜的項目需求。
本系統工作流程如下圖所示:

圖1 系統流程圖
首頁作為前端控制器,初始化運行網站群系統所需要的基本資源。路由(Router)檢查 HTTP請求,以確定誰來處理請求。如果緩存(Cache)文件存在,它將繞過通常的系統執行順序,被直接發送給瀏覽器。安全(Security)。控制器(Controller)裝載之前,HTTP請求和任何用戶提交的數據將被過濾。控制器裝載核心庫、模型庫、函數庫,以及任何處理特定請求所需的其它資源。最終視圖(View)渲染發送到 Web瀏覽器中的內容。如果開啟緩存(Caching),視圖首先被緩存,所以將可用于以后的請求。
站點管理子系統是站點管理功能的集合,子系統包括站點設置、主題設置、模板編輯等功能。其中主要的實現方法為:
定義站點管理基類(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 站點主要管理框架示意圖



本文采用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