張源泉
(廣東省機械技師學院,廣州510450)
基于Citrix技術的連鎖藥店結賬系統遠程共享的設計和實現
張源泉
(廣東省機械技師學院,廣州510450)
昂貴的連鎖藥店結賬軟件使經營者的成本急劇上升,Citrix技術能讓一套軟件同時分享給多個異地門店使用,高效的連接方式讓結賬方順利完成業務操作。描述在當前銷售行業以此技術實現銷售管理系統的遠程管理與遠程服務。這個軟件系統,分為前臺操作和后臺管理,以數據庫為數據存儲媒介。數據庫數據分別是本軟件的用戶信息和遠程服務器信息。
Citrix;ICA協議;遠程控制;大型軟件共享
連鎖藥店往往需要通過軟件入賬,減庫存等操作來實現數據業務。這些連鎖店鋪的數量往往關系到該軟件的終端授權費用,門店越多,授權費越高。為了解決高昂的授權費,基于Citirx ICA協議平臺下,開發藥店終端連接系統,減少授權數量,減低費用。
Citrix技術是基于ICA協議,ICA協議全稱為Independent Computing Architecture Protocol,支持TCP/ IP、IPX/SPX和NetBEUI等多種協議的,并且可以適應網絡速度極差的環境[1]。Citrix擁有數據獨立和服務器應用管理體系結構的產品Citrix MetaFrame系列軟件,能利用ICA協議實現應用程序集中發布和管理等要求[2]。這項技術是由Citrix公司研發,目前應用于大多數全球500強企業[3]。在藥店行業ERP系統中,結合Citrix ICA技術,研發出軟件來實現遠程ERP系統的調用。藥店的ERP系統運營時,為了安全和方便因素,會在管理信息上采取一些加密措施,而使用了Citrix ICA技術后,可在此基礎上更進一步加密。Citrix ICA本身是支持加密功能的,而且可以選擇加密的程度,這樣數據在網絡中以密文傳輸。網絡環境較好或對保密性要求很高的單位可以選擇高強度加密。通過使用該技術,可使藥店行業對軟件購買成本大大減少。因為它是基于共享的遠程終端訪問,即一臺服務器安裝銷售系統;在任何一個地方任何一臺能聯網的客戶機可聯接到銷售系統并實現遠程操作。財務行業對信息數據的保密性和完整性要求非常高,而ICA協議在這方面正是強項。
現有的該類產品大部分是使用Citrix ICA Client和Borland Delphi(C++Builder)開發的,由Citrix公司提供公共庫,可調用公共庫進行網絡連接,數據操作,界面顯示。與此同時,微軟也有自己的RDP協議,可實現ICA協議的部分功能,但在使用效果上分析,RDP協議的效率遠遠低于ICA協議。在Win2003下,RDP協議只支持TCP/IP協議傳輸數據。RDP協議不能在其他非微軟系列的平臺下使用。所以,使用RDP協議來開發的產品實際并不多。當軟件離線時,在恢復網絡后能自動還原登錄狀態。
該藥店終端軟件系統的編程平臺使用Delphi 2010,數據庫使用Access;服務器操作系統和客戶機操作系統都是Win2003,采用的庫為Citrix ICA Client Lib[4]。
(1)軟件模式:這個軟件可以用C/S模式實現,也可以用Web(B/S)模式實現。為了程序操作的高效率,優先使用C/S模式開發。
(2)客戶端連接:網絡連接可直接使用Citrix ICALib提供的事件方法,無須人為手寫。對ICA Client屬性值的改變,可使軟件確定訪問的服務器位置。
(3)數據存儲:利用Access數據庫存儲軟件用戶登錄識別信息和服務器信息,對用戶名和密碼進行加密處理,防止Access數據庫被惡意破解。遠程服務器的登錄信息一旦被惡意獲取,將會使高權限的用戶暴露。這種情況對服務器產生的威脅相當大。
(4)服務器配置:
①安裝Citrix MetaFrame平臺
②激活終端服務授權
(5)權限控制:
①遠程登錄軟件自身的權限控制,分系統管理員和普通用戶;
②遠程服務器的用戶權限,可設置多種級別不同權限。安全防范要結合這兩點。
(1)模塊劃分

圖1
(2)程序流程設計
①身份驗證流程:

圖2
②賬號管理流程圖

圖3
③軟件注冊繳費流程圖

圖4
④邏輯數據結構設計

表1 Color表

表2 Login表

表3 Sound表

表4 Data表
⑤物理數據結構設計
●軟件的注冊信息以MD5方式加密后保存在注冊表中,每次啟動軟件時,都會讀取保存位置的數值,用此數值來驗證是否已經繳費購買軟件。
●保存位置:HKEY_LOCAL_MACHINE/SOFTWARE/Company/Reg
●綜合輕巧簡便的目的,選用Access作為軟件信息保存的數據庫。數據庫文件必須改后綴名和自身加密處理,以提高被破解的難度。數據庫文件存放于軟件的目錄底下,暫命名data.ini。
●用戶信息存放于login表。服務器登錄信息存放于data表。color表存放登錄界面的顏色數量級別和sound表存放是否需要聲音傳輸,它們存放枚舉數據,這樣的好處是業務處理和數據存儲分離,方便后期維護,減少維護成本。
●考慮到安全因素,服務器登錄信息與用戶賬號信息都必須加密后才能保存入數據庫,需要用到時才進行逆向解密。
●采用壓縮方式為軟件打包,使得軟件只有一個exe可執行文件。文件會被解壓到指定的目錄里,解壓完畢自動運行軟件真正的exe可執行文件。這樣做的好處是保證了用戶的簡便性,對普通用戶屏蔽掉一些不必要的顯示與操作。
(1)系統設計與實現
系統需要程序非常穩定地工作,與服務器信息連為一體,與網絡高效率通訊緊密結合。根據這樣情況的分析,需要實現以下設計目標:
●實時性,系統必須對遠程服務器的實時反饋高效顯示,高效執行。
●安全性,系統必須保證普通用戶無法破解軟件,不能有明顯的系統bug。
●高性能,同一計算機同時開啟服務器登錄窗口多個,必須保證每個窗口運行流暢。
●易操作性,根據用戶的特點,設計方便的功能按鈕布局。
(2)身份驗證模塊

圖1 登陸界面
設計思路:當輸入完賬號和密碼后,點擊“登錄”按鈕,系統從數據庫中檢索用戶輸入的賬戶名和密碼是否有相同的匹配。如果找到匹配項,再判斷賬戶名的權限是屬于系統管理員還是普通用戶。如果賬戶是系統管理員,顯示系統管理員窗口;如果賬戶是普通用戶,則顯示普通用戶窗口。
主要代碼是:


(3)界面按鈕生成模塊

圖2 用戶界面
設計思路:當完成驗證操作,且成功登錄后,系統將自動顯示用戶界面。用戶界面由右邊一小區域的按鈕組成外,其余大部分區域為遠程服務器按鈕區。
①右邊的按鈕分別有退出登錄、最小化面板、修改密碼、注冊購買。功能分別是:退出登錄等于退出軟件并且釋放遠程服務器資源,假設有登錄遠程服務器。該按鈕擺放在此處的好處是方便用戶關閉軟件;最小化面板等于用戶界面窗口最小化操作,可方便用戶的操作;修改密碼可以修改當前用戶的密碼,避免密碼泄露后,無法修改密碼;注冊購買主要是提醒用戶如何購買軟件。
②左邊的按鈕功能為遠程服務器按鈕,按鈕下方顯示遠程服務器上設置軟件的名稱。按鈕中的圖標和按鈕的名稱可在本軟件的系統管理員界面中修改。顯示用戶界面之前,本軟件讀取數據庫3-2 Data表。根據里邊的記錄數量對應地顯示出遠程服務器按鈕數量,保存入變量。本軟件循環讀取數據庫記錄,每次讀完一條,馬上把圖標生成在左邊區域中,且計算好所要擺放的位置,然后根據圖標的選擇,把圖標信息顯示在按鈕上。最后在按鈕的tag屬性里邊賦值序號并且指定按鈕的事件。
③當用戶點擊按鈕時,按鈕事件執行數據庫讀取操作。根據按鈕的tag屬性值來確定是讀取數據庫中的哪一條數據。當讀取到需要的數據時,把數據的每一項值寫入到datamodule里邊的全局變量。下一步產生一個RemoteServer窗體,并且從datamodule里邊的全局變量中讀取信息,更改remoteServer窗體的標題和執行其他后續操作。
按鈕產生的核心算法:



(4)客戶端信息存儲模塊

設計思路:當用戶以系統管理員身份登錄之后,將進入此界面。界面是上中下結構的。當用戶錄入完數據并且系統提示成功保存后,數據將會存放在Access數據庫里邊。
①上方是一排按鈕和一個選擇框,密碼框。功能有三個,第一個選擇要登錄的服務器,登錄系統按鈕可以按選中的服務器帳套名稱登錄到指定的服務器;第二個更改密碼可以更改系統管理員密碼也可以更改普通用戶密碼;第三個注冊繳費按鈕點擊后顯示的是注冊繳費界面。
②中間界面顯示的是系統管理員錄入的遠程服務器信息,當保存完畢后,將在上方的選擇框里邊顯示所有記錄的帳套信息
③下方四個按鈕的作用分別是中間界面新增一行、刪除一行、確認提交、刷新數據。
(5)用戶付款注冊模塊
設計思路:
①要對軟件實現試用版和正式版,必須要有一個驗證機制。設計一個Timer,以一定的時間周期檢測該軟件是否已經注冊,如果注冊,則跳過Timer后續事件,否則執行關閉軟件的操作。軟件啟動時,Timer enable屬性等于true。
②為了避免一個注冊碼多部計算機都可注冊的情況,我們設計出對于不同計算機,注冊碼不一樣的機制。取計算機中的硬件信息作為甄別不同計算機的依據,這里取網卡地址和計算機名。根據算法計算,為用戶的機器生成注冊號。在軟件中依據注冊號與注冊碼的對應關系,檢驗是否成功注冊。
(6)賬號管理模塊
設計思路:
數據庫操作有查詢、修改、增加、刪除。擁有系統管理員權限的用戶在對用戶賬號的添加修改,當增加一個用戶時,對該用戶記錄中的權限一欄寫入一個權限值。權限分兩種,系統管理員和普通用戶。系統管理員可以對其他用戶進行增加或刪除操作,而普通用戶無此功能。
通過使用Citrix ICA協議來進行定制可以的客戶端軟件。在各大不同的行業中,只要用到遠程共享,遠程控制的地方,都可以使用此方案。優點有很多,統一管理、高效率、平臺無關性、服務器支持集成等。這里高效率體現在一臺普通的小型服務器可容納幾十臺客戶端同時連接并且同時訪問服務器數據,占用的帶寬非常小。平均下來,一個客戶端只需要5kbps-10kbps。一條普通寬帶變可以滿足30幾個客戶端同時訪問服務器的要求。另外Citrix ICA技術還支持多種不同的網絡協議,不局限于TCP/IP協議,也可以在不同的平臺下工作,這里邊包括了Unix、Linux、手持掌上電腦等。微軟公司的遠程終端技術只支持一臺主機做服務器,而Citrix ICA支持多臺主機同時做為服務器使用。
[1]黃慶,周文靜.計算機網絡協議及其應用分析[J].教育技術導刊,2009,01:142-144.
[2]孫劍,杜猛俊.MetaFrame網絡終端的應用[J].電子技術,2006,33(03):69-71.
[3]DONG Hui,FANG Jin-yun,ZHAO Hong-chao,CHENG Zhen-lin.Design and Implementation of Remote Software Sharing System Based on Citrix[J]Computer Engineering,2009,35(1):49-51,54.
[4]梁水.Delphi程序開發范例寶典[M].人民郵電出版社,2010.
Design and Implementation of Remote Share of Chain Drugstore Checkout System Based on Citrix Technology
ZHANG Yuan-quan
(Department of Information Engineering and Art Design,Guangdong Machinery Technician College,Guangzhou 510450)
Expensive chain drugstore checkout software enables the operator's costs rose sharply,Citrix technology allows a set of software simultaneously share to multiple remote stores use,efficient way to make the connection complete operational checkout.Describes the current sales industry as technology sales management system for remote management and remote services.The software system is divided into front and back office operations management,database data storage media.Database of user information data are the software and the remote server information.
Citrix;ICA Protocol;Remote Control;Software Sharing
1007-1423(2016)16-0071-06DOI:10.3969/j.issn.1007-1423.2016.16.020
張源泉(1987-),男,廣東饒平人,本科,研究方向為圖像處理、軟件設計等
2016-04-27
2016-05-26