徐子煌 劉文果 阮高飛 陳灝嶸 趙海峰
東莞理工學(xué)院 廣東東莞 523000
近年來(lái),高校在校學(xué)生保有量急劇增加,而這部分人群對(duì)打印的需求量相當(dāng)大。目前高校內(nèi)傳統(tǒng)打印店運(yùn)營(yíng)模式,主要為學(xué)生到店與商家進(jìn)行面對(duì)面的接觸交流,由商家手動(dòng)操控電腦、設(shè)置文件打印格式、驅(qū)動(dòng)打印機(jī)進(jìn)行任務(wù)印刷,學(xué)生現(xiàn)場(chǎng)確認(rèn)并進(jìn)行掃碼或現(xiàn)金支付、取走打印文件并離開(kāi)這一系列的動(dòng)作,從而完成打印這一流程并滿(mǎn)足需求,過(guò)程煩瑣且消耗時(shí)間長(zhǎng)。
人工操作的方式使得打印所需的時(shí)間大大增加,實(shí)際的操作中也存在信息交流和編輯操作的誤差,從而使得打印效率低下,進(jìn)而影響客戶(hù)的使用體驗(yàn)。為節(jié)約開(kāi)支控制租金成本,高校打印店的門(mén)面面積一般不大,可容納的打印機(jī)及配套設(shè)施數(shù)量有限,高峰時(shí)期打印需求大而店內(nèi)學(xué)生擁擠排隊(duì)等候的供需不平衡,以及電腦處于待機(jī)狀態(tài)的低人口流量時(shí)段,使得設(shè)備處于資源浪費(fèi)的狀態(tài),不利于資源的有效利用和共享經(jīng)濟(jì)的實(shí)行。
同時(shí),高校學(xué)生打印需求多樣化,對(duì)排版編輯、紙張大小、紙張品質(zhì)等要求眾多,而打印門(mén)店提供的多數(shù)為基本服務(wù),無(wú)法滿(mǎn)足打印的各類(lèi)需求。當(dāng)下打印資料主要依靠U盤(pán)拷貝的形式進(jìn)行文檔的傳輸,而U盤(pán)是電腦病毒傳播的主要途徑,可能會(huì)損壞本地硬盤(pán)資料造成文件破壞,進(jìn)而造成經(jīng)濟(jì)損失。目前提供文檔編輯的軟件琳瑯滿(mǎn)目,不同軟件在傳輸和使用中存在格式兼容的問(wèn)題,一旦文件拷貝到電腦中出現(xiàn)亂碼等情況時(shí),需要人工進(jìn)行手動(dòng)調(diào)節(jié),時(shí)間花費(fèi)長(zhǎng)且服務(wù)體驗(yàn)較差。
云打印成本小,能夠靈活地在辦公區(qū)域、學(xué)生宿舍、教學(xué)樓、社會(huì)上的便利店等人群密集且人流量大的場(chǎng)所進(jìn)行投放和使用。無(wú)人值守的自主打印能夠降低運(yùn)營(yíng)成本,云打印作為移動(dòng)互聯(lián)網(wǎng)應(yīng)用,操作簡(jiǎn)單,使用便利,兼容多種格式的文檔,滿(mǎn)足用戶(hù)多樣化的打印需求,極大地提高校園內(nèi)的打印效率。
新型云打印依托方便的小程序等媒介實(shí)現(xiàn)線(xiàn)上文檔、照片打印,極大地創(chuàng)新了打印的方式。用戶(hù)可根據(jù)入駐商家的設(shè)置,進(jìn)行線(xiàn)下的自主提取或文件派送,打破用戶(hù)在使用時(shí)間和空間上的限制,便捷而高效。
新型的云打印則采用云端儲(chǔ)存的方式,用戶(hù)將文檔上傳至云端服務(wù)器,待打印完成后,平臺(tái)將自動(dòng)刪除相關(guān)文檔的所有信息,整個(gè)過(guò)程自動(dòng)化操作,無(wú)須人工干預(yù)。云端儲(chǔ)存的形式也減少了U盤(pán)病毒相互交叉感染的風(fēng)險(xiǎn),系統(tǒng)整體安全性高,用戶(hù)信息和數(shù)據(jù)安全得到根本性的保障。
云打印系統(tǒng)基于MVC架構(gòu)進(jìn)行分層設(shè)計(jì)(見(jiàn)圖1),在基礎(chǔ)的展示層、控制層和數(shù)據(jù)層上,繼續(xù)細(xì)分出了業(yè)務(wù)層和公共基礎(chǔ)設(shè)施層。展示層是面向微信小程序、“Windows”服務(wù)商客戶(hù)端的前端部分,負(fù)責(zé)為用戶(hù)展示豐富的界面信息??刂茖迂?fù)責(zé)展示層請(qǐng)求的轉(zhuǎn)發(fā)和鑒權(quán)驗(yàn)證,此層的Interceptor會(huì)對(duì)接收到的請(qǐng)求中攜帶的token進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)后方會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到Controller中進(jìn)行后續(xù)處理。業(yè)務(wù)層是云打印系統(tǒng)中最為核心的一層,負(fù)責(zé)處理云打印邏輯,如文件管理、打印機(jī)管理、訂單相關(guān)管理、服務(wù)商管理、商家客戶(hù)點(diǎn)對(duì)點(diǎn)咨詢(xún)模塊。數(shù)據(jù)層提供用戶(hù)和系統(tǒng)的數(shù)據(jù)持久化和緩存功能,負(fù)責(zé)數(shù)據(jù)的讀取、寫(xiě)入操作;數(shù)據(jù)庫(kù)操作通過(guò)ORM框架進(jìn)行。公共基礎(chǔ)設(shè)施層包括通用的邏輯處理模塊、Spring的控制反轉(zhuǎn)模塊、日志模塊和云印功能單元測(cè)試模塊。
圖1 云打印系統(tǒng)架構(gòu)圖
云打印服務(wù)系統(tǒng)分有兩個(gè)客戶(hù)端,一個(gè)為普通用戶(hù)端,供需要打印的用戶(hù)使用(見(jiàn)圖4);另一個(gè)為商家客戶(hù)端,供文印店或其他商家使用(見(jiàn)圖3)。打印店商家只需安裝云印客戶(hù)端,再通過(guò)簡(jiǎn)單配置,即可零成本地將傳統(tǒng)打印機(jī)接到云打印平臺(tái),實(shí)現(xiàn)無(wú)人值守自動(dòng)打印,周?chē)脩?hù)即可立即下單。同時(shí)商家客戶(hù)端還提供了許多人性化的功能,如可同時(shí)自動(dòng)監(jiān)控多臺(tái)打印機(jī)、收入自動(dòng)提現(xiàn)、訂單管理等功能。商家客戶(hù)端的工作過(guò)程如圖2所示。
圖2 服務(wù)商客戶(hù)端工作時(shí)序圖
圖3 服務(wù)商客戶(hù)端界面
圖4 云打印系統(tǒng)用戶(hù)端查詢(xún)打印機(jī)列表界面
(1)文件轉(zhuǎn)碼可靠性。為確保文件格式的兼容性,文件統(tǒng)一在文件服務(wù)器進(jìn)行轉(zhuǎn)碼管理等操作,防止由于商家操作系統(tǒng)的不兼容帶來(lái)文件的亂碼等錯(cuò)誤。轉(zhuǎn)碼模塊使用國(guó)產(chǎn)WPS的COM組件。通過(guò)在項(xiàng)目工程中引入Jacob依賴(lài),調(diào)用Jacob組件的ComThread來(lái)初始化COM資源;接著調(diào)用Dispatch的invoke方法為轉(zhuǎn)換的文檔打開(kāi)視圖,并傳入name為ExportAsFixedFormat的參數(shù)來(lái)將文件轉(zhuǎn)換為PDF文件;最后再調(diào)用ComThread.Release來(lái)釋放COM資源。轉(zhuǎn)換完成后,通過(guò)調(diào)用File.Delete方法刪除原文件,以降低磁盤(pán)空間占用。
(2)打印過(guò)程可靠性。在用戶(hù)創(chuàng)建打印任務(wù)之后,打印任務(wù)需要指派給對(duì)應(yīng)的打印機(jī)進(jìn)行打印。安裝在打印店電腦上的服務(wù)商客戶(hù)端會(huì)自動(dòng)從后端拉取它對(duì)應(yīng)的打印任務(wù)進(jìn)行打印,打印完成之后客戶(hù)端會(huì)通知后端,后端再發(fā)送小程序模板消息通知用戶(hù)打印成功。服務(wù)商客戶(hù)端通過(guò)使用WMI(Windows管理技術(shù))來(lái)進(jìn)行打印機(jī)的管理、打印任務(wù)的添加和管理,保證了整個(gè)打印過(guò)程的可靠性。
為了確保用戶(hù)在下單之后,服務(wù)商客戶(hù)端能在第一時(shí)間獲取打印任務(wù)并進(jìn)行打印,客戶(hù)端和服務(wù)器之間使用了WebSocket進(jìn)行數(shù)據(jù)交換。WebSocket是一種全雙工通信的協(xié)議,客戶(hù)端和服務(wù)器只需要完成一次握手,就可以進(jìn)行雙向數(shù)據(jù)傳輸。服務(wù)商在客戶(hù)端登錄之后,并主動(dòng)帶上登錄憑證去與服務(wù)端建立WebSocket連接。服務(wù)端的攔截器對(duì)憑證校驗(yàn)通過(guò)之后,連接便成功建立。之后客戶(hù)端會(huì)主動(dòng)調(diào)用subscribe方法來(lái)訂閱自己的頻道,每個(gè)頻道對(duì)于不同的服務(wù)商都是唯一的,以便服務(wù)端及時(shí)向客戶(hù)端推送消息。后端對(duì)消息的發(fā)送與接收有嚴(yán)格的檢查,會(huì)在緩存中存放接收到的消息的唯一標(biāo)識(shí),并利用LRU算法刷出過(guò)期數(shù)據(jù),以防止某些場(chǎng)景下消息的重復(fù)發(fā)送而導(dǎo)致重復(fù)打印。
(3)打印機(jī)列表快速查詢(xún)。該系統(tǒng)可以為用戶(hù)優(yōu)先推薦距離最近的打印機(jī),讓用戶(hù)可以就近選擇打印機(jī)。由于該功能是系統(tǒng)的核心功能,也是訪(fǎng)問(wèn)最為頻繁的接口,因此響應(yīng)時(shí)間必須要快,故通過(guò)GeoHash算法和Redis中間件來(lái)實(shí)現(xiàn)該功能。
周邊查詢(xún)的傳統(tǒng)方式是根據(jù)經(jīng)緯度坐標(biāo)進(jìn)行距離的計(jì)算,并將滿(mǎn)足精度的目標(biāo)篩選顯示。這種查詢(xún)方式不僅需要強(qiáng)大的數(shù)據(jù)庫(kù)和服務(wù)器支持,對(duì)于查詢(xún)精度以及查詢(xún)效率也是一個(gè)極大的挑戰(zhàn)。GeoHash是一種地理編碼,可以把目標(biāo)經(jīng)緯度坐標(biāo)轉(zhuǎn)換為類(lèi)URL的字符串編碼,在保證目標(biāo)位置精度的情況下,減少傳統(tǒng)經(jīng)緯度表示方法產(chǎn)生的冗余,因而被廣泛應(yīng)用于地物周邊查詢(xún)、地理圍欄技術(shù)中,可提供更加精準(zhǔn)的周邊打印機(jī)推薦。
而Redis則為GeoHash算法提供了高效的實(shí)現(xiàn),它將經(jīng)緯度轉(zhuǎn)化成長(zhǎng)度為52位的整數(shù),將該數(shù)值作為score值,然后將其存放在zset里面。首先在Redis中使用geoadd來(lái)將通過(guò)GeoHash算法轉(zhuǎn)換后的打印機(jī)的經(jīng)緯度添加進(jìn)zset中,然后使用georadius命令,如georadius printer_list 23.12 114.2 10 km WITHDIST,即可獲得緯度23.12,經(jīng)度114.2所在位置的周邊10km內(nèi)的打印機(jī)列表。由于Redis是將元素存儲(chǔ)在內(nèi)存中,因此計(jì)算十分快速,符合為用戶(hù)高效查詢(xún)附近打印機(jī)的目標(biāo)。
(4)系統(tǒng)QoS保障。云打印系統(tǒng)通過(guò)目前業(yè)界流行的彈性可伸縮的云計(jì)算服務(wù)以及可無(wú)縫擴(kuò)展的集群架構(gòu),來(lái)提供穩(wěn)定可靠的云打印服務(wù)以及應(yīng)對(duì)容量需彈性變配的業(yè)務(wù)需求。小程序與服務(wù)商客戶(hù)端通過(guò)https協(xié)議進(jìn)行傳輸加密和身份認(rèn)證來(lái)保證傳輸過(guò)程的安全性。系統(tǒng)使用Nginx作為Web服務(wù)器,通過(guò)配置以下信息,來(lái)為系統(tǒng)的多臺(tái)服務(wù)器提供負(fù)載平衡和緩沖服務(wù)。
upstream cloudprintingserver {
least_conn;
server 127.0.0.1:10023;
server 127.0.0.1:10024;
}
server {
listen 80;
server_name localhost;
location/{
root html;
proxy_pass http://cloudprintingserver;
}
}
為應(yīng)對(duì)數(shù)據(jù)存儲(chǔ)規(guī)模迅速增長(zhǎng)所帶來(lái)的瓶頸問(wèn)題,使用了Mycat數(shù)據(jù)庫(kù)中間件進(jìn)行讀寫(xiě)分離、分庫(kù)分表以及自動(dòng)故障切換等,來(lái)保證系統(tǒng)的高可用性。
云打印是以移動(dòng)互聯(lián)網(wǎng)技術(shù)為基礎(chǔ),將閑置打印資源進(jìn)行整合接入,融合便捷的移動(dòng)支付體系,提高打印設(shè)備的使用效率,促進(jìn)資源的有效利用。智能共享云打印服務(wù)的低成本接入特點(diǎn)能夠幫助商家高效進(jìn)行組織打印,同時(shí)還優(yōu)化了傳統(tǒng)打印模式中煩瑣的打印準(zhǔn)備、結(jié)算等環(huán)節(jié),摒除多余的人工,實(shí)現(xiàn)了更低的維護(hù)成本。在實(shí)現(xiàn)更好的普惠性打印服務(wù)方面,云打印平臺(tái)具有良好的前景,例如能夠通過(guò)與便利店等結(jié)合,推動(dòng)打印行業(yè)門(mén)檻的降低和實(shí)現(xiàn)更便利的打印服務(wù)。為響應(yīng)國(guó)家發(fā)展戰(zhàn)略要求的號(hào)召,后續(xù)可推動(dòng)云打印實(shí)現(xiàn)自主可控平臺(tái)上辦公軟件的轉(zhuǎn)化,實(shí)現(xiàn)可安全管控、安全共享的云打印服務(wù)。