亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        江川

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

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

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

        傳統(tǒng)Web系統(tǒng)開(kāi)發(fā)后端服務(wù)業(yè)務(wù)邏輯簡(jiǎn)單,代碼沒(méi)有明顯模塊化,業(yè)務(wù)邏輯與數(shù)據(jù)訪問(wèn)雜糅在一起,隨著需求逐漸復(fù)雜化,逐漸無(wú)法應(yīng)對(duì)代碼規(guī)模的擴(kuò)張,需要良好設(shè)計(jì)的開(kāi)發(fā)框架進(jìn)行規(guī)范化,使系統(tǒng)易于維護(hù)擴(kuò)展,節(jié)省人力與經(jīng)濟(jì)成本。MVC與N層架構(gòu)等理論的發(fā)展,使得現(xiàn)代軟件的開(kāi)發(fā)更加規(guī)范化與工程化,作為解決軟件危機(jī)的有效方法,將界面表示、業(yè)務(wù)邏輯以及數(shù)據(jù)的處理進(jìn)行模塊劃分,使各模塊各司其職,模塊之間職責(zé)劃分清晰,架構(gòu)易于理解與維護(hù)。YAF框架是基于MVC架構(gòu)的開(kāi)發(fā)框架,它專注于在“最小性能損耗”與“良好的模塊封裝”中尋求平衡點(diǎn),改進(jìn)的YAF框架則將分層架構(gòu)應(yīng)用到Y(jié)AF的Model中,使得YAF框架可以適應(yīng)越來(lái)越龐大的系統(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)對(duì)數(shù)據(jù)的表示進(jìn)行了解耦,但Model層中依然可以既包含對(duì)業(yè)務(wù)邏輯的處理,也包含針對(duì)數(shù)據(jù)源(可以為數(shù)據(jù)庫(kù)或文本文件等)的訪問(wèn)處理,使得對(duì)業(yè)務(wù)邏輯與數(shù)據(jù)的處理仍然混雜,難以維護(hù),此時(shí)我們將Model進(jìn)一步分層。針對(duì)Model的數(shù)據(jù)處理,我們可以繼續(xù)分為“頁(yè)面邏輯層、數(shù)據(jù)服務(wù)層”以及“數(shù)據(jù)訪問(wèn)對(duì)象”,如圖1所示。

        2.1 數(shù)據(jù)訪問(wèn)對(duì)象(DAO)

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

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

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

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

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

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

        改進(jìn)后的YAF目錄針對(duì)架構(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)頁(yè)面服務(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ù)訪問(wèn)對(duì)象 application/model/dao/Index.php。

        class Dao_Index extends Lib_Dao{

        public function getData() {

        $this->useTable(‘Table)

        return $object->getData();

        }

        }

        4 結(jié)語(yǔ)

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

        參考文獻(xiàn)

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

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

        猜你喜歡
        模塊化
        模塊化自主水下機(jī)器人開(kāi)發(fā)與應(yīng)用
        基于模塊化控制系統(tǒng)在一體化教學(xué)中的應(yīng)用
        模塊化住宅
        馬勒推出新型模塊化混動(dòng)系統(tǒng)
        考慮模塊化和退貨率的供應(yīng)鏈大規(guī)模定制模型
        ACP100模塊化小型堆研發(fā)進(jìn)展
        從模塊化中得到的二氧化碳
        模塊化VS大型工廠
        非模塊化設(shè)計(jì)四合一爐對(duì)流室的模塊化吊裝
        機(jī)械制造技術(shù)模塊化教學(xué)改革研究
        如何看色黄视频中文字幕| 野外少妇愉情中文字幕| 亚洲av无码专区亚洲av| 亚洲综合国产成人丁香五月小说| 国产精品女同av在线观看| 超碰人人超碰人人| 日本老熟欧美老熟妇| 日本中文字幕一区二区高清在线 | 久久久久久99精品| 国产免费精品一品二区三| 国产大屁股喷水视频在线观看| 成av免费大片黄在线观看| 国产精品毛片久久久久久l| 国产亚洲精品综合一区二区| 日本伊人精品一区二区三区| 精品亚洲成a人7777在线观看| 日本a在线播放| 亚洲一二三四五中文字幕| 午夜不卡无码中文字幕影院| 成人做爰高潮尖叫声免费观看| 国产成人啪精品视频免费网| 一本之道日本熟妇人妻| 亚洲性无码一区二区三区| 久久免费视频国产| av网站可以直接看的| 色呦呦九九七七国产精品| 曰批免费视频播放免费直播| 人妻精品久久中文字幕| 日韩极品在线观看视频| 国产偷久久久精品专区| 欧美一级三级在线观看| 亚洲国产av中文字幕| 狠狠色噜噜狠狠狠8888米奇| 欧美孕妇xxxx做受欧美88| 无码伊人久久大杳蕉中文无码| 亚洲一区第二区三区四区| 亚洲av日韩av天堂一区二区三区| 国产亚洲AV无码一区二区二三区| 网址视频在线成人亚洲| 男人和女人做爽爽视频| 亚洲黄视频|