999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于Servlet的控制層軟件框架設計

2017-04-13 01:34:40史夢安
軟件導刊 2017年3期
關鍵詞:系統設計

史夢安,馬 壯

(淮安信息職業技術學院 計算機與通信工程學院,江蘇 淮安 223003)

一種基于Servlet的控制層軟件框架設計

史夢安,馬 壯

(淮安信息職業技術學院 計算機與通信工程學院,江蘇 淮安 223003)

使用“IOC模式”以及“單例模式”等設計思想設計了一種以Servlet作為Http請求入口的非侵入式控制層軟件框架,通過Java反射技術建立了“IOC容器”并對其運行效率進行了研究。該框架可以針對不同請求,動態實例化控制器對象,實現控制反轉和請求分發,從而有效降低模塊間耦合,提升系統的可擴展性及開發效率。

Servlet;控制層軟件框架;Java反射技術;IOC;非侵入式

0 引言

Servlet是Java編程語言的Web服務器端編程技術,運行在 Java-enabled Web Server 中。Servlet基于請求/響應模式提供Web服務,可針對不同請求作出不同響應,常作為MVC模式中的Control模塊[1]進行請求的分發。Spring MVC、Struts等企業級應用開發框架即以Servlet為核心,但Spring MVC、Struts等框架幾乎封裝了一般Web項目涉及的所有領域:控制器、過濾器,甚至標簽庫。小型應用的開發可能只需要框架的請求分發功能,但必須搭建一個完整框架,令含小型應用的開發流程過于臃腫。本文設計了一種“輕量級”、非侵入式的基于Servlet的控制層軟件框架,以降低小型應用開發難度,提高開發效率。

1 基于Servlet的請求分發

Servlet中定義有doGet()和doPost()兩個處理請求的方法,即每個Servlet可以接收兩個不同的Http請求,并將請求轉發至相應的業務邏輯中進行處理。在業務邏輯稍微復雜、需要服務端同時處理多種請求時,Servlet功能的局限性便凸顯出來。Servlet處理多種請求有兩種方式:①建立多個Servlet;②傳遞參數。建立多個Servlet會提高代碼冗余度和耦合度,降低功能內聚。傳參方式只需一個Servlet,通過獲取請求中傳入的方法參數來配合邏輯分支語句。理論上一個Servlet可處理多個不同請求,如圖1所示。

通過傳參方式所實現的Servlet響應多請求,會導致代碼冗余度高,耦合度提升,不利于團隊開發,且系統靈活性和可擴展性差[2]。為降低耦合、提升系統性能,本文設計了一種基于Servlet的控制層軟件框架,可提升開發效率。

圖1 傳參實現Servlet響應多請求

2 基于Servlet的控制層軟件框架設計

基于請求/響應的傳統開發模式是由Consumer(在Web應用中一般指代處理用戶請求的線程)管理控制層和業務層對象之間的依賴關系,每次接受請求時都需要Consumer進行實例化對象,導致系統的耦合度高,性能低,可擴展性較差??梢允褂谩翱刂品崔D設計模式(IOC)”[3]對原有的技術框架進行改進,使用RESTful風格設計HTTP請求的URL,將需要訪問的業務對象名和操作名融入URL路徑。

2.1 “IOC容器”設計

“IOC”(控制反轉)即反轉依賴對象的獲得過程[4]。通過建立“IOC容器”,使獲取依賴對象的方式由傳統的Consumer主動實例化對象,轉變為Consumer向“IOC容器”申請對象。由“IOC容器”實例化依賴對象,可有效降低系統耦合。

“IOC容器”使用反射技術進行具體實現,本文基于“工廠設計模式”、結合Java反射技術建立“Method對象工廠”[5]作為“IOC容器”的核心。Consumer提交所需對象的類名和方法名,向“IOC容器”申請依賴對象,“IOC容器”控制“Method對象工廠”使用類名和方法名動態生成對象,并調用方法以實現具體業務邏輯(見圖2),完成控制反轉。

圖2 IOC容器實現

以Servlet作為容器入口,接收到客戶端Http請求而不作數據處理,可直接將請求轉發至“IOC容器”[6]。該“IOC容器”可以有效接管Servlet的請求分發工作,削減系統耦合,提升系統的可擴展性。但類名和方法名參數采用GET方式傳遞時,會暴露系統架構,降低系統安全性。

2.2 URL路徑設計

為提升系統的安全性和易用性,客戶端不使用URL GET方式提交數據。使用RESTful風格設計HTTP請求的URL路徑如下:

http://host:port/path/類名/方法名/參數1/參數2/...

“IOC容器”對請求RESTful風格的URL進行解析,根據解析出的兩個資源名對應本次請求需調用的類名和方法名。為隱藏真實類名、提升反射性能,“IOC容器”使用HashMap表映射控制器的Class類結構對象。根據自定義類名,“IOC容器”從HashMap中獲取對應的Class對象,通過Method對象工廠,動態獲取類的帶參構造器并傳入HttpRequest和HttpResponse參數實例化對象,然后由容器調用相應的方法。系統通過“IOC容器”掌握對象的調用權,實現系統的控制反轉,工作流程如圖3所示。

圖3 IOC容器工作流程

通過構建非侵入式的“IOC容器”,對Servlet轉發的不同Http請求動態創建所需的對象和方法,解決了代碼間的高耦合問題,有利于功能復用,提高了系統的可擴展性,便于團隊開發。但Java反射技術所占用的大量計算機資源需進一步優化。

3 框架優化與改進

3.1 “對象緩存池”設計

當通過該框架實現系統控制層時,所有請求都由Method對象工廠通過Java反射技術分發至具體控制器[7],每個請求都會在Method對象工廠中通過newInstance()方法創建新對象,導致大量的計算機資源被Java反射機制占用。為提升系統性能、降低Java反射機制的資源消耗,可以設計一個“對象緩存池”緩存控制器對象,僅第一次調用該對象時會通過newInstance()方法實例化對象,之后調用都從“對象緩存池”中取用。

在使用“對象緩存池”時,每次Http請求對應不同的HttpRequest和HttpResponse,首次緩存對象時直接傳入HttpRequest來實例化對象,會導致緩存池中Object對象的參數一成不變,導致程序陷入死循環。為解決這一問題,使用“單例設計模式”[8]封裝Http請求,將Http對象作為參數代入構造器并實例化對象,此時Http作為形參傳入的僅是對象的首地址,即可解決Request請求的更新問題。改進后的框架工作流程如圖4所示。

圖4 “對象緩存池”和Http單例對象

3.2 性能測試

實際測試硬件設備選用的CPU為:Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz,單核,內存2G。通過測試程序訪問框架中的同一個控制器,測試結果取1 000次的平均值。

首次運行newInstance()創建對象時,緩存池為空,所以二者運行性能相近,此時對象存入緩存池時比直接使用newInstance()多出一個操作步驟,運行耗時略高(見圖5,單位:ns)。

圖5 首次運行NewInstance()耗時對比

在第一次創建對象后,若使用之前已創建過的對象,可直接從“緩存”中讀取,使用newInstance()創建對象和使用“緩存池”緩存對象兩種方式耗時相差一個數量級,使用緩存時效率平均提升了23.8倍(見圖6,單位:ns)。

4 結語

本文首先基于“控制反轉設計模式(IOC)”設計了“IOC容器”,使用Java反射技術建立Method對象工廠實現控制反轉,并利用該容器設計了一個基于Servlet的控制層軟件框架。之后利用“對象緩存池”以及“單例設計模式”對框架進行性能優化,使框架運行效率大幅提升,并降低資源占用。該框架具有較好的擴展性及穩定性,提高了模塊的健壯性和功能內聚性,可為各類中小型應用項目的研發提供借鑒。

圖6 非首次運行NewInstance()耗時對比

[1] 馮錫煒,侯彤璞,張飛俠.Servlet技術在Web應用中的實現[J].遼寧工學院學報,2005(1):13-16.

[2] 史夢安,王志勃.基于Android系統的TCP/IP客戶端異步通信模塊研究[J].軟件導刊,2014(10):115-118.

[3] RICHARD EG,RALPH H,JOHNSON R,et al.Design paterns:elements of reusable object-oriented software[M].Beijing:China Machine Press,2013.

[4] 魏學松,張育平.IOC框架的研究與設計[J].計算機技術與發展,2006(3):213-216.

[5] 尹松強,傅鸝.Java反射機制探究[J].軟件導刊,2008(11):85-87.

[6] 馮鐵,李文錦,張家晨,等.面向Java語言的設計模式抽取方法的研究[J].計算機工程與應用,2005(25):23-38.

[7] 吳東慶,胡小健,楊逢建.反射機制下類工廠模式的實現與研究[J].計算機應用,2006(3):705-707.

[8] 陳翠娥.Java單例模式應用研究[J].長沙民政職業技術學院學報,2010(1):114-116.

(責任編輯:黃 健)

Design of a Kind of Controller Layer Software Framework Based on Servlet

This article use “IOC” and singleton pattern to design a kind of controller layer software framework based on servlet,and built an IOC container by Java reflection techniques and a research are made on it’s running efficiency.This framework can dynamically instantiate controller objects for different requests,and distributes the requests through implementation of IOC,it can effectively reduce the coupling of modules and improve system expansibility and development efficiency.

Servlet; Controller Layer Software Framework; Java Reflection Techniques; IOC; Non-intrusive

江蘇省淮安市重點研發計劃項目(HAN2015035-2)

史夢安(1985-),男,山東臨沂人,碩士,淮安信息職業技術學院計算機與通信工程學院講師、工程師,研究方向為軟件工程、移動互聯應用與物聯網技術。

10.11907/rjdk.162851

TP319

A

1672-7800(2017)003-0083-03

猜你喜歡
系統設計
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
主站蜘蛛池模板: 国产一区二区三区精品欧美日韩| 国产凹凸一区在线观看视频| 国产97视频在线观看| 国产欧美日韩精品第二区| 米奇精品一区二区三区| 国产午夜福利在线小视频| 午夜国产大片免费观看| 毛片网站免费在线观看| 欧美综合成人| 日本少妇又色又爽又高潮| 国产综合欧美| 91国语视频| 再看日本中文字幕在线观看| 亚洲精品视频免费观看| 亚洲日本www| 国产精品吹潮在线观看中文| 亚洲黄色激情网站| 日韩欧美中文亚洲高清在线| 免费人成在线观看成人片| 亚洲欧美不卡视频| 久久精品无码中文字幕| 欧美三级视频在线播放| 激情国产精品一区| 一级在线毛片| 成人午夜天| 极品私人尤物在线精品首页 | 久久成人免费| 日韩激情成人| 免费看美女毛片| 国产精品视频白浆免费视频| 91久久大香线蕉| 国产日韩AV高潮在线| 免费一级毛片在线播放傲雪网 | 国产精品久久国产精麻豆99网站| 沈阳少妇高潮在线| 欧美特黄一级大黄录像| 成年看免费观看视频拍拍| 91精品国产一区| 免费看av在线网站网址| 在线观看视频99| 国产精品专区第一页在线观看| 永久免费AⅤ无码网站在线观看| 日本午夜精品一本在线观看 | 亚洲免费毛片| 欧美三级日韩三级| 91精品亚洲| 久久综合伊人77777| 九九热在线视频| 亚洲欧美人成人让影院| 欧美激情福利| 精品国产Av电影无码久久久| 国产成人高清亚洲一区久久| 国语少妇高潮| 久久综合九色综合97婷婷| 在线观看国产小视频| 中文一级毛片| 午夜啪啪网| 日韩色图在线观看| 久久久精品无码一区二区三区| 91啦中文字幕| 亚洲人成网7777777国产| 国产福利小视频高清在线观看| 成人国产精品网站在线看| 国产亚洲现在一区二区中文| 免费一级大毛片a一观看不卡| 国产精品一老牛影视频| 国产成人一区在线播放| 日日拍夜夜嗷嗷叫国产| 操国产美女| 99久久精品无码专区免费| 国产乱人激情H在线观看| 特级毛片免费视频| 18禁色诱爆乳网站| 国产青青操| 第九色区aⅴ天堂久久香| 福利在线不卡| 欧美激情视频一区| 最新加勒比隔壁人妻| 91小视频版在线观看www| 欧美在线一级片| 国产亚洲精品精品精品| 国内精品视频在线|