沈陽(yáng)
摘要:ASP.NET運(yùn)行時(shí)模型是用于進(jìn)行Http請(qǐng)求處理的系統(tǒng)框架,其中HttpHandler對(duì)象是Http請(qǐng)求的處理中心,在HttpHandler中,ASP.NET框架才真正對(duì)客戶端請(qǐng)求的所有服務(wù)器資源做出處理和執(zhí)行,并將處理后的結(jié)果放入Http響應(yīng)流中,然后返回給客戶端。本文通過(guò)基于ASP.NET運(yùn)行時(shí)模型實(shí)現(xiàn)圖片數(shù)字水印來(lái)闡述ASP.NET平臺(tái)通過(guò)HttpHandler對(duì)象對(duì)客戶端請(qǐng)求資源進(jìn)行處理的過(guò)程。
關(guān)鍵詞:ASP.NET 運(yùn)行時(shí)模型 HttpHandler 數(shù)字水印
中圖分類號(hào):TP309.7 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)06-0000-00
現(xiàn)在是一個(gè)網(wǎng)絡(luò)信息高速發(fā)展的年代,我們?cè)谄綍r(shí)構(gòu)建網(wǎng)站時(shí)需要給相關(guān)圖片添加數(shù)字水印,或者是為了營(yíng)銷需要,或者是為了防止盜圖。如何在不夠買(mǎi)和不安裝圖片處理軟件的條件下來(lái)給圖片加水印,并且要求省時(shí)省力有效的實(shí)現(xiàn)該功能,本文通過(guò)ASP.NET運(yùn)行時(shí)模型中的HttpHandler來(lái)實(shí)現(xiàn)網(wǎng)站的圖片數(shù)字水印功能。
1 相關(guān)概念
要想實(shí)現(xiàn)圖片的數(shù)字功能必須先了解ASP.NET運(yùn)行時(shí)模型的執(zhí)行過(guò)程。
1.1 ASP.NET運(yùn)行時(shí)模型執(zhí)行過(guò)程
當(dāng)客戶端向IIS服務(wù)器發(fā)出一個(gè)HTTP請(qǐng)求時(shí),IIS服務(wù)器會(huì)調(diào)用aspnet_isapi.dll將請(qǐng)求傳遞給ASP.NET運(yùn)行時(shí)(Runtime),在ASP.NET運(yùn)行時(shí)中HttpApplication組件會(huì)首先接收到請(qǐng)求,由它將請(qǐng)求依次傳遞給若干個(gè)HttpModule中進(jìn)行請(qǐng)求過(guò)濾,如果請(qǐng)求不合法就會(huì)在某個(gè)HttpModule中拋棄從而結(jié)束請(qǐng)求過(guò)程。如果請(qǐng)求合法HttpApplication會(huì)將該請(qǐng)求傳遞到HttpHandler中,HttpHandler 是HTTP請(qǐng)求處理的終點(diǎn),處理完畢后會(huì)將HTTP響應(yīng)返回到客戶端。如圖1所示。
在本文中我們關(guān)注的是ASP.NET運(yùn)行時(shí)模型如何通過(guò)HttpHandler 來(lái)處理Http請(qǐng)求。
1.2 數(shù)字水印的作用
數(shù)字水印是將一個(gè)能唯一確認(rèn)身份的標(biāo)識(shí)嵌入到圖片、音視頻、文檔等信息中。在不影響信息使用的情況下,不容易被別人修改或未經(jīng)同意而使用。數(shù)字水印是保護(hù)知識(shí)產(chǎn)權(quán)、溯源的有效辦法。數(shù)字水印技術(shù)基本上具有下面幾個(gè)方面的特點(diǎn):
(1)安全性:數(shù)字水印應(yīng)該是安全的,難以偽造。(2)嵌入容量:指加入水印的數(shù)量,即對(duì)水印的容量需求很大。比如圖片加入水印后可以不影響原圖片的查閱。(3)健壯性:指即被未授權(quán)方擅自修改的困難度,能盡量保持該圖片的唯一性,比如下載加有數(shù)字水印的圖片,擅自修改會(huì)造成原圖信息的丟失并增加修改難度。
本文以圖片上添加網(wǎng)站圖標(biāo)做為數(shù)字水印為例,闡述通過(guò)ASP.NET運(yùn)行時(shí)模型實(shí)現(xiàn)數(shù)字水印的過(guò)程。如果圖片存在則在該圖片上動(dòng)態(tài)添加水印,如果圖片不存在則在該圖片顯示的位置顯示一個(gè)默認(rèn)圖片。
1.2 數(shù)字水印的實(shí)現(xiàn)方式選擇
(1)直接編輯每張圖片。這種方式需要大量的人力來(lái)進(jìn)行這樣的工作。(2)編程實(shí)現(xiàn)批量編輯圖片,這種方式較之于第一種方式節(jié)省人力,效率高,但原始圖片丟失了。(3)在顯示圖片時(shí),動(dòng)態(tài)添加數(shù)字水印效果。這種方式較之于前兩種來(lái)說(shuō)比較可行,可使用ASP.NET運(yùn)行時(shí)模型通過(guò)HttpHandler來(lái)實(shí)現(xiàn)。
2 實(shí)現(xiàn)結(jié)果及分析
以下以圖片上添加網(wǎng)站圖標(biāo)做為數(shù)字水印為例,說(shuō)明ASP.NET運(yùn)行時(shí)模型在處理Http請(qǐng)求中的應(yīng)用,并使用HttpHandler實(shí)現(xiàn)圖片的數(shù)字水印的實(shí)現(xiàn)步驟:
(1)準(zhǔn)備一張默認(rèn)圖片和一張做為水印的網(wǎng)站圖標(biāo)圖片。
(2)創(chuàng)建名為BookCoverProcess類來(lái)生成數(shù)字水印,該類實(shí)現(xiàn)了IHttpHandler接口。
(3)實(shí)現(xiàn)IHttpHandler類的ProcessRequest方法。該方法是HttpHandler類的核心方法,用于最終的請(qǐng)求處理。
當(dāng)用戶訪問(wèn)某張圖片時(shí),獲取圖片的URL并交到HttpHandler中進(jìn)行處理,如果該圖片不存在,服務(wù)器將繪制一張默認(rèn)圖片并交給客戶端,如果圖片存在,服務(wù)器將數(shù)字水印圖片繪制到當(dāng)前圖片上。
3 結(jié)語(yǔ)
利用ASP.NET運(yùn)行時(shí)模型中的HttpHandler進(jìn)行Http請(qǐng)求中的圖片數(shù)字水印,可以在圖片上增加網(wǎng)站標(biāo)識(shí),能夠很好地保護(hù)著作權(quán),防止他人盜用圖片,使用ASP.NET運(yùn)行時(shí)模型還可以實(shí)現(xiàn)例如動(dòng)態(tài)頁(yè)面靜態(tài)化、防盜鏈等其他功能,應(yīng)用范圍相當(dāng)豐富。
參考文獻(xiàn)
[1] (美)Adam Freeman精通ASP.NET 4.5(第5版)[M].北京:人民郵電出版社,2014.
[2] (美)Myers, G.J.軟件測(cè)試的藝術(shù)(原書(shū)第3版)[M].北京:機(jī)械工業(yè)出版社,2012.
[3] 胡琳.網(wǎng)站安全管理的技術(shù)性分析[J].微計(jì)算機(jī)信息,2005(14).
[4] 廖江福.基于HttpHandler的ASP.NET軟件RSA簽名研究[J]. 重慶工商大學(xué)學(xué)報(bào),2010(1).