基於開源SuperSocket實現客戶端和服務端通信項目實戰
摘要
本期帶給大家分享的是阿笨在實際工作中遇到的真實業務場景,請跟隨阿笨的視角去如何一步步解決WEB網頁快速批量列印,如果您對本期的教程內容感興趣,那麼請允許讓阿笨帶著大家一起學習吧!
廢話不多說,直接上乾貨,我們不生產乾貨,我們只是乾貨的搬運工。
一、需求背景介紹
大概是2年以前工作中碰到的一個實際項目,在倉儲物流系統中,列印是一個很頻繁的操作環節,倉庫每天經常需要大批量的在WEB網頁上列印功能。比如內部HTML標籤、郵遞標籤(10x10,10x16.5,10x20)、發貨清單(A5)以及電池信和發票(A4)以及物流商返回的PDF格式的郵遞標籤文件,所以列印環節的快慢直接影響倉庫操作人員的操作便捷性和倉庫的發貨效率。
1.1、大家都知道WEB網頁上列印的過程:
一般分為:1、掃描包裹條形碼後點擊列印按鈕=>2、在線彈出列印對話框=>3、選擇對應的列印這三個步驟。
如果同時列印知識,假如一次性批量列印不同種類的SKU產品條碼這種方式極大的繁瑣給客戶帶來不友好的體驗。因此我們當時考慮將WEB網頁列印方式能不能調整為桌面客戶端列印實現,但是為了更好的與現有WEB網頁業務系統集成,故又不想重新獨立開發出一套客戶端列印系統,那麼我們能不能開發出一套列印組件,完全與業務邏輯分離只接管列印工作呢?答案是:肯定OK!
1.2、WEB網頁和WinForm桌面客戶端列印的優缺點
WEB網頁列印方式存在的缺陷:
1)、大批量列印SKU產品條碼,會經常出現走紙偏移的問題,需要經常人工校驗列印走紙;
2)、不能同時一次性列印不同規格的紙張,只能單個規格類型的進行列印;等等。。。
WinForm桌面客戶端列印優勢:
1)、可以動態的切換本地默認印表機,實現根據配置文件自動匹配印表機無需人工選擇,直接將列印默認文件發送指定的印表機;
2)、無需像瀏覽器一樣安裝單獨PDF在線瀏覽插件,C#有程序的組件專門針對PDF文件格式列印;
等等。。。
1.3、那麼我們今天要解決的問題可以總結為下面的一句話:
如何讓WEB網頁端和桌面客戶端進行交互通訊?
二、實現原理圖
三、涉及覆蓋的知識點
.NET WebService基本使用技巧;
WinForm中如何使用WebBroswer瀏覽器控制項進行HTML頁面的列印;
TCP/IP通訊組件SuperSocket實現服務端向指定的客戶端推送(push)消息; 服務端crash或者重啟後客戶端如何實現自動斷線重連; 如何防止IIS自動回收應用程序進程; Redis消息隊列存儲用戶離線數據實現消息的持久化;
四、源代碼在線演示和解讀
推薦閱讀:
※如何提升ASP.NET網站首次打開速度?
※如何在幾天之內將數萬行C#代碼移入Flex?
※如何評價.NET Core 1.0稱使用.NET Core運行速度是Node.js的八倍,Go的三倍?
※學.net有前途嗎?