• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于HTTP協(xié)議的CURD框架

      2019-12-09 02:06:28成曉琰
      智富時代 2019年10期
      關鍵詞:路由代碼框架

      【摘 要】本文針對于WEB項目中業(yè)務層對數(shù)據(jù)庫的基本操作,也就是增刪查改操作的常用代碼歸納總結,依據(jù)于軟件工程中的代碼高可復用原則,書寫的框架。主要應用于時下流行的關系數(shù)據(jù)庫,也稱作第三代數(shù)據(jù)庫。如果用面向對象的模式書寫業(yè)務層的話,那么多數(shù)的IO通信都是數(shù)據(jù)對象,要進行持久化操作的時候,就需要操作數(shù)據(jù)庫。由于現(xiàn)在的主流數(shù)據(jù)庫是關系數(shù)據(jù)庫,其本質是規(guī)范話的二維表,需要我們做一個從對象到關系模型的映射。本框架就是針對于這類操作的一種簡化,因為不可能規(guī)避,所以只能簡化。

      【關鍵詞】HTTP協(xié)議;CURD框架

      在軟件工程的實踐中,會或多或少的感覺到理論和實踐中的差別,可行性與工程使用的差別。即使理論知識很扎實,在實踐和工程構建的時候還是會遇到很多的問題。我們在開發(fā)一個WEB應用的時候,粗略可分為表示層、業(yè)務層、數(shù)據(jù)庫層(當然依據(jù)于工程的大小所分的層次自然不一樣)。表示層主要是負責人機交互的部分和HTTP數(shù)據(jù)請求和解析,業(yè)務層主要負責邏輯計算和調用關系,數(shù)據(jù)庫層主要是負責持久化存儲的事情(優(yōu)質的項目大部分的數(shù)據(jù)運算都是交給數(shù)據(jù)庫的函數(shù)和存儲過程)。

      在linux設計風格中,強調一個工具只做一件事情,剩下的事情通過管道來進行通信就好了。在現(xiàn)代的軟件工程中,調用成為越來越長用的功能,當然也有很多人對自己的常用的代碼進行總結,每次復制粘貼改。對于常用的代碼的復用操作還是建議封裝成函數(shù)或者是類,對入口參數(shù)進行通用性的修改。當然在當下如果能貢獻給開源組織那就是更好的舉措了,不僅能供給別人使用,還能有人對你代碼的問題提出修改意見。

      一、課題及研究背景和研究意義

      隨WEB前端的發(fā)展技術越來越迅猛,js也隨著越來越快。對于一個現(xiàn)代的軟件工程項目來說,持久化存儲都是使用數(shù)據(jù)庫進行操作。當我們使用ajax提交請求,業(yè)務層解析邏輯之后,將對數(shù)據(jù)庫執(zhí)行sql語句或者是執(zhí)行存儲過程。在有些不是很注重安全,專注于原型的高速敏捷開發(fā)的時候,就會覺得業(yè)務層就是解析ajax請求,執(zhí)行sql,取回結果集返回給ajax,最后將數(shù)據(jù)拿到客戶端。在有些時候,也在想,能不能直接使用ajax請求,操作數(shù)據(jù)庫呢。這樣一來可以減少開發(fā)的人力成本,二來可以減少調試和測試的成本。對于一些快速原型開發(fā)來說,有著重要的意義。

      當然很多WEB開發(fā)的主流語言都有相應的數(shù)據(jù)庫框架(ORM),比如java中SSH的H,PHP中TP的model,Django中的ORM都對數(shù)據(jù)庫進行了簡化的操作,不過他們的封裝都依賴于框架本身的路由、視圖、控制器等等。他們都只是強大框架中的一個核心組件罷了,如果想使用,基本要學習框架中的百分之八十的功能。不能做到開箱即用的程度。

      二、主體架構設計

      本次畢業(yè)設計采用python的tronado框架編寫。對于語言和框架的考慮,個人覺得java代碼太臃腫,C#可以移植性又太差,只能在PHP、python、perl中選擇,考慮到PHP寫起來還是沒有python簡潔,perl操作數(shù)據(jù)庫的文檔更少。就選擇了python語言,對于python的web framework時下流行的有Django、tronado、web2py、flask、bottle。再考慮到學習成本和性能問題還是選擇了最熟悉的tronado。不過python做web的缺陷就是很多問題不能在編譯過程中暴露出來。

      數(shù)據(jù)庫采用sqlite3。選擇這個數(shù)據(jù)庫還是因為sqlite3是基于文件的,可移植性好。而且比較簡單不用考慮端口和數(shù)據(jù)庫獨立進程的問題。而且所有基于linux的服務器都內置了sqlite3,這也給使用和部署的人員帶來了便利。在使用層面sqlite3和主流的數(shù)據(jù)庫管理工具都兼容,而且還有很多免費的sqlite3的可視化工具。不過還是有一定程度的缺陷的,sqlite3不支持存儲過程和函數(shù),只能采用python表達式拼接sql,sqlite3可以不指定字段類型,數(shù)據(jù)量達到一定時會有性能的問題。

      三、接口設計

      我們在接口的設計時,講究的是一個接口制作一件事情,接口和接口之前所做的事情沒有相似性,這樣在用戶調用接口時不會產生歧義,不會因為要使用a功能而不知道調用a1還是a2產生糾結。在面向對象三大特性來說,封裝,繼承和多態(tài)。遇到這種問題我們就用多態(tài)來解決。增加可選參數(shù),來實現(xiàn)統(tǒng)一大功能下的微調。

      四、技術實現(xiàn)

      本框架主體采用python語言的tornado框架編寫,tornado主要有hanlder、路由、配置這么幾部分組成。根據(jù)簡單工廠設計模式,我們采用了一個接口對應一個路由,一個路由對應一個類,也就是我們剛才提到的hanlder進行接受請求參數(shù),執(zhí)行數(shù)據(jù)庫操作,并獲取數(shù)據(jù)庫執(zhí)行結果,將json格式的結果返回到相應中。

      五、編碼、測試以及過程中的技術難點

      實現(xiàn)了上面的設計就是下面的編碼操作了,通過http請求接受過來的dbname、tablename、以及字段名和字段值實現(xiàn)對數(shù)據(jù)庫的增刪查改的操作。

      因為接受過來參數(shù),使用python的占位符拼接sql語句,可能后期sql比較多會做一層封裝,所以項目主要遇到的問題一般出現(xiàn)在sql拼接的問題。也沒有太大的技術難點。

      在測試過程中,發(fā)現(xiàn)打印的結果集格式有時候不是很理想,建議之后修改默認參數(shù)格式為json,也可以改為csv、xml等格式。對于安全性來說,沒有設計token,用戶口令的一類東西,計劃后續(xù)再進行修改。

      【參考文獻】

      [1]趙琦,蔣朝惠,周雪梅,宋紫華.一種基于HTTP協(xié)議的隱蔽隧道及其檢測方法[J].計算機與現(xiàn)代化,2019(06):16-23+29.

      [2]歐思維. TCP/IP網(wǎng)絡與ICN網(wǎng)絡融合研究[D].北京郵電大學,2019.

      [3]趙文浩.加密http協(xié)議的實現(xiàn)[J].通訊世界,2019,26(03):3-4.

      [4]李成哲.基于HTTP協(xié)議報文分析的計算機網(wǎng)絡取證方法[J].網(wǎng)絡安全技術與應用,2019(03):101-102.

      [5]路輝,高尚飛,李少龍.基于HTTP協(xié)議的業(yè)務系統(tǒng)網(wǎng)頁數(shù)據(jù)采集應用集成[J].電子技術與軟件工程,2019(02):1-3.

      [6]劉浩. 基于ONVIF協(xié)議的視頻服務器的設計與實現(xiàn)[D].浙江工業(yè)大學,2019.

      [7]周繼宇.基于HTTP協(xié)議的多線程斷點續(xù)傳軟件設計與實現(xiàn)[J].計算機產品與流通,2018(09):129-130.

      [8]程磊.基于HTTP協(xié)議的多線程網(wǎng)絡下載框架的研究與實踐[J].科技經(jīng)濟導刊,2016(18):30-31.

      [9]劉瑾,黃龍達.基于Java代理和HTTP協(xié)議的RMI框架的實現(xiàn)[J].現(xiàn)代計算機(專業(yè)版),2010(02):137-139+144.

      作者簡介:成曉琰(1992—),女,江蘇無錫人,無錫機電高等職業(yè)技術學校,無職稱,研究方向:計算機。

      猜你喜歡
      路由代碼框架
      框架
      廣義框架的不相交性
      探究路由與環(huán)路的問題
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      WTO框架下
      法大研究生(2017年1期)2017-04-10 08:55:06
      一種基于OpenStack的云應用開發(fā)框架
      PRIME和G3-PLC路由機制對比
      丹阳市| 阿拉善右旗| 沐川县| 资溪县| 凤阳县| 冷水江市| 璧山县| 桃江县| 南充市| 济宁市| 淮滨县| 遂川县| 洛扎县| 沛县| 新邵县| 绥中县| 锦州市| 玉门市| 巴彦县| 周宁县| 五家渠市| 彝良县| 徐汇区| 三河市| 长岛县| 博兴县| 易门县| 射阳县| 美姑县| 壶关县| 依安县| 贵阳市| 卢龙县| 成武县| 毕节市| 凤山县| 神木县| 庆阳市| 康马县| 内江市| 专栏|