Flask - 輕量級(jí)Web應(yīng)用框架
Flask是一個(gè)使用?Python?編寫(xiě)的輕量級(jí)?Web?應(yīng)用框架。其?WSGI?工具箱采用?Werkzeug?,模板引擎則使用?Jinja2?。Flask使用?BSD?授權(quán)。一是對(duì)單個(gè)采集任務(wù)上傳的數(shù)字核信號(hào)進(jìn)行實(shí)時(shí)濾波,獲取能譜和脈沖計(jì)數(shù),任務(wù)完成后原始核信號(hào)數(shù)據(jù)以數(shù)據(jù)包保存于服務(wù)端,二是對(duì)數(shù)據(jù)包里的原始數(shù)據(jù)使用平臺(tái)提供的濾波、去堆積、獲取能譜和脈沖計(jì)數(shù)等算法程序進(jìn)行綜合分析。

簡(jiǎn)介
Flask是一個(gè)輕量級(jí)的可定制框架,使用Python語(yǔ)言編寫(xiě),較其他同類型框架更為靈活、輕便、安全且容易上手。它可以很好地結(jié)合MVC模式進(jìn)行開(kāi)發(fā),開(kāi)發(fā)人員分工合作,小型團(tuán)隊(duì)在短時(shí)間內(nèi)就可以完成功能豐富的中小型網(wǎng)站或Web服務(wù)的實(shí)現(xiàn)。另外,F(xiàn)lask還有很強(qiáng)的定制性,用戶可以根據(jù)自己的需求來(lái)添加相應(yīng)的功能,在保持核心功能簡(jiǎn)單的同時(shí)實(shí)現(xiàn)功能的豐富與擴(kuò)展,其強(qiáng)大的插件庫(kù)可以讓用戶實(shí)現(xiàn)個(gè)性化的網(wǎng)站定制,開(kāi)發(fā)出功能強(qiáng)大的網(wǎng)站。
Flask是目前十分流行的web框架,采用Python編程語(yǔ)言來(lái)實(shí)現(xiàn)相關(guān)功能。它被稱為微框架 - microframework,“微”并不是意味著把整個(gè)Web應(yīng)用放入到一個(gè)Python文件,微框架中的“微”是指Flask旨在保持代碼簡(jiǎn)潔且易于擴(kuò)展,F(xiàn)lask框架的主要特征是核心構(gòu)成比較簡(jiǎn)單,但具有很強(qiáng)的擴(kuò)展性和兼容性,程序員可以使用Python語(yǔ)言快速實(shí)現(xiàn)一個(gè)網(wǎng)站或Web服務(wù)。一般情況下,它不會(huì)指定數(shù)據(jù)庫(kù)和模板引擎等對(duì)象,用戶可以根據(jù)需要自己選擇各種數(shù)據(jù)庫(kù)。Flask自身不會(huì)提供表單驗(yàn)證功能,在項(xiàng)目實(shí)施過(guò)程中可以自由配置,從而為應(yīng)用程序開(kāi)發(fā)提供數(shù)據(jù)庫(kù)抽象層基礎(chǔ)組件,支持進(jìn)行表單數(shù)據(jù)合法性驗(yàn)證、文件上傳處理、用戶身份認(rèn)證和數(shù)據(jù)庫(kù)集成等功能。Flask主要包括Werkzeug和Jinja2兩個(gè)核心函數(shù)庫(kù),它們分別負(fù)責(zé)業(yè)務(wù)處理和安全方面的功能,這些基礎(chǔ)函數(shù)為web項(xiàng)目開(kāi)發(fā)過(guò)程提供了豐富的基礎(chǔ)組件。Werkzeug庫(kù)十分強(qiáng)大,功能比較完善,支持URL路由請(qǐng)求集成,一次可以響應(yīng)多個(gè)用戶的訪問(wèn)請(qǐng)求;支持Cookie和會(huì)話管理,通過(guò)身份緩存數(shù)據(jù)建立長(zhǎng)久連接關(guān)系,并提高用戶訪問(wèn)速度;支持交互式Javascript調(diào)試,提高用戶體驗(yàn);可以處理HTTP基本事務(wù),快速響應(yīng)客戶端推送過(guò)來(lái)的訪問(wèn)請(qǐng)求。Jinja2庫(kù)支持自動(dòng)HTML轉(zhuǎn)移功能,能夠很好控制外部黑客的腳本攻擊。系統(tǒng)運(yùn)行速度很快,頁(yè)面加載過(guò)程會(huì)將源碼進(jìn)行編譯形成python字節(jié)碼,從而實(shí)現(xiàn)模板的高效運(yùn)行;模板繼承機(jī)制可以對(duì)模板內(nèi)容進(jìn)行修改和維護(hù),為不同需求的用戶提供相應(yīng)的模板。目前Python的web框架有很多。除了Flask,還有django、Web2py等等。其中Diango是目前Python的框架中使用度最高的。但是Django如同java的EJB - EnterpriseJavaBeansJavaEE服務(wù)器端組件模型多被用于大型網(wǎng)站的開(kāi)發(fā),但對(duì)于大多數(shù)的小型網(wǎng)站的開(kāi)發(fā),使用SSH - Struts+Spring+Hibernat的一個(gè)JavaEE集成框架就可以滿足,和其他的輕量級(jí)框架相比較,F(xiàn)lask框架有很好的擴(kuò)展性,這是其他Web框架不可替代的。
基本模式
Flask的基本模式為在程序里將一個(gè)視圖函數(shù)分配給一個(gè)URL,每當(dāng)用戶訪問(wèn)這個(gè)URL時(shí),系統(tǒng)就會(huì)執(zhí)行給該URL分配好的視圖函數(shù),獲取函數(shù)的返回值并將其顯示到瀏覽器上,其工作過(guò)程見(jiàn)圖。
IT運(yùn)維的基本點(diǎn)為安全、穩(wěn)定、高效,運(yùn)維自動(dòng)化的目的就是為了提高運(yùn)維效率,F(xiàn)lask[9]開(kāi)發(fā)快捷的特點(diǎn)正好符合運(yùn)維的高效性需求。在項(xiàng)目迭代開(kāi)發(fā)的過(guò)程中,所需要實(shí)現(xiàn)的運(yùn)維功能以及擴(kuò)展會(huì)逐漸增多,針對(duì)這一特點(diǎn)更是需要使用易擴(kuò)展的Flask框架。另外,由于每個(gè)公司對(duì)運(yùn)維的需求不同,所要實(shí)現(xiàn)的功能也必須有針對(duì)性地來(lái)設(shè)計(jì),F(xiàn)lask可以很好地完成這個(gè)任務(wù)。
特點(diǎn)
目前,我國(guó)市場(chǎng)上大部分智能交通系統(tǒng)控制平臺(tái)采用的都是C/S模式,對(duì)終端要求較高,且安裝繁瑣。部分的平臺(tái)也有采用基于B/S模式傳統(tǒng)框架,但這些框架的一些功能大多被固定,缺乏靈活性。采用Flask微型框架做服務(wù)器的后臺(tái)開(kāi)發(fā),F(xiàn)lask是基于Python開(kāi)發(fā)的框架,類似的框架還有Django、Tornado等,之所選擇Flask來(lái)開(kāi)發(fā),原因如下:
一、后續(xù)的基于機(jī)器學(xué)習(xí)的車輛檢測(cè)與屬性識(shí)別算法研究,主要開(kāi)發(fā)語(yǔ)言也是應(yīng)用Python,整個(gè)系統(tǒng)統(tǒng)一開(kāi)發(fā)語(yǔ)言,便于開(kāi)發(fā)和后期維護(hù)。
二、Flask因?yàn)殪`活、輕便且高效的特點(diǎn)被業(yè)界認(rèn)可,同時(shí)擁有基于Werkzeug、Jinja2等一些開(kāi)源庫(kù),擁有內(nèi)置服務(wù)器和單元測(cè)試,適配RESTful,支持安全的cookies,而且官方文檔完整,便于學(xué)習(xí)掌握。
三、Flask中擁有靈活的Jinja2模板引擎,提高了前端代碼的復(fù)用率。這樣可以提高開(kāi)發(fā)效率和有利于后期開(kāi)發(fā)與維護(hù)。在現(xiàn)有標(biāo)準(zhǔn)中,F(xiàn)lask算是微小型框架。Flask有兩個(gè)主要依賴:路由、調(diào)試和Web服務(wù)器網(wǎng)關(guān)接口(WebServerGatewayInterface,WSGI)子系統(tǒng)由Werkzeug提供;模板系統(tǒng)由Jinja2提供。Werkzeug和Jinja2都是由Flask的核心開(kāi)發(fā)者開(kāi)發(fā)而成。對(duì)于數(shù)據(jù)庫(kù)訪問(wèn)、驗(yàn)證Web表單和用戶身份認(rèn)證等一系列功能,F(xiàn)lask框架是不支持的。這些功能都是以擴(kuò)展組件的方式進(jìn)行實(shí)現(xiàn),然后再與Flask框架集成。開(kāi)發(fā)者可以根據(jù)項(xiàng)目的需求進(jìn)行相應(yīng)的擴(kuò)展,或者自行開(kāi)發(fā)。這與大型框架恰恰相反,大型框架本身做出了大部分決定,難以靈活改變方案。同時(shí)也開(kāi)發(fā)了一套基于網(wǎng)頁(yè)技術(shù)的人機(jī)交互界面,可以讓用戶與服務(wù)端友好地交互。
