• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于改進(jìn)的YAF框架的Web系統(tǒng)開發(fā)架構(gòu)淺析

    2017-05-06 21:11:59江川
    科技資訊 2017年7期
    關(guān)鍵詞:模塊化分層

    江川

    摘 要:在如今需求快速迭代,代碼規(guī)模不斷膨脹的趨勢下,傳統(tǒng)的Web應(yīng)用開發(fā)模式已經(jīng)無法滿足快速開發(fā)的要求,為了解決代碼規(guī)模的危機(jī),先進(jìn)的開發(fā)理論應(yīng)運(yùn)而生。該文基于YAF這一PHP開發(fā)中流行的MVC框架進(jìn)行改進(jìn),對YAF的Model模塊進(jìn)行內(nèi)部分層,并對基于YAF的系統(tǒng)開發(fā)進(jìn)行研究。實(shí)際表明,將系統(tǒng)進(jìn)行分層,每層對應(yīng)不同職責(zé),系統(tǒng)開發(fā)模塊化,易于維護(hù)擴(kuò)展。

    關(guān)鍵詞:YAF框架 分層 模塊化

    中圖分類號:TP302 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號:1672-3791(2017)03(a)-0029-02

    傳統(tǒng)Web系統(tǒng)開發(fā)后端服務(wù)業(yè)務(wù)邏輯簡單,代碼沒有明顯模塊化,業(yè)務(wù)邏輯與數(shù)據(jù)訪問雜糅在一起,隨著需求逐漸復(fù)雜化,逐漸無法應(yīng)對代碼規(guī)模的擴(kuò)張,需要良好設(shè)計(jì)的開發(fā)框架進(jìn)行規(guī)范化,使系統(tǒng)易于維護(hù)擴(kuò)展,節(jié)省人力與經(jīng)濟(jì)成本。MVC與N層架構(gòu)等理論的發(fā)展,使得現(xiàn)代軟件的開發(fā)更加規(guī)范化與工程化,作為解決軟件危機(jī)的有效方法,將界面表示、業(yè)務(wù)邏輯以及數(shù)據(jù)的處理進(jìn)行模塊劃分,使各模塊各司其職,模塊之間職責(zé)劃分清晰,架構(gòu)易于理解與維護(hù)。YAF框架是基于MVC架構(gòu)的開發(fā)框架,它專注于在“最小性能損耗”與“良好的模塊封裝”中尋求平衡點(diǎn),改進(jìn)的YAF框架則將分層架構(gòu)應(yīng)用到Y(jié)AF的Model中,使得YAF框架可以適應(yīng)越來越龐大的系統(tǒng)架構(gòu)。

    1 YAF框架核心架構(gòu)

    與傳統(tǒng)MVC框架相同,View負(fù)責(zé)用戶界面展示;Controller負(fù)責(zé)處理與用戶進(jìn)行交互的部分,得到Model的數(shù)據(jù)后可將數(shù)據(jù)返回給View;Model表示數(shù)據(jù)和業(yè)務(wù)相關(guān)處理,并且可將數(shù)據(jù)返回給controller,一個(gè)典型的YAF框架的代碼編寫如下所示。

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

    class IndexController extends Yaf_Controller_Abstract {

    public function indexAction() {//默認(rèn)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 改進(jìn)YAF

    可以看到Y(jié)AF作為一種MVC框架,把系統(tǒng)拆分為“視圖、控制器”與“數(shù)據(jù)模型”三個(gè)模塊,已經(jīng)對數(shù)據(jù)的表示進(jìn)行了解耦,但Model層中依然可以既包含對業(yè)務(wù)邏輯的處理,也包含針對數(shù)據(jù)源(可以為數(shù)據(jù)庫或文本文件等)的訪問處理,使得對業(yè)務(wù)邏輯與數(shù)據(jù)的處理仍然混雜,難以維護(hù),此時(shí)我們將Model進(jìn)一步分層。針對Model的數(shù)據(jù)處理,我們可以繼續(xù)分為“頁面邏輯層、數(shù)據(jù)服務(wù)層”以及“數(shù)據(jù)訪問對象”,如圖1所示。

    2.1 數(shù)據(jù)訪問對象(DAO)

    一個(gè)DAO對應(yīng)一張表上具體的、無邏輯的CRUD操作,通常會(huì)有多個(gè)方法,每個(gè)方法對應(yīng)這張表上的一個(gè)操作,負(fù)責(zé)向數(shù)據(jù)服務(wù)層提供對數(shù)據(jù)進(jìn)行訪問的接口。

    2.2 數(shù)據(jù)服務(wù)層(Data Service)

    數(shù)據(jù)服務(wù)層在DAO這一層的基礎(chǔ)上提供一個(gè)原子功能的接口封裝,按主題提供數(shù)據(jù)操作服務(wù)給頁面服務(wù)層調(diào)用,該層中主要負(fù)責(zé)對數(shù)據(jù)進(jìn)行加工,例如時(shí)間字段的格式化、通過調(diào)用不同DAO進(jìn)行數(shù)據(jù)組合后處理以及對數(shù)據(jù)進(jìn)行緩存等操作。

    2.3 頁面服務(wù)層(Page Service)

    頁面服務(wù)層主要是在數(shù)據(jù)服務(wù)層提供的數(shù)據(jù)提供接口上,進(jìn)行與具體頁面的業(yè)務(wù)邏輯相關(guān)的操作,同時(shí)可以進(jìn)行對數(shù)據(jù)的合法性與安全性校驗(yàn)。

    3 改進(jìn)后YAF的應(yīng)用

    改進(jìn)后的YAF目錄針對架構(gòu)進(jìn)行了細(xì)化,一個(gè)典型的改進(jìn)后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)頁面服務(wù)層 application/model/service/page/Index.php。

    class Service_Page_Index {

    public function execute() {

    $object = new Service_Data_Index();

    return $object->getHelloData();

    }

    }

    (3)數(shù)據(jù)服務(wù)層 application/model/service/data/Index.php。

    class Service_Data_Index {

    public function getHelloData() {

    $object = new Dao_Index();

    return $object->getData();

    }

    }

    (4) 數(shù)據(jù)訪問對象 application/model/dao/Index.php。

    class Dao_Index extends Lib_Dao{

    public function getData() {

    $this->useTable(‘Table)

    return $object->getData();

    }

    }

    4 結(jié)語

    該文對YAF框架的架構(gòu)進(jìn)行了針對Model層的改進(jìn),使其層次更加清晰,更適合應(yīng)用到大規(guī)模系統(tǒng)開發(fā)中。對Model進(jìn)行分層使得模塊松耦合,不僅系統(tǒng)架構(gòu)更加清晰,易于理解,而且開發(fā)人員在維護(hù)系統(tǒng)時(shí)只需要針對某一層進(jìn)行修改,只要接口規(guī)范不改變,那么修改其中一層不會(huì)影響其他層,節(jié)省了維護(hù)成本。

    參考文獻(xiàn)

    [1] (美)斯賓奈利斯,著.架構(gòu)之美[M].王海鵬,等,譯.北京:機(jī)械工業(yè)出版社,2010.

    [2] (美)埃斯波西托,薩爾塔列洛,著.Microsoft .NET企業(yè)級應(yīng)用架構(gòu)設(shè)計(jì)[M].陳黎夫,譯.北京:人民郵電出版社,2010.

    猜你喜歡
    模塊化分層
    模塊化自主水下機(jī)器人開發(fā)與應(yīng)用
    基于模塊化控制系統(tǒng)在一體化教學(xué)中的應(yīng)用
    有趣的分層現(xiàn)象
    軍事文摘(2020年18期)2020-10-27 01:55:18
    模塊化住宅
    一種沉降環(huán)可準(zhǔn)確就位的分層沉降儀
    雨林的分層
    有趣的分層
    ACP100模塊化小型堆研發(fā)進(jìn)展
    中國核電(2017年2期)2017-08-11 08:00:56
    從模塊化中得到的二氧化碳
    模塊化VS大型工廠
    潍坊市| 皮山县| 兴城市| 溆浦县| 丹寨县| 军事| 葵青区| 塔河县| 灌南县| 岳阳县| 澄江县| 廊坊市| 安陆市| 湘潭市| 图们市| 泾川县| 沾化县| 安泽县| 宝丰县| 林西县| 嘉峪关市| 新泰市| 兰考县| 怀仁县| 房产| 合阳县| 广饶县| 许昌县| 乌鲁木齐市| 泸西县| 琼结县| 海口市| 福州市| 嵊泗县| 黄梅县| 诏安县| 依安县| 宁陕县| 陆河县| 瓮安县| 威远县|