張向明
摘要: 為提高高校大學(xué)生電子設(shè)計(jì)競(jìng)賽元器件管理效率,提高電子元器件利用率,設(shè)計(jì)和開(kāi)發(fā)了一套智能化的電子元器件管理系統(tǒng)。系統(tǒng)基于MIDAS和ADO技術(shù),結(jié)合高校電子設(shè)計(jì)競(jìng)賽日常培訓(xùn)中電子元器件的管理特點(diǎn),采用多層分布式架構(gòu),對(duì)電子元器件管理系統(tǒng)進(jìn)行了設(shè)計(jì)與實(shí)現(xiàn),系統(tǒng)全程使用條碼化管理。開(kāi)發(fā)結(jié)果表明,系統(tǒng)具有簡(jiǎn)便易用,高效快捷等優(yōu)點(diǎn),將更有利于提高實(shí)驗(yàn)室日常實(shí)訓(xùn)中電子元器件的發(fā)放與回收、采購(gòu)與庫(kù)存預(yù)警等管理工作效率。
關(guān)鍵詞: 多層分布式應(yīng)用服務(wù)包; 電子競(jìng)賽; 電子元器件管理系統(tǒng); ADO技術(shù)
中圖分類(lèi)號(hào): TN919?34; TP311 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)08?0108?05
Design and development of?MIDAS?based electronic component management?system
for university electronic design contest
ZHANG Xiang?ming
(College of computer science, South?Central University for Nationalities, Wuhan 430074, China )
Abstract: In order to improve the management efficiency of components for the undergraduate electronic design contest, and raise the utilization rate of electronic components, a set of electronic component management system based on MIDAS (multi?tier distributed application services suite) and ADO technology was designed and developed. In combination with the management features of electronic components in daily training of electronic design contest in colleges and universities, a distributed multi?tier architecture was used in the electronic components management system design and implementation. The bar code technology was adopted in the system. The results show that the developed system has the advantages of simple operation, high efficiency, and can improve the management efficiency of distribution, collection, laboratory procurement and inventory early warning of electronic components.
Keywords: multi?tier distributed application services suite; electronic device competition; electronic component management system; and chips; ADO technology
0引言
隨著中國(guó)教育體制改革的不斷推進(jìn),各高校越來(lái)越重視學(xué)生創(chuàng)新能力的培養(yǎng)與訓(xùn)練,以期達(dá)到提升學(xué)生創(chuàng)新素質(zhì)、增強(qiáng)學(xué)生適應(yīng)市場(chǎng)和社會(huì)的目的。全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽是一項(xiàng)面向理科學(xué)生的重要賽事,其全國(guó)競(jìng)賽組委會(huì)由國(guó)家教育部、信息產(chǎn)業(yè)部及部分參賽省市教委代表及電子類(lèi)專(zhuān)家組成,負(fù)責(zé)全國(guó)競(jìng)賽的組織領(lǐng)導(dǎo)、協(xié)調(diào)工作,其重要性不言而喻[1?2]。
競(jìng)賽要使用到大量的電子元器件,涉及的元器件品種多達(dá)幾百種,且使用數(shù)量繁多。學(xué)生在競(jìng)賽前期的實(shí)訓(xùn)中,需要頻繁地領(lǐng)用元器件,高校實(shí)驗(yàn)室管理人員需要對(duì)元器件的消耗情況進(jìn)行匯總,對(duì)貴重器件進(jìn)行登記與跟蹤,同時(shí)還要對(duì)元器件庫(kù)存有充分的了解,以便對(duì)元器件庫(kù)進(jìn)行有效合理的補(bǔ)充。目前很多高校的元器件管理工作仍處在于手工管理狀態(tài):仍然以手工方式登記學(xué)生領(lǐng)用情況,以人工方式對(duì)器件進(jìn)行跟蹤,目測(cè)元器件庫(kù)存是否充足,學(xué)生領(lǐng)用元器件查找費(fèi)時(shí),這些問(wèn)題極大地影響了電子競(jìng)賽的高效管理[3]。
為提高競(jìng)賽管理效率及元器件使用率,將構(gòu)建一套智能化的電子元器件管理系統(tǒng)。因競(jìng)賽實(shí)訓(xùn)工作均在學(xué)校內(nèi)完成,故將系統(tǒng)的架構(gòu)設(shè)計(jì)為三層C/S(客戶(hù)/服務(wù)器)結(jié)構(gòu),采用MIDAS和ADO技術(shù)來(lái)開(kāi)發(fā)系統(tǒng),按軟件工程理論和方法對(duì)系統(tǒng)的各項(xiàng)模塊進(jìn)行設(shè)計(jì),實(shí)現(xiàn)元器件采購(gòu)計(jì)劃管理、元器件入庫(kù)、學(xué)生領(lǐng)用元器件、元器件查詢(xún)、元器件統(tǒng)計(jì)分析等主要功能。
1系統(tǒng)架構(gòu)和開(kāi)發(fā)環(huán)境
基于高校電子設(shè)計(jì)競(jìng)賽的實(shí)際情況,系統(tǒng)采用C/S架構(gòu)的多層分布式環(huán)境來(lái)開(kāi)發(fā),使用DELPHI7.0為開(kāi)發(fā)平臺(tái),充分地運(yùn)用其MIDAS,ADO等技術(shù)來(lái)構(gòu)建一個(gè)基于數(shù)據(jù)服務(wù)層、業(yè)務(wù)邏輯應(yīng)用服務(wù)層及客戶(hù)層的分布式智能化管理系統(tǒng),開(kāi)發(fā)過(guò)程中使用的一些相關(guān)技術(shù)分析如下:
1.1多層分布式系統(tǒng)
分布式結(jié)構(gòu)實(shí)際上是一種分布式應(yīng)用系統(tǒng),被分成數(shù)個(gè)不同的部分并且被執(zhí)行在不同的機(jī)器之中,引入了應(yīng)用程序服務(wù)器概念,應(yīng)用程序服務(wù)器是一個(gè)包含系統(tǒng)業(yè)務(wù)邏輯的應(yīng)用程序,以一種特定的組件形態(tài),如MicroSoft的COM/DCOM,CORBA等對(duì)象,封裝應(yīng)用系統(tǒng)的邏輯程序代碼,執(zhí)行特定企業(yè)功能,然后把這些企業(yè)對(duì)象分發(fā)到應(yīng)用服務(wù)器。
1.2體系結(jié)構(gòu)
三層或多層體系結(jié)構(gòu)中比二層C/S結(jié)構(gòu)增加了一個(gè)中間層到客戶(hù)端和數(shù)據(jù)庫(kù)端間。中間層的實(shí)現(xiàn)有多種方法,目前最常用的是應(yīng)用服務(wù)器,把使用的事務(wù)和消息服務(wù)器看作應(yīng)用系統(tǒng)的基礎(chǔ)“中間件”平臺(tái)[4],客戶(hù)端程序不直接與數(shù)據(jù)庫(kù)服務(wù)器通信,而是通過(guò)中間層?應(yīng)用服務(wù)器來(lái)訪問(wèn),當(dāng)有客戶(hù)端程序發(fā)出數(shù)據(jù)請(qǐng)求時(shí),通過(guò)指令傳送到應(yīng)用服務(wù)器,應(yīng)用服務(wù)器接到指令后,調(diào)用相應(yīng)函數(shù)(Function)、過(guò)程(Procedure)等業(yè)務(wù)邏輯來(lái)向數(shù)據(jù)庫(kù)服務(wù)器發(fā)出指令,數(shù)據(jù)庫(kù)服務(wù)器經(jīng)過(guò)運(yùn)算后,將處理結(jié)果反饋至應(yīng)用服務(wù)器,再由應(yīng)用服務(wù)器將中間結(jié)果反饋至客戶(hù)端程序,從而大大減少數(shù)據(jù)庫(kù)端訪問(wèn)量過(guò)大的開(kāi)銷(xiāo),提高數(shù)據(jù)處理能力和系統(tǒng)運(yùn)行效率[5],如圖1所示。
圖1 三層C/S體系結(jié)構(gòu)
1.3MIDAS技術(shù)
多層分布式應(yīng)用服務(wù)包(Multi?tier Distributed Application Services Suite,MIDAS),在Delphi企業(yè)版里被用來(lái)創(chuàng)建多層應(yīng)用程序。MIDAS提供了一套高級(jí)組件、服務(wù)和核心技術(shù),可以簡(jiǎn)化跨平臺(tái)(Windows,UNIX,Linux)、跨產(chǎn)品的多級(jí)分布式應(yīng)用系統(tǒng)的開(kāi)發(fā),通過(guò)它可以用相同的組件訪問(wèn)不同的后端應(yīng)用程序服務(wù)器,在帶寬具有挑戰(zhàn)性的網(wǎng)絡(luò)中,與其他解決方案所產(chǎn)生的分布式應(yīng)用相比,具有更快、更容易和更高的特性[6]。
MIDAS三層體系結(jié)構(gòu)指邏輯上的三層,即應(yīng)用表示層、應(yīng)用邏輯層和數(shù)據(jù)層。應(yīng)用表示層主要負(fù)責(zé)用戶(hù)端界面,提供給用戶(hù)一個(gè)操作方便且簡(jiǎn)單快捷的應(yīng)用服務(wù)接口;應(yīng)用邏輯層(或?yàn)閼?yīng)用服務(wù)器)是整個(gè)結(jié)構(gòu)中最重要的部分,實(shí)現(xiàn)應(yīng)用程序的應(yīng)用邏輯處理;數(shù)據(jù)層(又為數(shù)據(jù)庫(kù)服務(wù)器)則負(fù)責(zé)數(shù)據(jù)的存取和管理。應(yīng)用邏輯層將業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問(wèn)及合法性檢驗(yàn)等工作放到了中間層進(jìn)行處理。通常情況下,客戶(hù)端不直接與數(shù)據(jù)庫(kù)進(jìn)行交互,而是通過(guò)通信協(xié)議與中間層建立連接,再經(jīng)由中間層與數(shù)據(jù)庫(kù)進(jìn)行交互。Delphi對(duì)多層分布式應(yīng)用程序的支持主要得益于其MIDAS技術(shù),該技術(shù)允許分割數(shù)據(jù)庫(kù)應(yīng)用程序,并實(shí)現(xiàn)對(duì)商業(yè)規(guī)則和進(jìn)程的集中管理[7]。
2系統(tǒng)分析與設(shè)計(jì)
2.1系統(tǒng)需求分析
在軟件工程理論中,需求分析是軟件工程設(shè)計(jì)最重要的一環(huán),是連通用戶(hù)與軟件開(kāi)發(fā)人員的橋梁,是整個(gè)開(kāi)發(fā)過(guò)程的重要基礎(chǔ)。電子元器件因種類(lèi)多、設(shè)計(jì)期間用量大、參賽參訓(xùn)人數(shù)多、實(shí)驗(yàn)人員管理雜等特點(diǎn),元器件管理系統(tǒng)需要有準(zhǔn)確、全面的一手用戶(hù)需求資料,從而設(shè)計(jì)出符合要求的功能需求,為電子設(shè)計(jì)競(jìng)賽實(shí)驗(yàn)室管理人員提供高效、準(zhǔn)確的統(tǒng)計(jì)與分析數(shù)據(jù),更好地做好服務(wù)[8]。歸納出以下需求:
(1) 元器件基本要素:元器件是元件和器件的概稱(chēng),包括元器件類(lèi)別、名稱(chēng)、規(guī)格、型號(hào)等要素。
(2) 元器件存放要素:為方便電子設(shè)計(jì)實(shí)訓(xùn)時(shí)學(xué)生快捷領(lǐng)用元器件,在元器件存放時(shí),嚴(yán)格按規(guī)定存放到指定編號(hào)的小器件單元,單元按元器件類(lèi)別分類(lèi)存放,按序編號(hào)。
(3) 元器件采購(gòu)要素:包括元器件類(lèi)別、名稱(chēng)、規(guī)格、型號(hào)、日期、數(shù)量、單價(jià)、供應(yīng)商等。
(4) 元器件的出庫(kù)要素:學(xué)生領(lǐng)用和元器件調(diào)撥,包括元器件類(lèi)別、名稱(chēng)、規(guī)格、型號(hào)、數(shù)量、出庫(kù)類(lèi)別、領(lǐng)用人學(xué)號(hào)、姓名(或被調(diào)撥單位名稱(chēng))、領(lǐng)用日期等要素。
(5) 用戶(hù)信息:包括實(shí)驗(yàn)室管理人員、學(xué)生,權(quán)限分為查詢(xún)、統(tǒng)計(jì)、入庫(kù)、出庫(kù)、可領(lǐng)用等。
(6) 系統(tǒng)的功能需求。根據(jù)電子設(shè)計(jì)競(jìng)賽實(shí)訓(xùn)元器件管理的特性及元器件發(fā)放的流程分析,電子元器件管理系統(tǒng)需要完成的功能有:元器件基本設(shè)置、采購(gòu)及入庫(kù)、元器件發(fā)放(或領(lǐng)用)、元器件調(diào)撥、元器件庫(kù)存統(tǒng)計(jì)及預(yù)警、元器件相關(guān)查詢(xún)等功能。
2.2系統(tǒng)的功能設(shè)計(jì)
通過(guò)上述的系統(tǒng)需要分析,設(shè)計(jì)出本系統(tǒng)應(yīng)完成的具體功能結(jié)構(gòu)(如圖2所示)。
圖2 元器件管理系統(tǒng)功能結(jié)構(gòu)圖
(1) 用戶(hù)權(quán)限管理功能模塊。電子設(shè)計(jì)競(jìng)賽日常培訓(xùn)由實(shí)驗(yàn)室工作人員管理,負(fù)責(zé)元器件的采購(gòu)計(jì)劃、元器件的發(fā)放與回收、庫(kù)存分析等工作。按用戶(hù)的實(shí)際操作范圍,生成不同的角色,每一角色具有不同的使用權(quán)限,然后為不同的操作用戶(hù)分配不同的角色。權(quán)限分為:普通管理員、超級(jí)管理員。
(2) 元器件倉(cāng)庫(kù)管理功能模塊。對(duì)元器件倉(cāng)庫(kù)按元器件的類(lèi)別進(jìn)行分類(lèi)管理,并按元器件的規(guī)格、型號(hào)來(lái)分別設(shè)置元器件倉(cāng)庫(kù)存放地點(diǎn),設(shè)置統(tǒng)一編號(hào)管理元器件倉(cāng)庫(kù)??蓪?shí)現(xiàn)按倉(cāng)庫(kù)編號(hào)查元器件名稱(chēng)、數(shù)量等操作;可根據(jù)元器件查找倉(cāng)庫(kù),方便學(xué)生領(lǐng)用時(shí)快速尋找元器件。
(3) 元器件進(jìn)庫(kù)管理功能模塊。根據(jù)年度采購(gòu)計(jì)劃;采購(gòu)后元器件入庫(kù)。入庫(kù)信息包含供應(yīng)商、價(jià)格、日期、倉(cāng)存單元編號(hào)等信息;該模塊能實(shí)現(xiàn)數(shù)據(jù)的錄入與修改操作及元器件的入庫(kù)和查詢(xún)匯總操作等功能。
(4) 元器件出庫(kù)功能模塊。元器件出庫(kù)方式主要有:學(xué)生領(lǐng)用元器件、元器件調(diào)撥。學(xué)生領(lǐng)用元器件,需先經(jīng)遠(yuǎn)程預(yù)約領(lǐng)用,由實(shí)驗(yàn)室人員按預(yù)約進(jìn)行發(fā)放;實(shí)驗(yàn)室人員能根據(jù)預(yù)先設(shè)定的元器件存放地址準(zhǔn)確找到元器件;元器件調(diào)撥必須要有調(diào)入單位信息,需經(jīng)超級(jí)管理員審核方可執(zhí)行。
(5) 元器件庫(kù)存預(yù)警功能模塊。根據(jù)實(shí)際庫(kù)存及系統(tǒng)預(yù)設(shè)預(yù)警數(shù)量,系統(tǒng)自動(dòng)并作出相應(yīng)庫(kù)存預(yù)警。
(6) 元器件倉(cāng)存統(tǒng)計(jì)查詢(xún)功能模塊。按各種統(tǒng)計(jì)要求設(shè)計(jì)各類(lèi)統(tǒng)計(jì)查詢(xún)功能,可統(tǒng)計(jì)某段時(shí)間內(nèi)元器件的使用量,并可生成各類(lèi)報(bào)表。
(7) 條碼管理。學(xué)生學(xué)號(hào)、元器件均采用條碼管理,方便錄入。
2.3系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)
電子元器件管理系統(tǒng)建立在局域網(wǎng)和關(guān)系數(shù)據(jù)庫(kù)的基礎(chǔ)之上,將存在于實(shí)際操作和數(shù)據(jù)庫(kù)中的數(shù)據(jù)抽象為業(yè)務(wù)邏輯對(duì)象,通過(guò)對(duì)象管理框架進(jìn)行管理。在此基礎(chǔ)上,構(gòu)建若干適應(yīng)電子競(jìng)賽用元器件實(shí)際情況的功能模塊,通過(guò)友好的用戶(hù)界面與用戶(hù)交互,完成電子設(shè)計(jì)競(jìng)賽和實(shí)驗(yàn)室人員元器件管理服務(wù)的系統(tǒng)。其中:
(1) 對(duì)象管理框架層:提供實(shí)現(xiàn)電子元器件管理的各種功能的核心構(gòu)架;
(2) 系統(tǒng)功能模塊層:在用戶(hù)界面層,用戶(hù)命令的處理均由各項(xiàng)功能模塊完成;
(3) 圖形用戶(hù)界面層:提供友好的交互式的圖形界面,使學(xué)生和實(shí)驗(yàn)室人員可以直觀方便地完成電子元器件管理系統(tǒng)的各項(xiàng)功能;
(4) 系統(tǒng)支持層:電子元器件管理系統(tǒng)是一個(gè)多層分布式的管理系統(tǒng),分布式技術(shù)及網(wǎng)絡(luò)技術(shù)有效支持分散數(shù)據(jù)的集中管理,而關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)操作功能有效支持了系統(tǒng)對(duì)象在底層數(shù)據(jù)庫(kù)的管理[9?10]。
3系統(tǒng)的具體實(shí)現(xiàn)與特點(diǎn)
根據(jù)多層分布式系統(tǒng)的結(jié)構(gòu)和電子元器件管理的特點(diǎn),分別實(shí)現(xiàn)該系統(tǒng)數(shù)據(jù)庫(kù)層、業(yè)務(wù)邏輯層、用戶(hù)表示層的詳細(xì)設(shè)計(jì)。
3.1系統(tǒng)數(shù)據(jù)庫(kù)層服務(wù)器的實(shí)現(xiàn)
根據(jù)電子元器件管理系統(tǒng)的功能要求,選取MicroSoft SQL Server 2000作為后臺(tái)數(shù)據(jù)庫(kù)。SQL Server2000具有強(qiáng)大的數(shù)據(jù)管理功能,支持?jǐn)?shù)據(jù)的完整性、安全性管理和并發(fā)控制。在數(shù)據(jù)庫(kù)服務(wù)器中構(gòu)建關(guān)系數(shù)據(jù)庫(kù)(ElecComponentsDb),建立若干個(gè)數(shù)據(jù)表,分別存放用戶(hù)權(quán)限管理、元器件類(lèi)別、元器件入庫(kù)資料、元器件領(lǐng)導(dǎo)用管理、元器件調(diào)撥等信息,并設(shè)置若干個(gè)由多個(gè)表JOIN連接的視圖,以設(shè)計(jì)各類(lèi)管理功能需要的交叉查詢(xún)功能。大量在客戶(hù)端不能完成的系統(tǒng)功能,全部設(shè)計(jì)為數(shù)據(jù)庫(kù)服務(wù)器端的存儲(chǔ)過(guò)程,用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)系統(tǒng)功能,達(dá)到了既快速,又安全的目的。主要存儲(chǔ)過(guò)程有:
(1) 元器件領(lǐng)庫(kù)存余量計(jì)算算法功能:PROCEDURE ElecChipsCalc;
(2) 元器件分類(lèi)匯總:PROCEDURE ElecChipsStas;
(3) 元器件進(jìn)倉(cāng)處理:PROCEDURE ElecCmpsIn;
(4) 元器件領(lǐng)用處理: PROCEDURE ElecCmpsOut等。
3.2應(yīng)用服務(wù)器的建立
(1) 使用數(shù)據(jù)集組件連接遠(yuǎn)程數(shù)據(jù)庫(kù)
使用Delphi7.0分布式VCL組件建立一個(gè)OLE Automation服務(wù)器,客戶(hù)端程序通過(guò)應(yīng)用服務(wù)器的IAppServer接口連接客戶(hù)端應(yīng)用程序供其調(diào)用。通過(guò)加入讀取INI文件中存儲(chǔ)的服務(wù)器、用戶(hù)名、口令等信息的代碼以及授權(quán)等信息碼后。從外置INI文件讀取信息的程序代碼如下:
sf:Tinifile;//INI文件實(shí)例
begin
sf:=Tinifile.Create(ExtractFilePath(Paramstr(0))+'ScunSys.ini');
with sf do
begin
edtserv.text:=readstring('system','Server','(Local)');
edtdb.text:=readstring('system','DbName','scunpersondb'); //
edtuser.text:=readstring('system','UserName','sa');
edtpwd.text:= readstring('system','password','**');
// 讀取服務(wù)器信息、數(shù)據(jù)庫(kù)、User用戶(hù)信息、Password口令信息等
end;
(2) 通過(guò)RDM的IAppServer接口來(lái)存取遠(yuǎn)程數(shù)據(jù)庫(kù)的數(shù)據(jù)集
在RDM中通過(guò)數(shù)據(jù)集組件的方式顯然不能完全解決數(shù)據(jù)的高速存取及數(shù)據(jù)連接池的問(wèn)題,且安全性不能得到保障,故在本系統(tǒng)中采用了通過(guò)設(shè)置IAppServer接口函數(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)集的存取操作.
在系統(tǒng)中,根據(jù)獲取數(shù)據(jù)集、存儲(chǔ)數(shù)據(jù)集及其他功能實(shí)現(xiàn)的方式設(shè)立以下幾種主要的業(yè)務(wù)函數(shù):
① 通過(guò)數(shù)據(jù)庫(kù)端存儲(chǔ)過(guò)程獲取數(shù)據(jù)。(有數(shù)據(jù)集返回)
function AccqDataFromStoreproc (): OleVariant; 該函數(shù)返回值為一數(shù)據(jù)集,直接賦值給DataSet.Data,從客戶(hù)端接收SQL語(yǔ)句獲取數(shù)據(jù)。程序代碼如下:
function TScunAppS.AccqDataFromStoreproc(const spName: WideString;Params: OleVariant; const spdname: WideString): OleVariant;
var
i:integer;
sconn:Tadoconnection; //設(shè)置TAdoConnection實(shí)例
fromsp:TadoStoredproc; //設(shè)置TAdo Storedproc;實(shí)例接收客戶(hù)端傳遞的存儲(chǔ)過(guò)程名稱(chēng)及其參數(shù)列表
begin
sconn:=Tadoconnection.create(self);
if ScunAppInfo.ConnectDB(sconn) then
begin
fromsp:=TadoStoredproc.Create(self);
spdsp:=Tdatasetprovider.Create(self);
with spdsp do
begin
DataSet:=fromsp;
exported:=true;
resolvetodataset:=true;
name:=spdname;
end;
with fromsp do
begin
close;
connection:=sconn;
Procedurename:=spname;
if (varisarray(params)) then
begin
parameters.Clear;
for i:=vararraylowbound(params,1) to vararrayhighbound(params,1) do
begin
Parameters.Add;
Parameters[i].Value:=params[i];
//從params分離出存儲(chǔ)過(guò)程參數(shù)
end;
end
else
exit;
prepared:=true;
try
active:=true;
result:=spdsp.Data; //獲取數(shù)據(jù)集,Variant參數(shù)回傳客戶(hù)端
except
on e: Exceptiondoraise;
end;
end;
end;
scunappinfo.stpspname:=spdname;
end;
② 更新數(shù)據(jù)集函數(shù)有兩個(gè):UpdateByScript,UpdateByStoreProc,從客戶(hù)端接收SQL語(yǔ)句更新數(shù)據(jù)集。
③ 其他類(lèi)函數(shù):ECmpLogin, ECmpUnLogin,ReleaseDSProvider,用于對(duì)應(yīng)用服務(wù)器的操作和管理。
3.3客戶(hù)端應(yīng)用程序的建立
在Delphi中建立一個(gè)項(xiàng)目組,連接應(yīng)用程序服務(wù)器,然后建立一個(gè)新的Application應(yīng)用程序。新建一數(shù)據(jù)模塊,加入一個(gè)MIDAS組件板中的TDCOM Connection組件,設(shè)定其Computer Name屬性值為應(yīng)用程序服務(wù)器位于的主機(jī)名稱(chēng)。設(shè)定TDCOM Connection要使用的應(yīng)用程序服務(wù)器,設(shè)置應(yīng)用程序服務(wù)器的GUID和填在TDCOM Connection的ServerGUID屬性值。再添加TClientDataSet組件,設(shè)置其Provider Name 屬性值,激活TClient DataSet的實(shí)例,使其通過(guò)中間層從數(shù)據(jù)庫(kù)服務(wù)器中取得數(shù)據(jù)集。
在多層體系中,應(yīng)用程序?qū)⒋碌臄?shù)據(jù)暫存在客戶(hù)端應(yīng)用程序中,系統(tǒng)真正要求將數(shù)據(jù)集更新回?cái)?shù)據(jù)庫(kù)時(shí),必須調(diào)用應(yīng)用程序服務(wù)器提供的Apply Updates方法,才會(huì)把更新的數(shù)據(jù)集真正的更新回后端數(shù)據(jù)庫(kù)中,其更新方法如下:
If(DataModule1.Clientdataset1.changecount>0) then
//判斷數(shù)據(jù)集是否有更新發(fā)生
begin
DataModule1.Clientdataset1.Post;
DataModule1.Clientdataset1.ApplyUpdates(0);
//更新數(shù)據(jù)集至數(shù)據(jù)庫(kù)
end;
3.4主要功能模塊的實(shí)現(xiàn)
(1) 根據(jù)系統(tǒng)的功能設(shè)計(jì)詳細(xì)設(shè)計(jì)書(shū),制作程序用戶(hù)界面圖,并編寫(xiě)程序代碼,實(shí)現(xiàn)電子元器件管理系統(tǒng)的各項(xiàng)主要功能。如圖3所示為電子元器件管理系統(tǒng)的主界面窗口。
圖3 電子元器件管理系統(tǒng)主界面圖
(2) 用戶(hù)登錄密碼加/解密算法實(shí)現(xiàn)。因使用的數(shù)據(jù)庫(kù)SQL Server2000存放用戶(hù)信息的表字符均為明文,而管理人員復(fù)雜,登錄用戶(hù)密碼易被泄密,故采用異或算法來(lái)對(duì)用戶(hù)密碼明文進(jìn)行加密,讀取密碼時(shí)進(jìn)行解密。具體算法如下:
ss:='';
ts:=trim(passWord.text); //用戶(hù)輸入的密碼加密
for i:=1 to length(ts) do
ss:=ss+char(ord(ts[i]) xor 127);
解密算法同樣采用xor算法來(lái)實(shí)現(xiàn)。
(3) 元器件入庫(kù)管理模塊。系統(tǒng)設(shè)定元器件入庫(kù)前必須要有預(yù)算計(jì)劃,每次入庫(kù)自動(dòng)生成一個(gè)入庫(kù)單號(hào),然后在該入庫(kù)單下進(jìn)行元器件各類(lèi)參數(shù)信息的錄入。見(jiàn)圖4為元器件入庫(kù)管理模塊。
圖4 元器件入庫(kù)管理模塊圖
(4) 元器件領(lǐng)用管理模塊。在電子設(shè)計(jì)日常實(shí)訓(xùn)中,學(xué)生經(jīng)常要進(jìn)入實(shí)驗(yàn)室進(jìn)行領(lǐng)用元器件,在領(lǐng)用元器件前學(xué)生必須經(jīng)過(guò)系統(tǒng)的預(yù)約,預(yù)約領(lǐng)哪些元器件,并經(jīng)指導(dǎo)老師審核后,方可到實(shí)驗(yàn)室領(lǐng)取所預(yù)約的元器件。元器件領(lǐng)用管理模塊實(shí)現(xiàn)功能如圖5所示。
圖5 元器件領(lǐng)用管理模塊圖
其他功能模塊均已按設(shè)計(jì)要求進(jìn)行實(shí)現(xiàn),并經(jīng)測(cè)試使用正常。在系統(tǒng)的使用過(guò)程中,學(xué)號(hào)、元器件編號(hào)無(wú)使用條碼錄入,增添了程序的可操作性和快捷性。
3.5多層穩(wěn)固性及容錯(cuò)與負(fù)載平衡能力的處理
系統(tǒng)采用了多個(gè)應(yīng)用服務(wù)器來(lái)同時(shí)處理客戶(hù)端進(jìn)程,系統(tǒng)的穩(wěn)固性必然受到影響,程序在開(kāi)發(fā)過(guò)程中使用DELPHI提供的TSimple Object Broker 組件的內(nèi)置功能來(lái)實(shí)現(xiàn)系統(tǒng)的穩(wěn)固性。通過(guò)修改TSimple Object Broker的屬性servers值來(lái)添加及維護(hù)一個(gè)能夠執(zhí)行應(yīng)用程序服務(wù)器的機(jī)器列表,并設(shè)置TDCOM Connection 或TSocket Connection以連接遠(yuǎn)程服務(wù)器。當(dāng)連結(jié)的主機(jī)故障時(shí), TDCOM Connection 或TSocket Connection 可以從TSimple Object Broker 取得一個(gè)新的能夠執(zhí)行應(yīng)用程序服務(wù)器的遠(yuǎn)程機(jī)器名稱(chēng),然后再連結(jié)到這臺(tái)新機(jī)器以取得應(yīng)用程序服務(wù)器的服務(wù)[11]。
本系統(tǒng)采用動(dòng)態(tài)平衡算法來(lái)保證負(fù)載平衡能力,主要依靠TSimple Object Broker組件強(qiáng)大的功能,設(shè)定TSimple Object Broker 的LoadBalanced 屬性來(lái)提供簡(jiǎn)單的負(fù)載平衡能力。這樣當(dāng)某臺(tái)應(yīng)用服務(wù)器出現(xiàn)故障時(shí),客戶(hù)端系統(tǒng)能通過(guò)TSimple Object Broker組件的負(fù)載平衡能力自動(dòng)尋找正常運(yùn)行的應(yīng)用服務(wù)器,并接管該進(jìn)程的管理功能,從而達(dá)到負(fù)載平衡的功能。
4結(jié)語(yǔ)
通過(guò)對(duì)全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽元器件管理的現(xiàn)狀和特點(diǎn)進(jìn)行了全面的分析,提出了采用多層分布式結(jié)構(gòu)和C/S架構(gòu)平臺(tái)的分析和設(shè)計(jì)方法,充分運(yùn)用成熟的MIDAS框架和ADO技術(shù)來(lái)開(kāi)發(fā)三層體系結(jié)構(gòu)的電子競(jìng)賽元器件管理系統(tǒng),將電子競(jìng)賽元器件管理的多項(xiàng)處理業(yè)務(wù)邏輯封裝在中間層應(yīng)用服務(wù)器層,運(yùn)用Delphi 7開(kāi)發(fā)客戶(hù)端程序,構(gòu)建了一個(gè)功能強(qiáng)大的電子元器件管理系統(tǒng)。結(jié)果表明由MIDAS開(kāi)發(fā)的三層架構(gòu)的電子元器件管理系統(tǒng)易于維護(hù),結(jié)構(gòu)層次優(yōu)化,安全性更高,極大地提高了高校電子設(shè)計(jì)競(jìng)賽及其實(shí)訓(xùn)電子元器件的管理效率。系統(tǒng)還充分運(yùn)用Delphi開(kāi)發(fā)平臺(tái)解決了應(yīng)用服務(wù)器的多層穩(wěn)固性及容錯(cuò)與負(fù)載平衡,使應(yīng)用層服務(wù)器運(yùn)行更加穩(wěn)定,運(yùn)行速度更快更高效。
參考文獻(xiàn)
[1] 刁鳴,王松武,李海波.大學(xué)生電子設(shè)計(jì)競(jìng)賽的實(shí)施與思考[J]. 實(shí)驗(yàn)室技術(shù)與管理,2010,27(9):127?129.
[2] 梁偉,盧剛,陳建泗.基于信息支持設(shè)備的電路板元器件定位軟件開(kāi)發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2011(1):201?203.
[3] 王曉英,劉思揚(yáng).基于B/S 的實(shí)驗(yàn)室EIMS分析與設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(17):155?158,162.
[4] 楊佳麗,黎敬濤.基于PHP的一個(gè)家庭理財(cái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(2):259?262.
[5] 王寧,吳慶學(xué).基于VFP的校園招聘信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(4):23?25.
[6] 聶維.基于Java的中小型企業(yè)人事管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2013,36(20):91?93.
[7] 陶昕,謝昕.基于COM/DCOM 集成的多數(shù)據(jù)庫(kù)系統(tǒng)的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(6):206?208.
[8] 朱學(xué)寧,林加論,張錦.大學(xué)物理實(shí)驗(yàn)報(bào)告自動(dòng)批閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(12):58?60.
[9] 張俐,張維璽,陸冰峰.基于SH框架和DAO工廠模式的網(wǎng)上充值卡銷(xiāo)售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(8):123?126.
[10] 劉小豫,韓麗娜.基于.NET的排球成績(jī)測(cè)評(píng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(4):26?28.
[11] 楊勤文.基于Delphi 的企業(yè)應(yīng)用信息系統(tǒng)簡(jiǎn)易開(kāi)發(fā)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(2):328?333.
圖5 元器件領(lǐng)用管理模塊圖
其他功能模塊均已按設(shè)計(jì)要求進(jìn)行實(shí)現(xiàn),并經(jīng)測(cè)試使用正常。在系統(tǒng)的使用過(guò)程中,學(xué)號(hào)、元器件編號(hào)無(wú)使用條碼錄入,增添了程序的可操作性和快捷性。
3.5多層穩(wěn)固性及容錯(cuò)與負(fù)載平衡能力的處理
系統(tǒng)采用了多個(gè)應(yīng)用服務(wù)器來(lái)同時(shí)處理客戶(hù)端進(jìn)程,系統(tǒng)的穩(wěn)固性必然受到影響,程序在開(kāi)發(fā)過(guò)程中使用DELPHI提供的TSimple Object Broker 組件的內(nèi)置功能來(lái)實(shí)現(xiàn)系統(tǒng)的穩(wěn)固性。通過(guò)修改TSimple Object Broker的屬性servers值來(lái)添加及維護(hù)一個(gè)能夠執(zhí)行應(yīng)用程序服務(wù)器的機(jī)器列表,并設(shè)置TDCOM Connection 或TSocket Connection以連接遠(yuǎn)程服務(wù)器。當(dāng)連結(jié)的主機(jī)故障時(shí), TDCOM Connection 或TSocket Connection 可以從TSimple Object Broker 取得一個(gè)新的能夠執(zhí)行應(yīng)用程序服務(wù)器的遠(yuǎn)程機(jī)器名稱(chēng),然后再連結(jié)到這臺(tái)新機(jī)器以取得應(yīng)用程序服務(wù)器的服務(wù)[11]。
本系統(tǒng)采用動(dòng)態(tài)平衡算法來(lái)保證負(fù)載平衡能力,主要依靠TSimple Object Broker組件強(qiáng)大的功能,設(shè)定TSimple Object Broker 的LoadBalanced 屬性來(lái)提供簡(jiǎn)單的負(fù)載平衡能力。這樣當(dāng)某臺(tái)應(yīng)用服務(wù)器出現(xiàn)故障時(shí),客戶(hù)端系統(tǒng)能通過(guò)TSimple Object Broker組件的負(fù)載平衡能力自動(dòng)尋找正常運(yùn)行的應(yīng)用服務(wù)器,并接管該進(jìn)程的管理功能,從而達(dá)到負(fù)載平衡的功能。
4結(jié)語(yǔ)
通過(guò)對(duì)全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽元器件管理的現(xiàn)狀和特點(diǎn)進(jìn)行了全面的分析,提出了采用多層分布式結(jié)構(gòu)和C/S架構(gòu)平臺(tái)的分析和設(shè)計(jì)方法,充分運(yùn)用成熟的MIDAS框架和ADO技術(shù)來(lái)開(kāi)發(fā)三層體系結(jié)構(gòu)的電子競(jìng)賽元器件管理系統(tǒng),將電子競(jìng)賽元器件管理的多項(xiàng)處理業(yè)務(wù)邏輯封裝在中間層應(yīng)用服務(wù)器層,運(yùn)用Delphi 7開(kāi)發(fā)客戶(hù)端程序,構(gòu)建了一個(gè)功能強(qiáng)大的電子元器件管理系統(tǒng)。結(jié)果表明由MIDAS開(kāi)發(fā)的三層架構(gòu)的電子元器件管理系統(tǒng)易于維護(hù),結(jié)構(gòu)層次優(yōu)化,安全性更高,極大地提高了高校電子設(shè)計(jì)競(jìng)賽及其實(shí)訓(xùn)電子元器件的管理效率。系統(tǒng)還充分運(yùn)用Delphi開(kāi)發(fā)平臺(tái)解決了應(yīng)用服務(wù)器的多層穩(wěn)固性及容錯(cuò)與負(fù)載平衡,使應(yīng)用層服務(wù)器運(yùn)行更加穩(wěn)定,運(yùn)行速度更快更高效。
參考文獻(xiàn)
[1] 刁鳴,王松武,李海波.大學(xué)生電子設(shè)計(jì)競(jìng)賽的實(shí)施與思考[J]. 實(shí)驗(yàn)室技術(shù)與管理,2010,27(9):127?129.
[2] 梁偉,盧剛,陳建泗.基于信息支持設(shè)備的電路板元器件定位軟件開(kāi)發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2011(1):201?203.
[3] 王曉英,劉思揚(yáng).基于B/S 的實(shí)驗(yàn)室EIMS分析與設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(17):155?158,162.
[4] 楊佳麗,黎敬濤.基于PHP的一個(gè)家庭理財(cái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(2):259?262.
[5] 王寧,吳慶學(xué).基于VFP的校園招聘信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(4):23?25.
[6] 聶維.基于Java的中小型企業(yè)人事管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2013,36(20):91?93.
[7] 陶昕,謝昕.基于COM/DCOM 集成的多數(shù)據(jù)庫(kù)系統(tǒng)的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(6):206?208.
[8] 朱學(xué)寧,林加論,張錦.大學(xué)物理實(shí)驗(yàn)報(bào)告自動(dòng)批閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(12):58?60.
[9] 張俐,張維璽,陸冰峰.基于SH框架和DAO工廠模式的網(wǎng)上充值卡銷(xiāo)售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(8):123?126.
[10] 劉小豫,韓麗娜.基于.NET的排球成績(jī)測(cè)評(píng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(4):26?28.
[11] 楊勤文.基于Delphi 的企業(yè)應(yīng)用信息系統(tǒng)簡(jiǎn)易開(kāi)發(fā)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(2):328?333.
圖5 元器件領(lǐng)用管理模塊圖
其他功能模塊均已按設(shè)計(jì)要求進(jìn)行實(shí)現(xiàn),并經(jīng)測(cè)試使用正常。在系統(tǒng)的使用過(guò)程中,學(xué)號(hào)、元器件編號(hào)無(wú)使用條碼錄入,增添了程序的可操作性和快捷性。
3.5多層穩(wěn)固性及容錯(cuò)與負(fù)載平衡能力的處理
系統(tǒng)采用了多個(gè)應(yīng)用服務(wù)器來(lái)同時(shí)處理客戶(hù)端進(jìn)程,系統(tǒng)的穩(wěn)固性必然受到影響,程序在開(kāi)發(fā)過(guò)程中使用DELPHI提供的TSimple Object Broker 組件的內(nèi)置功能來(lái)實(shí)現(xiàn)系統(tǒng)的穩(wěn)固性。通過(guò)修改TSimple Object Broker的屬性servers值來(lái)添加及維護(hù)一個(gè)能夠執(zhí)行應(yīng)用程序服務(wù)器的機(jī)器列表,并設(shè)置TDCOM Connection 或TSocket Connection以連接遠(yuǎn)程服務(wù)器。當(dāng)連結(jié)的主機(jī)故障時(shí), TDCOM Connection 或TSocket Connection 可以從TSimple Object Broker 取得一個(gè)新的能夠執(zhí)行應(yīng)用程序服務(wù)器的遠(yuǎn)程機(jī)器名稱(chēng),然后再連結(jié)到這臺(tái)新機(jī)器以取得應(yīng)用程序服務(wù)器的服務(wù)[11]。
本系統(tǒng)采用動(dòng)態(tài)平衡算法來(lái)保證負(fù)載平衡能力,主要依靠TSimple Object Broker組件強(qiáng)大的功能,設(shè)定TSimple Object Broker 的LoadBalanced 屬性來(lái)提供簡(jiǎn)單的負(fù)載平衡能力。這樣當(dāng)某臺(tái)應(yīng)用服務(wù)器出現(xiàn)故障時(shí),客戶(hù)端系統(tǒng)能通過(guò)TSimple Object Broker組件的負(fù)載平衡能力自動(dòng)尋找正常運(yùn)行的應(yīng)用服務(wù)器,并接管該進(jìn)程的管理功能,從而達(dá)到負(fù)載平衡的功能。
4結(jié)語(yǔ)
通過(guò)對(duì)全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽元器件管理的現(xiàn)狀和特點(diǎn)進(jìn)行了全面的分析,提出了采用多層分布式結(jié)構(gòu)和C/S架構(gòu)平臺(tái)的分析和設(shè)計(jì)方法,充分運(yùn)用成熟的MIDAS框架和ADO技術(shù)來(lái)開(kāi)發(fā)三層體系結(jié)構(gòu)的電子競(jìng)賽元器件管理系統(tǒng),將電子競(jìng)賽元器件管理的多項(xiàng)處理業(yè)務(wù)邏輯封裝在中間層應(yīng)用服務(wù)器層,運(yùn)用Delphi 7開(kāi)發(fā)客戶(hù)端程序,構(gòu)建了一個(gè)功能強(qiáng)大的電子元器件管理系統(tǒng)。結(jié)果表明由MIDAS開(kāi)發(fā)的三層架構(gòu)的電子元器件管理系統(tǒng)易于維護(hù),結(jié)構(gòu)層次優(yōu)化,安全性更高,極大地提高了高校電子設(shè)計(jì)競(jìng)賽及其實(shí)訓(xùn)電子元器件的管理效率。系統(tǒng)還充分運(yùn)用Delphi開(kāi)發(fā)平臺(tái)解決了應(yīng)用服務(wù)器的多層穩(wěn)固性及容錯(cuò)與負(fù)載平衡,使應(yīng)用層服務(wù)器運(yùn)行更加穩(wěn)定,運(yùn)行速度更快更高效。
參考文獻(xiàn)
[1] 刁鳴,王松武,李海波.大學(xué)生電子設(shè)計(jì)競(jìng)賽的實(shí)施與思考[J]. 實(shí)驗(yàn)室技術(shù)與管理,2010,27(9):127?129.
[2] 梁偉,盧剛,陳建泗.基于信息支持設(shè)備的電路板元器件定位軟件開(kāi)發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2011(1):201?203.
[3] 王曉英,劉思揚(yáng).基于B/S 的實(shí)驗(yàn)室EIMS分析與設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(17):155?158,162.
[4] 楊佳麗,黎敬濤.基于PHP的一個(gè)家庭理財(cái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(2):259?262.
[5] 王寧,吳慶學(xué).基于VFP的校園招聘信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(4):23?25.
[6] 聶維.基于Java的中小型企業(yè)人事管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2013,36(20):91?93.
[7] 陶昕,謝昕.基于COM/DCOM 集成的多數(shù)據(jù)庫(kù)系統(tǒng)的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(6):206?208.
[8] 朱學(xué)寧,林加論,張錦.大學(xué)物理實(shí)驗(yàn)報(bào)告自動(dòng)批閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(12):58?60.
[9] 張俐,張維璽,陸冰峰.基于SH框架和DAO工廠模式的網(wǎng)上充值卡銷(xiāo)售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(8):123?126.
[10] 劉小豫,韓麗娜.基于.NET的排球成績(jī)測(cè)評(píng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(4):26?28.
[11] 楊勤文.基于Delphi 的企業(yè)應(yīng)用信息系統(tǒng)簡(jiǎn)易開(kāi)發(fā)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(2):328?333.