基于改进的YAF框架的Web系统开发架构浅析

2017-05-06 21:11江川
科技资讯 2017年7期
关键词:模块化分层

江川

摘 要:在如今需求快速迭代,代码规模不断膨胀的趋势下,传统的Web应用开发模式已经无法满足快速开发的要求,为了解决代码规模的危机,先进的开发理论应运而生。该文基于YAF这一PHP开发中流行的MVC框架进行改进,对YAF的Model模块进行内部分层,并对基于YAF的系统开发进行研究。实际表明,将系统进行分层,每层对应不同职责,系统开发模块化,易于维护扩展。

关键词:YAF框架 分层 模块化

中图分类号:TP302 文献标识码:A 文章编号:1672-3791(2017)03(a)-0029-02

传统Web系统开发后端服务业务逻辑简单,代码没有明显模块化,业务逻辑与数据访问杂糅在一起,随着需求逐渐复杂化,逐渐无法应对代码规模的扩张,需要良好设计的开发框架进行规范化,使系统易于维护扩展,节省人力与经济成本。MVC与N层架构等理论的发展,使得现代软件的开发更加规范化与工程化,作为解决软件危机的有效方法,将界面表示、业务逻辑以及数据的处理进行模块划分,使各模块各司其职,模块之间职责划分清晰,架构易于理解与维护。YAF框架是基于MVC架构的开发框架,它专注于在“最小性能损耗”与“良好的模块封装”中寻求平衡点,改进的YAF框架则将分层架构应用到YAF的Model中,使得YAF框架可以适应越来越庞大的系统架构。

1 YAF框架核心架构

与传统MVC框架相同,View负责用户界面展示;Controller负责处理与用户进行交互的部分,得到Model的数据后可将数据返回给View;Model表示数据和业务相关处理,并且可将数据返回给controller,一个典型的YAF框架的代码编写如下所示。

(1) 控制器application/controllers/Index.php

class IndexController extends Yaf_Controller_Abstract {

public function indexAction() {//默认Action

$model = new ContentModel();

$this->getView()->assign("content", $model->getContent());

}

}

(2) 视图application/views/index/index.phtml

<?php echo $content;?>

(3) 视图application/model/Content.php

class ContentModel {

public function getContent() {

return “Hello World”;

}

}

2 改进YAF

可以看到YAF作为一种MVC框架,把系统拆分为“视图、控制器”与“数据模型”三个模块,已经对数据的表示进行了解耦,但Model层中依然可以既包含对业务逻辑的处理,也包含针对数据源(可以为数据库或文本文件等)的访问处理,使得对业务逻辑与数据的处理仍然混杂,难以维护,此时我们将Model进一步分层。针对Model的数据处理,我们可以继续分为“页面逻辑层、数据服务层”以及“数据访问对象”,如图1所示。

2.1 数据访问对象(DAO)

一个DAO对应一张表上具体的、无逻辑的CRUD操作,通常会有多个方法,每个方法对应这张表上的一个操作,负责向数据服务层提供对数据进行访问的接口。

2.2 数据服务层(Data Service)

数据服务层在DAO这一层的基础上提供一个原子功能的接口封装,按主题提供数据操作服务给页面服务层调用,该层中主要负责对数据进行加工,例如时间字段的格式化、通过调用不同DAO进行数据组合后处理以及对数据进行缓存等操作。

2.3 页面服务层(Page Service)

页面服务层主要是在数据服务层提供的数据提供接口上,进行与具体页面的业务逻辑相关的操作,同时可以进行对数据的合法性与安全性校验。

3 改进后YAF的应用

改进后的YAF目录针对架构进行了细化,一个典型的改进后YAF框架的代码编写如下所示。

(1)控制器application/controllers/Index.php。

<?php

class ControllerIndex extends Yaf_Controller_Abstract {

public function IndexAction() {

$object = new Service_Page_Index();

return $object->execute();

}

}

(2)页面服务层 application/model/service/page/Index.php。

class Service_Page_Index {

public function execute() {

$object = new Service_Data_Index();

return $object->getHelloData();

}

}

(3)数据服务层 application/model/service/data/Index.php。

class Service_Data_Index {

public function getHelloData() {

$object = new Dao_Index();

return $object->getData();

}

}

(4) 数据访问对象 application/model/dao/Index.php。

class Dao_Index extends Lib_Dao{

public function getData() {

$this->useTable(‘Table)

return $object->getData();

}

}

4 結语

该文对YAF框架的架构进行了针对Model层的改进,使其层次更加清晰,更适合应用到大规模系统开发中。对Model进行分层使得模块松耦合,不仅系统架构更加清晰,易于理解,而且开发人员在维护系统时只需要针对某一层进行修改,只要接口规范不改变,那么修改其中一层不会影响其他层,节省了维护成本。

参考文献

[1] (美)斯宾奈利斯,著.架构之美[M].王海鹏,等,译.北京:机械工业出版社,2010.

[2] (美)埃斯波西托,萨尔塔列洛,著.Microsoft .NET企业级应用架构设计[M].陈黎夫,译.北京:人民邮电出版社,2010.

猜你喜欢
模块化分层
用模块化思维打造组织
基于分层教学下的高中数学“让学”策略
分层教学在初中物理课堂中的应用
分层引导 关联照应 开放选择——近三年全国卷高考作文的“写作提示”分析
JGJ/T 435—2018施工现场模块化设施技术标准
大众MEB电动车模块化平台
基于分层的FCM算法在医学图像分割中的应用
基于分层的FCM算法在医学图像分割中的应用
模块化微流控系统与应用
基于“学为中心”的分层作业的设计与思考