基于.net短信發(fā)送平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開(kāi)題報(bào)告+文獻(xiàn)綜述】_第1頁(yè)
已閱讀1頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> ?。ǘ?屆)</b></p><p>  基于.NET短信發(fā)送平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  所在學(xué)院 </p><p>  專(zhuān)業(yè)班級(jí) 計(jì)算機(jī)科學(xué)與技術(shù) </

2、p><p>  學(xué)生姓名 學(xué)號(hào) </p><p>  指導(dǎo)教師 職稱(chēng) </p><p>  完成日期 年 月 </p><p>  摘要:短信發(fā)送平臺(tái),就是用.NET開(kāi)發(fā)的短信發(fā)送平臺(tái)結(jié)合后臺(tái)數(shù)據(jù)庫(kù)信息設(shè)計(jì)和短信Mod

3、em設(shè)備實(shí)現(xiàn)的一種實(shí)用性系統(tǒng)。系統(tǒng)由短信Modem、電腦和軟件平臺(tái)構(gòu)成,電腦和短信Modem的通信主要由軟件完成,采用了.NET的串口編程技術(shù),用m_pModemObjArray、m_pIMJiaXun及m_pIMHuaWei和短信Modem二次開(kāi)發(fā)包提供的接口技術(shù)可以方便的實(shí)現(xiàn)通信,將信息打包成AT指令形式,再將其添加到命令隊(duì)列中,啟動(dòng)相應(yīng)線程實(shí)現(xiàn)通信。數(shù)據(jù)庫(kù)也是系統(tǒng)中的一個(gè)比較重要的環(huán)節(jié),數(shù)據(jù)的流向要設(shè)計(jì)好,用戶信息和短信信息等數(shù)據(jù)

4、都需要數(shù)據(jù)庫(kù)的技術(shù)支持。通過(guò)采用上述的技術(shù)和方法,設(shè)計(jì)實(shí)現(xiàn)了用戶登錄平臺(tái)的發(fā)送功能。</p><p>  關(guān)鍵詞:移動(dòng)通信;.NET;短信業(yè)務(wù)</p><p>  Design and Implementation for . NET-messaging platform</p><p>  Abstract: Messaging platform, is a pr

5、actical system that used the platform developed by NET, combined with the background database, send and receive SMS messages and SMS Modem device. Through the analysis of the SMS platform,knowa the core technology of the

6、 system, the system is consisted of the SMS Modem, computer and software platforms , computer and messaging Modem completed mainly by the software. Using NET serial port programming, with m_pModemObjArray , m_pIMJiaXun a

7、nd m_pIMHuaWei and seco</p><p>  Key words: mobile communications;. NET; SMS</p><p><b>  目錄</b></p><p>  1 緒論錯(cuò)誤!未定義書(shū)簽。</p><p>  1.1 課題的研究背景錯(cuò)誤!未定義書(shū)簽。<

8、/p><p>  1.2 課題的研究目的與意義2</p><p>  1.3 課題的研究?jī)?nèi)容錯(cuò)誤!未定義書(shū)簽。</p><p>  2 基礎(chǔ)知識(shí)簡(jiǎn)介3</p><p>  2.1 微軟.NET開(kāi)發(fā)平臺(tái)3</p><p><b>  3 系統(tǒng)分析6</b></p>&l

9、t;p>  3.1 需求概述6</p><p>  3.1.1 業(yè)務(wù)整合6</p><p>  3.1.2 設(shè)備管理6</p><p>  3.2 功能要求分析6</p><p>  3.2.1 用例描述6</p><p>  3.2.2 業(yè)務(wù)定制管理功能6</p><

10、p>  3.2.3 設(shè)備定制管理功能7</p><p>  3.2.4 平臺(tái)二次開(kāi)發(fā)功能7</p><p><b>  4 系統(tǒng)設(shè)計(jì)8</b></p><p>  4.1 系統(tǒng)設(shè)計(jì)的思想和原則8</p><p>  4.1.1 安全性8</p><p>  4.1.2

11、易操作性8</p><p>  4.1.3 適應(yīng)性及靈活性8</p><p>  4.1.4 簽于組件的軟件開(kāi)發(fā)8</p><p>  4.1.5 數(shù)據(jù)共享8</p><p>  4.2 系統(tǒng)架構(gòu)設(shè)計(jì)9</p><p>  4.3數(shù)據(jù)庫(kù)設(shè)計(jì)9</p><p>  5 系統(tǒng)

12、實(shí)現(xiàn)錯(cuò)誤!未定義書(shū)簽。</p><p>  5.1 設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)錯(cuò)誤!未定義書(shū)簽。</p><p>  5.1.1 打開(kāi)及關(guān)閉串口的操作錯(cuò)誤!未定義書(shū)簽。</p><p>  5.1.2 收發(fā)短信的操作錯(cuò)誤!未定義書(shū)簽。</p><p>  5.1.3 實(shí)現(xiàn)控件錯(cuò)誤!未定義書(shū)簽。</p><p>  

13、5.2 設(shè)備管理模塊實(shí)現(xiàn)18</p><p>  5.2.1 實(shí)現(xiàn)思路23</p><p>  5.2.2 數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤!未定義書(shū)簽。</p><p>  5.2.3 對(duì)象描述24</p><p>  5.3 任務(wù)引擎模塊實(shí)現(xiàn)24</p><p>  5.3.1 實(shí)現(xiàn)思路29</p>

14、<p>  5.3.2 對(duì)象描述29</p><p>  5.4 接口引擎模塊的實(shí)現(xiàn)29</p><p>  5.4.1 實(shí)現(xiàn)思路29</p><p>  總結(jié)錯(cuò)誤!未定義書(shū)簽。</p><p>  致謝錯(cuò)誤!未定義書(shū)簽。</p><p>  參考文獻(xiàn)錯(cuò)誤!未定義書(shū)簽。</p>

15、;<p><b>  1 緒論</b></p><p>  1.1 課題的研究背景</p><p>  1.1.1 短信簡(jiǎn)介</p><p>  短信(Short Message Service,簡(jiǎn)稱(chēng)SMS),是用戶通過(guò)手機(jī)或其他電信終端直接發(fā)送或接收的文字或數(shù)字信息,用戶每次能接收和發(fā)送短信的字符數(shù),是160個(gè)英文或數(shù)字字

16、符,或者70個(gè)中文字符。</p><p>  短信是伴隨數(shù)字移動(dòng)通信系統(tǒng)而產(chǎn)生的一種電信業(yè)務(wù),通過(guò)移動(dòng)通信系統(tǒng)的信令信道和信令網(wǎng),傳送文字或數(shù)字短信息,屬于一種非實(shí)時(shí)的、非語(yǔ)音的數(shù)據(jù)通信業(yè)務(wù)。1992年,世界上第一條短信在英國(guó)沃達(dá)豐的網(wǎng)絡(luò)上通過(guò)電腦向手機(jī)發(fā)送成功,從而宣布手機(jī)短信誕生。中國(guó)的移動(dòng)通信網(wǎng)絡(luò)在1994年也具備了短信功能,但那時(shí)的手機(jī)普及程度不高,短信的應(yīng)用也幾乎沒(méi)有。隨著手機(jī)的日益普及,從1998年開(kāi)

17、始,移動(dòng)、聯(lián)通先后大范圍拓展短信業(yè)務(wù):2000年,中國(guó)手機(jī)短信息量突破10億條;2001年,達(dá)到189億條;2004年,數(shù)字飛漲到900億條。于是短信理所應(yīng)當(dāng)?shù)爻蔀榱说谖宸N傳播工具,“信生活”的提法也因此誕生;于是從1998年至今,十多年的時(shí)間里,不管你愿意與否,短信已逐漸走入我們的生活,成為生活的一部分,我們的生活也因短信而改變著。</p><p>  1.1.2 短信發(fā)送平臺(tái)的興起</p>&

18、lt;p>  短信發(fā)送平臺(tái)是基于中國(guó)移動(dòng)、聯(lián)通、電信直接提供的短信端口與互聯(lián)網(wǎng)連接實(shí)現(xiàn)與客戶指定號(hào)碼進(jìn)行短信批量發(fā)送和自定義發(fā)送的,它分為軟件單機(jī)版(帶客戶端)CS結(jié)構(gòu)和網(wǎng)絡(luò)共享版BS結(jié)構(gòu)。</p><p>  自從有短信以來(lái),短信發(fā)送平臺(tái)軟件也在不知不覺(jué)中闖入了人們的生活,越來(lái)越多的單位在使用著短信發(fā)送平臺(tái)或者短信群發(fā)軟件進(jìn)行著短信群發(fā)?,F(xiàn)在的人手機(jī)隨時(shí)拿在手里,短信提示音響不停,一會(huì)兒不注意,就有好幾條

19、未讀的短信,內(nèi)容無(wú)一例外,全是節(jié)日問(wèn)候。這個(gè)春節(jié),許多人的年夜飯都是在手機(jī)短信的陪伴下吃完的。短信拜年,早已不是單純地問(wèn)候了,它已經(jīng)在構(gòu)建人際關(guān)系中起到非常微妙的作用。隨著短信發(fā)送量的日益增長(zhǎng),短信發(fā)送平臺(tái)軟件已為商業(yè)網(wǎng)站以及手機(jī)生產(chǎn)商的產(chǎn)品和服務(wù)、軟件制造業(yè)等產(chǎn)業(yè)打開(kāi)了巨大的增值空間。 在手機(jī)短信未來(lái)發(fā)展方向中,有32.34%希望今后手機(jī)短信的覆蓋領(lǐng)域能夠更廣泛,26.37%希望手機(jī)短信的服務(wù)內(nèi)容能夠更加多元化,20.4%希望今后手機(jī)

20、短信服務(wù)能夠更加貼近用戶的需求,18.41%的希望手機(jī)短信能夠擁有高服務(wù)質(zhì)量,2.49%的網(wǎng)民選擇其它。</p><p>  1.2 課題研究的目的與意義</p><p>  從1992年世界上第一條短信息在英國(guó)沃特豐的GSM網(wǎng)絡(luò)上通過(guò)PC、移動(dòng)電話發(fā)送成功,1999年后,短信才開(kāi)始迅速蔓延到世界各國(guó),并持續(xù)爆炸性的增長(zhǎng)趨勢(shì)。據(jù)權(quán)威調(diào)研機(jī)構(gòu)Gartner預(yù)計(jì),2008年世界范圍內(nèi)手機(jī)短信

21、總量為2.3萬(wàn)億條。在2000年前中國(guó)很多手機(jī)還不具備中文短信收發(fā)功能,中國(guó)移動(dòng)于2000年下半年推手機(jī)短信業(yè)務(wù)。中國(guó)聯(lián)通也不甘落后迅速跟進(jìn)。2000年下半年,短信業(yè)務(wù)平均每月增加4000萬(wàn)條。到2001年,短信業(yè)務(wù)已成為中國(guó)電信發(fā)展的一大亮點(diǎn)。2001年,全國(guó)短信業(yè)務(wù)量189億條,收入20億元。其中中國(guó)移動(dòng)159億條,超過(guò)預(yù)期目標(biāo)59%。聯(lián)通40億條。中國(guó)移動(dòng)和中國(guó)聯(lián)通的市場(chǎng)占有分別為84.13%和15.87%。在2008年年初,中國(guó)

22、手機(jī)短信發(fā)送量為5900多億條,同比增長(zhǎng)37.8%。</p><p>  在此背景下,中國(guó)手機(jī)短信市場(chǎng)孕育巨大的商機(jī)。一個(gè)平臺(tái)化的信息化產(chǎn)品必將為移動(dòng)通信的發(fā)展起到推波助瀾的作用,同時(shí)為企業(yè)發(fā)展、節(jié)約開(kāi)支、提高效益起到了明顯的作用,這也是研究和開(kāi)發(fā)短信發(fā)送平臺(tái)的目的和意義。</p><p>  1.3 課題的研究?jī)?nèi)容</p><p>  本課題的主要內(nèi)容是根據(jù)短信

23、業(yè)務(wù)需求設(shè)計(jì)一個(gè)短信發(fā)送平臺(tái),由.NET平臺(tái)開(kāi)發(fā)并采用B/S體系架構(gòu),系統(tǒng)則采用C#基于winform的編程模式,由短信Modem、電腦和軟件平臺(tái)構(gòu)成,采用.NET的串口編程技術(shù)實(shí)現(xiàn)通信,后臺(tái)數(shù)據(jù)庫(kù)使用SQL server 2005,預(yù)期實(shí)現(xiàn)以下功能。強(qiáng)大的客戶分組管理功能根據(jù)公司的需要和習(xí)慣,可對(duì)客戶群組、部門(mén)群組、內(nèi)外群組等不同組合方式靈活定義通訊錄群組,進(jìn)行分類(lèi)管理,并支持通訊錄信息批量導(dǎo)入功能;靈活的自動(dòng)應(yīng)答功能,事先設(shè)置好相應(yīng)

24、的應(yīng)答標(biāo)志和短信息內(nèi)容,實(shí)時(shí)讀取客戶和員工的咨詢信息,客戶和員工通過(guò)手機(jī)向系統(tǒng)輸入查詢代碼(與應(yīng)答標(biāo)志對(duì)應(yīng)的),系統(tǒng)自動(dòng)向客戶和員工手機(jī)發(fā)送相應(yīng)的應(yīng)答信息;嚴(yán)謹(jǐn)?shù)亩〞r(shí)發(fā)送功能,本平臺(tái)提供多種定時(shí)類(lèi)型提供選擇,用戶根據(jù)需要選擇發(fā)送周期,靈活設(shè)定發(fā)送時(shí)間點(diǎn),并編制好短信內(nèi)容,系統(tǒng)能夠嚴(yán)格按照用戶設(shè)置的發(fā)送規(guī)則對(duì)指定手機(jī)用戶發(fā)送短信;開(kāi)放的二次開(kāi)發(fā)接口,本平臺(tái)能夠與企業(yè)的其他IT系統(tǒng)開(kāi)發(fā)接口,可以把手機(jī)作為遠(yuǎn)程查詢終端,通過(guò)手機(jī)對(duì)原有IT系統(tǒng)

25、進(jìn)行查詢,也可以使這些IT系統(tǒng)具有自動(dòng)發(fā)布信息的功能,如小區(qū)物業(yè)公司可以在原有的物業(yè)管理系統(tǒng)自</p><p><b>  2 基礎(chǔ)知識(shí)簡(jiǎn)介</b></p><p>  2.1 微軟.NET開(kāi)發(fā)平臺(tái)</p><p>  .NET開(kāi)發(fā)平臺(tái)是一組用于建立Web服務(wù)器應(yīng)用程序和Windows桌面應(yīng)用程序的軟件組件,用該平臺(tái)創(chuàng)建的應(yīng)用程序在Comm

26、on Language Runtime(CLR)(通用語(yǔ)言運(yùn)行環(huán)境)(底層)的控制下運(yùn)行。CLR是一個(gè)軟件引擎,用來(lái)加載應(yīng)用程序,確認(rèn)它們可以沒(méi)有錯(cuò)誤地執(zhí)行,進(jìn)行相應(yīng)的安全許可驗(yàn)證,執(zhí)行應(yīng)用程序,然后在運(yùn)行完成后將它們清除。類(lèi)庫(kù)集提供了使應(yīng)用程序可以讀寫(xiě)XML數(shù)據(jù)、在Internet上通信、訪問(wèn)數(shù)據(jù)庫(kù)等的代碼。所有的類(lèi)庫(kù)都建立在一個(gè)基礎(chǔ)的類(lèi)庫(kù)之上,它提供管理使用最為頻繁的數(shù)據(jù)類(lèi)型(例如數(shù)值或文本字符串)的功能,以及諸如文件輸入/輸出等底

27、層功能[2]。</p><p>  Web服務(wù)器應(yīng)用程序通常依賴于ASP.NET,一個(gè)處理Web請(qǐng)求的服務(wù)器端的庫(kù)。ASP.NET又依賴一個(gè)用于發(fā)送和接收SOAP信息的Web Services庫(kù),以及一個(gè)用于以瀏覽器接收用戶輸入并動(dòng)態(tài)地生成Web頁(yè)面以示響應(yīng)的Web用戶接口(UI)(有時(shí)稱(chēng)作Web 表單)。Windows桌面應(yīng)用程序通過(guò)使用Win表單庫(kù)(也稱(chēng)作Windows 表單)可以顯示一個(gè)圖形UI。</

28、p><p>  最后,Visual Studio.NET提供了一個(gè)用于在該平臺(tái)上創(chuàng)建應(yīng)用程序的圖形Integrated Development Ewironment(IDE)(集成開(kāi)發(fā)環(huán)境)。程序員可以使用一種或多種.NET編程語(yǔ)言,來(lái)編寫(xiě)他們的代碼,例如微軟自己的Visual Basic .NET(VB.NET),Visual C++,Visual C#和JScrjpt .NET等。大量其它的.NET編程語(yǔ)言可以從

29、第三方廠商獲得。</p><p>  .NET開(kāi)發(fā)平臺(tái)使得開(kāi)發(fā)者創(chuàng)建運(yùn)行在Internet Information Server (IIS)(互聯(lián)網(wǎng)信息服務(wù)器)Web服務(wù)器上的Web應(yīng)用程序更為容易,它也使創(chuàng)建穩(wěn)定、可靠而又安全的Windows桌面應(yīng)用程序更為容易。</p><p>  .NET開(kāi)發(fā)平臺(tái)包括以下內(nèi)容:</p><p>  .NET Framework

30、(架構(gòu)),包括:Common Language Runtime(CLR)(通用語(yǔ)言運(yùn)行環(huán)境),這是用于運(yùn)行和加載應(yīng)用程序的軟件組件;新的類(lèi)庫(kù),分級(jí)組織了開(kāi)發(fā)者可以在他們的應(yīng)用程序中用來(lái)顯示圖形用戶界面、訪問(wèn)數(shù)據(jù)庫(kù)和文件以及在Web上通信的代碼集。</p><p>  .NET開(kāi)發(fā)者工具,包括:Visual Studio .NET Integrated Development Environment (IDE)(V

31、isual Studio .NET集成開(kāi)發(fā)環(huán)境),用來(lái)開(kāi)發(fā)和測(cè)試應(yīng)用程序;.NET編程語(yǔ)言(例如Visual Basic .NET和新的Visual C#),用來(lái)創(chuàng)建運(yùn)行在CLR下并且使用類(lèi)庫(kù)的應(yīng)用程序。</p><p>  ASP .NET,一個(gè)取代以前的Active Server Pages (ASP)的特殊類(lèi)庫(kù),用來(lái)創(chuàng)建動(dòng)態(tài)的Web內(nèi)容和Web服務(wù)器應(yīng)用程序,這些都將采用諸如HTML、XML和Simple

32、Object Access Protocol(SOAP)(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)等Internet協(xié)議和數(shù)據(jù)格式[3] [4]。</p><p>  Web Services是一個(gè)軟件組件,它通過(guò)將消息以XML格式進(jìn)行編碼,并將消息通過(guò)標(biāo)準(zhǔn)的Internet協(xié)議(例如Hypertext Transfer Prorocol (HTTP)(超文本傳輸協(xié)議))發(fā)送出去來(lái)與其它的應(yīng)用程序進(jìn)行通信。一個(gè)Web Services

33、類(lèi)似于這樣一個(gè)Web站點(diǎn):沒(méi)有用戶接口,向應(yīng)用程序而非用戶提供服務(wù)。Web Services不從瀏覽器獲得請(qǐng)求并返回相應(yīng)的Web頁(yè)面,而是從應(yīng)用程序接收XML格式的請(qǐng)求消息,執(zhí)行任務(wù),然后向應(yīng)用程序返回XML格式的響應(yīng)消息。</p><p>  SOAP作為一種用于Web services的消息標(biāo)準(zhǔn)。一條SOAP消息如同一封信,由一個(gè)基于XML格式的“信封”和載有消息數(shù)據(jù)的“正文”兩部分組成,“信封”部分包含一個(gè)

34、指明消息接收者地址的頭部和一系列投遞選項(xiàng)(例如加密信息)。 (微軟喜歡將此編程模型稱(chēng)作“XML Web Services”——采用“XML”意在強(qiáng)調(diào)其開(kāi)放性?!沁@個(gè)基于一套World Wide Web Consortium (W3C)協(xié)議標(biāo)準(zhǔn)的模型,業(yè)界習(xí)慣上簡(jiǎn)單稱(chēng)其為“Web Services”。)</p><p>  微軟和IBM等其他供應(yīng)商提倡將Web Services作為用于Internet上的互連

35、應(yīng)用程序通信的程序設(shè)計(jì)模型。這些公司相信通過(guò)Internet相互連接的應(yīng)用程序,將增強(qiáng)與它們的合作供應(yīng)商和客戶協(xié)同工作的商務(wù)能力。通過(guò)在一個(gè)現(xiàn)有的公司應(yīng)用程序的頂層創(chuàng)建一個(gè)Web Services層,各個(gè)組織可以允許外部系統(tǒng)通過(guò)Internet(或企業(yè)Intranet)調(diào)用應(yīng)用程序的功能,但卻不必修改應(yīng)用程序本身。例如,有幾家公司正在創(chuàng)建Web Services,來(lái)充當(dāng)駐留在主機(jī)內(nèi)的訂單一入口應(yīng)用程序的前端,這允許客戶的訂貨系統(tǒng)通過(guò)In

36、ternet提交訂單。作為公司內(nèi)整合由各個(gè)部門(mén)獨(dú)立開(kāi)發(fā)的應(yīng)用程序,以降低伴隨公司合并與購(gòu)并而來(lái)的IT整合費(fèi)用的方法,將Web Services放在現(xiàn)有應(yīng)用程序的頂層相當(dāng)重要[5]。</p><p>  所有在.NET開(kāi)發(fā)平臺(tái)上創(chuàng)建的應(yīng)用程序運(yùn)行都需要運(yùn)行兩個(gè)核心塊:</p><p>  Common Language Runtime(CLR)(通用語(yǔ)言運(yùn)行環(huán)境),這是一個(gè)軟件引擎,用來(lái)加載

37、應(yīng)用程序,確認(rèn)它們可以沒(méi)有錯(cuò)誤地運(yùn)行,進(jìn)行相應(yīng)的安全許可驗(yàn)證,執(zhí)行應(yīng)用程序,然后在完成后將它們清除。</p><p>  NET Framework類(lèi)庫(kù),向程序員提供所需用來(lái)編寫(xiě)在CLR的控制下運(yùn)行的代碼的軟件組件。它們按照單一有序的分級(jí)組織提供了一個(gè)龐大的功能集——從文件系統(tǒng)到對(duì)XML功能的網(wǎng)絡(luò)訪問(wèn)的每一樣功能。</p><p>  CLR有兩個(gè)主要的目標(biāo),一個(gè)是提高應(yīng)用程序的穩(wěn)定性和安

38、全性;另一個(gè)是減少應(yīng)用程序開(kāi)發(fā)者所必須寫(xiě)的冗長(zhǎng)而又易出錯(cuò)的底層代碼的容量。這兩個(gè)目標(biāo)類(lèi)似于諸如Sun和IBM等廠商試圖用Unix和主機(jī)上的Java平臺(tái)去解決的問(wèn)題。為了解決Windows上的這些問(wèn)題,CLR對(duì)加載和執(zhí)行應(yīng)用程序的編程模型做了根本的改變。 CLR如何工作 一個(gè)應(yīng)用程序是作為稱(chēng)作匯編的文件或文件集進(jìn)入CLR的。這個(gè)匯編包是Microsoft Intermediate Language(MSIL)代碼,CLR將其翻譯成可執(zhí)行的

39、本機(jī)代碼。由于可以對(duì)從MSIL到本機(jī)代碼的應(yīng)用程序翻譯的控制,使得CLR可以管理應(yīng)用程序的執(zhí)行并且防止各種問(wèn)題的發(fā)生,因此也就有了術(shù)語(yǔ)可控制代碼。</p><p>  除了MSIL代碼,匯編還包含有詳細(xì)描述了MSIL代碼正確執(zhí)行所需的各種相關(guān)數(shù)據(jù)類(lèi)型的元數(shù)據(jù)。最后,匯編還包括一個(gè)清單——一個(gè)列出了匯編中所有文件和軟件組件的文檔,該文檔還指出CLR在哪里可以找到具有應(yīng)用程序運(yùn)行所需組件的其它匯編[6]。</p

40、><p>  .NET開(kāi)發(fā)平臺(tái)的發(fā)布給微軟的客戶及其合作廠商帶來(lái)一個(gè)基本的問(wèn)題:和目前的Windows平臺(tái)或Java相比,我們應(yīng)當(dāng)把多少開(kāi)發(fā)和市場(chǎng)的經(jīng)費(fèi)投入到新的平臺(tái)中?在做決策時(shí),組織應(yīng)當(dāng)考慮到以下需求:</p><p>  可靠性和安全性和Windows或者Java中的任何一個(gè)相比,.NET開(kāi)發(fā)平臺(tái)提供了更好的應(yīng)用程序可靠性和安全性,這尤其要?dú)w功于Common Language Runti

41、me ( CLR ),及其基本編碼錯(cuò)誤(如緩沖區(qū)溢出)的防止,和管理員定義版本政策和安全限制的增強(qiáng)。然而,一個(gè)應(yīng)用僅僅同它最弱的環(huán)節(jié)一樣強(qiáng)壯:具有不可控制代碼的.NET應(yīng)用程序僅與那些代碼具有相同的可靠性和安全性。Java有一個(gè)用以調(diào)用本機(jī)代碼的機(jī)制,Java Native Interface ( JNI ) ( Java本機(jī)接口),但是現(xiàn)有的代碼必須加以修改才允許其被調(diào)用。</p><p>  開(kāi)發(fā)成本。.N

42、ET開(kāi)發(fā)平臺(tái)在開(kāi)發(fā)Web應(yīng)用程序(尤其是Web服務(wù))時(shí)明顯優(yōu)于現(xiàn)在的Windows版本,它甚至有著遠(yuǎn)遠(yuǎn)超越Java的優(yōu)勢(shì),這得益于VisualStudio.NET復(fù)雜的圖形編輯器和向?qū)А?lt;/p><p>  類(lèi)庫(kù)和CLR還向采用所有.NET編程語(yǔ)言的應(yīng)用程序提供了單純一致的目標(biāo),它應(yīng)當(dāng)簡(jiǎn)化培訓(xùn)程序員和編寫(xiě)維護(hù)代碼的工作。多種編程語(yǔ)言的支持還使.NET開(kāi)發(fā)平臺(tái)具有一個(gè)強(qiáng)于Java的優(yōu)點(diǎn),因?yàn)槭煜づf的Windows語(yǔ)

43、言,例如Visual Basic的開(kāi)發(fā)者,無(wú)需再?gòu)念^學(xué)習(xí).NET中相同的內(nèi)容。.NET開(kāi)發(fā)平臺(tái)還給主要投資于Windows代碼的組織提供了一種方法,使它們可以在新的.NET開(kāi)發(fā)平臺(tái)中重用不可控制代碼,這樣這些組織就可以逐漸地遷移到新平臺(tái)上來(lái)[7]。</p><p><b>  3 系統(tǒng)分析</b></p><p>  主要描述系統(tǒng)的需求分析,首先進(jìn)行需求的總體介紹,

44、然后圍繞需求的總體介紹給出具體需求的功能描述,也就為系統(tǒng)設(shè)計(jì)提供一個(gè)需求的基礎(chǔ)。</p><p><b>  3.1 需求概述</b></p><p>  本部分主要描述系統(tǒng)需求的提出和描述,主要根據(jù)平臺(tái)的定位來(lái)提出。平臺(tái)主要面向多重業(yè)務(wù)系統(tǒng),并且面向多類(lèi)通信設(shè)備。因此總體需求圍繞著業(yè)務(wù)整合和設(shè)備管理而提出。</p><p>  3.1.1

45、 業(yè)務(wù)整合</p><p>  是將基于各種不同平臺(tái)、用不同方案建立的異構(gòu)應(yīng)用業(yè)務(wù)整合集成。通過(guò)建立底層結(jié)構(gòu),來(lái)聯(lián)系橫貫整個(gè)企業(yè)的異構(gòu)系統(tǒng)、應(yīng)用、數(shù)據(jù)源等,完成在企業(yè)內(nèi)部的OA, ERP, CRM, SCM、數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)、交流網(wǎng)站,以及其他重要的內(nèi)部系統(tǒng)之間無(wú)縫地共享和交換數(shù)據(jù)的需要。有了業(yè)務(wù)平臺(tái),企業(yè)就可以將企業(yè)核心應(yīng)用和新的移動(dòng)信息業(yè)務(wù)解決方案結(jié)合在一起。</p><p>  3.

46、1.2 設(shè)備管理</p><p>  本平臺(tái)的通信設(shè)備主要包括移動(dòng)信息機(jī)、SIM Card, GPRS Modem, 56XMessage Modem、安裝Windows NT的PC組成硬件平臺(tái)。Modem通過(guò)串口與PC服務(wù)器連接,移動(dòng)信息機(jī)通過(guò)雙絞線與PC服務(wù)器連接;一般而言,使用Modem實(shí)現(xiàn)接收功能,用移動(dòng)信息機(jī)實(shí)現(xiàn)發(fā)送功能;也可以直接登錄PC服務(wù)器,使用WEB界面直接控制短信平臺(tái)的發(fā)送及交互功能。<

47、;/p><p>  3.2 功能需求分析</p><p>  本部分描述系統(tǒng)具體功能需求,首先給出需求用例,然后根據(jù)用例描述具體功能邊界。</p><p>  3.2.1 用例描述</p><p>  各個(gè)業(yè)務(wù)應(yīng)用系統(tǒng)通過(guò)平臺(tái)提供集成服務(wù)進(jìn)行集成,從而達(dá)到業(yè)務(wù)整合的目的。因此,需要實(shí)現(xiàn)業(yè)務(wù)整合必須提供一個(gè)業(yè)務(wù)集成服務(wù)。只有在集成業(yè)務(wù)的基礎(chǔ)上才

48、能方便用戶通過(guò)平臺(tái)進(jìn)行短信的收發(fā)。</p><p>  收發(fā)短信最終都要通過(guò)短信收發(fā)設(shè)備完成,因此,需要對(duì)平臺(tái)能夠控制的短信設(shè)備進(jìn)行管理。從而達(dá)到和所有手機(jī)用戶通信的目的。同時(shí),通過(guò)短信平臺(tái),手機(jī)用戶可以直接與企業(yè)內(nèi)部網(wǎng)絡(luò)實(shí)現(xiàn)交互,不受地域的限制,從而達(dá)到提高辦公效率的目的。</p><p>  從業(yè)務(wù)整合的需要出發(fā),平臺(tái)應(yīng)該具備業(yè)務(wù)定制管理功能;從設(shè)備管理的需要出發(fā),平臺(tái)需要能夠配置和驅(qū)

49、動(dòng)相關(guān)的短信收發(fā)設(shè)備。下面將會(huì)對(duì)針對(duì)需求的提出進(jìn)行細(xì)化分析。</p><p>  3.2.2 業(yè)務(wù)定制管理功能</p><p>  業(yè)務(wù)定制功能主要為了滿足業(yè)務(wù)整合的需要。</p><p>  所謂業(yè)務(wù)定制,就是能夠讓需要接入短信平臺(tái)的業(yè)務(wù)可以通過(guò)平臺(tái)進(jìn)行定制。當(dāng)用戶需要接入一個(gè)IT系統(tǒng)或者增加一項(xiàng)新的短信業(yè)務(wù)時(shí),首先要在平臺(tái)定制該項(xiàng)業(yè)務(wù),然后通過(guò)二次開(kāi)發(fā)接口或者

50、平臺(tái)自身的業(yè)務(wù)功能服務(wù)實(shí)現(xiàn)該項(xiàng)業(yè)務(wù)。</p><p>  所謂業(yè)務(wù)管理,就是平臺(tái)將用戶定制的業(yè)務(wù)進(jìn)行管理。用戶可以通過(guò)平臺(tái)將自己定制的業(yè)務(wù)進(jìn)行查詢、修改、刪除等相關(guān)操作。比如:某項(xiàng)業(yè)務(wù)的時(shí)間、設(shè)備、代碼等參數(shù)需要修改,通過(guò)平臺(tái)要能夠完成;當(dāng)某項(xiàng)業(yè)務(wù)不再使用時(shí)可以進(jìn)行刪除;用戶定制的業(yè)務(wù)也可以進(jìn)行查詢,平臺(tái)要能夠提供足夠的業(yè)務(wù)信息方便用戶進(jìn)行管理。</p><p>  所有在平臺(tái)上定制和管理

51、的業(yè)務(wù),通過(guò)平臺(tái)的自身引擎觸發(fā)任務(wù)并且提供通信能力。例如:在短信平臺(tái)設(shè)置定時(shí)發(fā)送指定短信,應(yīng)用于企業(yè)通知、任務(wù)下達(dá)??梢詫?duì)指定客戶群進(jìn)行短信調(diào)查,應(yīng)用于投票、營(yíng)銷(xiāo)活動(dòng)抽獎(jiǎng)等方面。</p><p>  3.2.3 設(shè)備定制管理功能</p><p>  設(shè)備定制管理功能是為了滿足設(shè)備管理的需要。</p><p>  所謂設(shè)備定制,主要為了實(shí)現(xiàn)新的通信設(shè)備接入平臺(tái),平臺(tái)

52、可以通過(guò)二次開(kāi)發(fā)接口調(diào)用相應(yīng)的設(shè)備,為業(yè)務(wù)提供服務(wù)。</p><p>  所謂設(shè)備管理,主要為了實(shí)現(xiàn)平臺(tái)對(duì)各種通信設(shè)備的資源配置和調(diào)用管理。比如某項(xiàng)業(yè)務(wù)需要從信息機(jī)采集信息而從Modem回復(fù)通知,就可以通過(guò)平臺(tái)對(duì)設(shè)備的管理功能實(shí)現(xiàn)該種需要。</p><p>  針對(duì)不同的IT系統(tǒng)和平臺(tái)沒(méi)有實(shí)現(xiàn)的通信設(shè)備,平臺(tái)需要提供二次開(kāi)發(fā)接口功能方便IT系統(tǒng)接入和設(shè)備擴(kuò)展。因此,二次開(kāi)發(fā)接口的提供必不可

53、少。</p><p>  3.2.4 平臺(tái)二次開(kāi)發(fā)功能</p><p>  針對(duì)不同IT系統(tǒng)提供二次開(kāi)發(fā)組件,平臺(tái)要能夠方便快捷的進(jìn)行二次開(kāi)發(fā)和部署??梢栽赑C服務(wù)器端接入更多的IT系統(tǒng),實(shí)現(xiàn)不同的業(yè)務(wù)系統(tǒng)接入。</p><p>  針對(duì)更多的通信設(shè)備擴(kuò)展,平臺(tái)要能夠提供一個(gè)定制接入的機(jī)制方便通信設(shè)備的接入和擴(kuò)展。</p><p><

54、b>  4 系統(tǒng)設(shè)計(jì)</b></p><p>  本章主要根據(jù)需求分析的結(jié)果和要求,進(jìn)行系統(tǒng)設(shè)計(jì)。首先給出系統(tǒng)設(shè)計(jì)原則,然后根據(jù)系統(tǒng)設(shè)計(jì)原則進(jìn)行系統(tǒng)架構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、相關(guān)功能模塊設(shè)計(jì),為系統(tǒng)實(shí)現(xiàn)提供設(shè)計(jì)基礎(chǔ)。</p><p>  4.1 系統(tǒng)設(shè)計(jì)的思想和原則</p><p>  系統(tǒng)設(shè)計(jì)必須滿足先進(jìn)性、擴(kuò)展性、標(biāo)準(zhǔn)性、易用性、易管理性及安全

55、性等原則。</p><p>  4.1.1 安全性</p><p>  系統(tǒng)中的各種數(shù)據(jù)應(yīng)該保證嚴(yán)格的機(jī)密性,尤其在本系統(tǒng)的方案中,所有的企業(yè)信息數(shù)據(jù)都集中存儲(chǔ)在中央服務(wù)器之中,而且需要通過(guò)網(wǎng)絡(luò)在客戶機(jī)和服務(wù)器之間傳輸。系統(tǒng)應(yīng)該提供安全的措施來(lái)保障數(shù)據(jù)的存儲(chǔ)安全以及傳輸安全。Microsoft .NET Framework是一個(gè)開(kāi)發(fā)和部署智能客戶端的優(yōu)秀平臺(tái)。.NET部署模型基于Web服

56、務(wù)器獲取應(yīng)用程序最新版本的客戶端,這樣做消除了許多麻煩。但是,也增加了客戶端下載惡意代碼的可能性。客戶端如何了解其中的差異?為此,.NET Framework引入一個(gè)名為代碼訪問(wèn)安全性(CAS)的安全系統(tǒng)。CAS有助于集中信任決策,并引入部分受信任的代碼這一概念,該代碼可以在減少的權(quán)限下運(yùn)行。</p><p>  4.1.2 易操作性</p><p>  界面容易操作應(yīng)作為系統(tǒng)的一個(gè)重要

57、特點(diǎn)。用戶界面是系統(tǒng)用戶最直接感受的一項(xiàng)內(nèi)容,易操作性不僅降低了用戶使用系統(tǒng)復(fù)雜度,同時(shí)在某種意義上也提高系統(tǒng)的工作效率。</p><p>  4.1.3 適應(yīng)性及靈活性</p><p>  系統(tǒng)設(shè)計(jì)需要充分考慮到實(shí)際系統(tǒng)在今后工作發(fā)展而產(chǎn)生的升級(jí)需求,盡量保證在原有代碼基礎(chǔ)上容易適應(yīng)、容易修改和升級(jí)的目標(biāo)。</p><p>  4.1.4 簽于組件的軟件開(kāi)發(fā)&

58、lt;/p><p>  基于組件的軟件開(kāi)發(fā)方法已成為現(xiàn)代軟件開(kāi)發(fā)方法的主流,組件的開(kāi)放性、互聯(lián)性、可重用性和可裁剪性,給基于組建的應(yīng)用系統(tǒng)帶來(lái)了可重組性和對(duì)實(shí)際應(yīng)用需求和運(yùn)行環(huán)境的針對(duì)性的提高。按照組件標(biāo)準(zhǔn)進(jìn)行業(yè)務(wù)功能開(kāi)發(fā),是保證整個(gè)系統(tǒng)的可維護(hù)性、可重用性、可重組性、易擴(kuò)充性的最為有效方法。</p><p>  4.1.5 數(shù)據(jù)共享</p><p>  對(duì)所有的數(shù)據(jù)

59、采用合理的數(shù)據(jù)結(jié)構(gòu),把它們有效地組織好,進(jìn)行統(tǒng)一維護(hù)管理,避免數(shù)據(jù)重復(fù),減少冗余,提高準(zhǔn)確性和可靠性,保證數(shù)據(jù)的統(tǒng)一性和完整性。</p><p>  4.2 系統(tǒng)架構(gòu)設(shè)計(jì)</p><p>  部分先給出系統(tǒng)層次結(jié)構(gòu)圖,根據(jù)層次結(jié)構(gòu)的定義給出系統(tǒng)架構(gòu)的設(shè)計(jì)和描述。</p><p><b>  圖4-1層次結(jié)構(gòu)圖</b></p>&

60、lt;p>  系統(tǒng)采用三層架構(gòu)體系,設(shè)備通信層負(fù)責(zé)進(jìn)行數(shù)據(jù)的接收和發(fā)送。數(shù)據(jù)交換服務(wù)則將數(shù)據(jù)通信層或者應(yīng)用接口層的數(shù)據(jù)進(jìn)行處理和傳遞。</p><p>  各個(gè)業(yè)務(wù)應(yīng)用系統(tǒng)再通過(guò)應(yīng)用接口層采集歸并數(shù)據(jù)。整個(gè)過(guò)程的數(shù)據(jù)緩存都由數(shù)據(jù)庫(kù)完成。所以數(shù)據(jù)庫(kù)貫穿始終。</p><p>  數(shù)據(jù)分為上行數(shù)據(jù)和下行數(shù)據(jù)兩種。</p><p>  上行數(shù)據(jù):設(shè)備通信層首先采集數(shù)

61、據(jù)并將數(shù)據(jù)進(jìn)行初步過(guò)濾整理存儲(chǔ)到數(shù)據(jù)庫(kù)當(dāng)中;數(shù)據(jù)交換層輪詢?cè)O(shè)備通信層處理后的上行數(shù)據(jù),如果數(shù)據(jù)交換未處理的數(shù)據(jù),則根據(jù)不同業(yè)務(wù)的不同要求進(jìn)行處理并將處理后的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)當(dāng)中;應(yīng)用接口層輪詢數(shù)據(jù)交換層處理后的數(shù)據(jù),如有業(yè)務(wù)接口為處理的數(shù)據(jù)則根據(jù)業(yè)務(wù)需要采集歸并。完成一個(gè)數(shù)據(jù)的處理流程。</p><p>  下行數(shù)據(jù):用戶將要發(fā)送的數(shù)據(jù)提供給應(yīng)用接口;應(yīng)用接口將要發(fā)送的數(shù)據(jù)提交給數(shù)據(jù)交換;數(shù)據(jù)交換根據(jù)需要將數(shù)據(jù)提

62、交給設(shè)備通信進(jìn)行發(fā)送。全過(guò)程同樣使用數(shù)據(jù)庫(kù)進(jìn)行緩存[8]。</p><p>  4.3 數(shù)據(jù)庫(kù)設(shè)計(jì)</p><p>  通過(guò)對(duì)系統(tǒng)需要的功能的分析,設(shè)計(jì)出后臺(tái)數(shù)據(jù)的關(guān)系,給出系統(tǒng)數(shù)據(jù)庫(kù)的概念模型,即繪制實(shí)體關(guān)系圖(E-R模型)。</p><p><b>  圖4-2 ER圖</b></p><p><b> 

63、 數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)構(gòu)原則</b></p><p>  1)與程序流程有關(guān)的狀態(tài)信息使用域進(jìn)行限制和定義,不允許最終用戶修改定義</p><p>  2)用戶可修改的狀態(tài)列表信息,用數(shù)據(jù)表來(lái)定義,一經(jīng)創(chuàng)建后,用戶只可修改名稱(chēng),不能修改代碼,修改后的名稱(chēng)與原名稱(chēng)應(yīng)代表相同的意義。</p><p>  3)用戶采用列表錄入的文字信息,在一個(gè)統(tǒng)一的“系統(tǒng)信息”表中定

64、義,用戶可任意創(chuàng)建和修改。用此種方法錄入的信息,錄入的信息與選擇列表不存在約束關(guān)系,列表只是作為文字錄入的一種輔助手段。</p><p>  4)輔助編碼表應(yīng)至少有兩列一一代碼和名稱(chēng)。只有在名稱(chēng)非常穩(wěn)定的情況下才可以不使用代碼。使用編碼表的好處是在應(yīng)用程序界面中,不同的地方出現(xiàn)同一種數(shù)據(jù)的錄入(如錄入數(shù)據(jù)或查詢過(guò)濾條件)時(shí)只需定義一次選擇列表,不會(huì)出現(xiàn)兩處沖突的現(xiàn)象,方便編程。</p><p&

65、gt;  5)所有記錄業(yè)務(wù)數(shù)據(jù)的表中都設(shè)有“錄入員”和“錄入日期”列,由系統(tǒng)自動(dòng)記錄。</p><p>  6)記錄業(yè)務(wù)數(shù)據(jù)的表中,根據(jù)需要設(shè)置“過(guò)程”和“狀態(tài)”,列,“過(guò)程”列用一位數(shù)字或字符記錄如錄入審核記賬等過(guò)程狀態(tài);“狀態(tài)”列用一位數(shù)字或字符記錄如正常作廢刪除等狀態(tài)。所有表的“過(guò)程”狀態(tài)的改變?nèi)掌诤筒僮魅擞梢粏为?dú)表來(lái)記錄,表中記錄狀態(tài)改變所涉及的表標(biāo)識(shí)記錄標(biāo)識(shí)操作人和操作日期。</p>&l

66、t;p>  7)基本編碼表中應(yīng)設(shè)置“編碼”‘縮語(yǔ)’“名稱(chēng)”,“編碼”作為主鍵與其它表的外鍵形成對(duì)應(yīng)關(guān)系,完成基于主外鍵的完整性約束。</p><p>  8)記錄錄入單據(jù)的表中設(shè)置“自動(dòng)單據(jù)號(hào)”,由一字符開(kāi)始以區(qū)分單據(jù)類(lèi)型,后跟一數(shù)字序列表示序號(hào)?!白詣?dòng)單據(jù)號(hào)”由系統(tǒng)自動(dòng)生成,作為主表的主鍵,不允許用戶修改,并作為連接主表和明細(xì)表的外鍵。</p><p>  9)明細(xì)表中設(shè)置序號(hào)列,

67、用于同一單據(jù)中排列各行的序號(hào)。</p><p>  10)用于記錄業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)表與用于報(bào)表的數(shù)據(jù)表分別存于不同的數(shù)據(jù)庫(kù)中,分別命名為“業(yè)務(wù)數(shù)據(jù)庫(kù)”和“決策數(shù)據(jù)庫(kù)”?!皹I(yè)務(wù)數(shù)據(jù)庫(kù)”獨(dú)立于“決策數(shù)據(jù)庫(kù)”進(jìn)行設(shè)計(jì),“決策數(shù)據(jù)庫(kù)”中的數(shù)據(jù)來(lái)源于“業(yè)務(wù)數(shù)據(jù)庫(kù)”。</p><p>  11)任意業(yè)務(wù)流程中應(yīng)考慮創(chuàng)建審核記賬修改刪除沖紅結(jié)存(月結(jié)年結(jié))的處理及滿足的條件。</p><

68、;p>  12)對(duì)于主明細(xì)表結(jié)構(gòu),設(shè)計(jì)對(duì)應(yīng)的視圖將兩表連接用于查詢。</p><p>  13)禁止直接用編碼或名稱(chēng)列表作為固定的過(guò)濾條件對(duì)數(shù)據(jù)進(jìn)行查詢。應(yīng)將包含此過(guò)濾條件的查詢做成特定的視圖;或在編碼表中加入屬性字段用于分類(lèi)。</p><p>  14)對(duì)于業(yè)務(wù)數(shù)據(jù)表應(yīng)設(shè)定一個(gè)“存檔標(biāo)記列”,對(duì)于新增行或修改行設(shè)置該標(biāo)志,以便將業(yè)務(wù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)向決策數(shù)據(jù)庫(kù)復(fù)制時(shí)用以選擇需更新的數(shù)

69、據(jù)。當(dāng)采用數(shù)據(jù)庫(kù)復(fù)制技術(shù)時(shí),也希望設(shè)定此標(biāo)志,以備用。此標(biāo)志的設(shè)置可以由應(yīng)用程序或觸發(fā)器來(lái)執(zhí)行。</p><p>  15)決策數(shù)據(jù)庫(kù)中應(yīng)復(fù)制基本編碼表和輔助編碼表,以保持決策數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性。</p><p>  16)同時(shí)采用多種分類(lèi)方法:如果某一實(shí)體有多于一種的分類(lèi)方法,或?qū)嶓w中的每個(gè)實(shí)例所屬的類(lèi)的數(shù)量是不定的,這時(shí)實(shí)體表和分類(lèi)表之間的關(guān)聯(lián)是多對(duì)多的,即一個(gè)實(shí)體屬于一個(gè)分類(lèi)而同時(shí)也

70、屬于其它的分類(lèi)。對(duì)于具有可多選的分類(lèi)標(biāo)志的表,與分類(lèi)名稱(chēng)列表之間存在多對(duì)多的關(guān)系,須按多對(duì)多的關(guān)系來(lái)處理。</p><p>  17)業(yè)務(wù)過(guò)程的記錄:如果一個(gè)業(yè)務(wù)表(或主表+明細(xì)表)依賴另外一個(gè)業(yè)務(wù)表的數(shù)據(jù),或在流程上一個(gè)業(yè)務(wù)表根據(jù)另一個(gè)業(yè)務(wù)表生成,則該業(yè)務(wù)表中應(yīng)有一段記錄另一業(yè)務(wù)表對(duì)應(yīng)記錄的標(biāo)識(shí)。這樣的結(jié)構(gòu)使得在流程上的所有數(shù)據(jù)形成一個(gè)鏈。</p><p>  18)分類(lèi)字段的冗余:業(yè)務(wù)

71、數(shù)據(jù)表往往關(guān)聯(lián)許多的基本信息表,這些基本信息表中可能含有一些分類(lèi)字段,而業(yè)務(wù)數(shù)據(jù)表的分類(lèi)統(tǒng)計(jì)可能引用這些字段[9]。</p><p>  表4-1 ManagerLogin</p><p>  ManagerLogin表(realname,username,password),用于管理員登錄時(shí)的身份認(rèn)證,還可以對(duì)認(rèn)證信息進(jìn)行查詢、修改、添加和刪除</p><p>

72、  表4-2 MessageContent</p><p>  MessageContent表(SourceNumber, Content, Time),用于描述短信的屬性。</p><p>  表4-3 MessageSaved</p><p>  PrepareredMessage表(SourceNumber, Type, Content, Time ),用

73、于存儲(chǔ)接收與發(fā)送的短信。</p><p>  表4-4 MessageReceived</p><p>  MessageReceived表(PhoneNum, Smstext, Smsdate, IsRead ),用來(lái)記錄所有接收的短信信息的數(shù)據(jù)表,以便查看。</p><p>  表4-5 MessageSend</p><p>  M

74、essageSend表(Telphone, Smstext, Smsdate ),用來(lái)記錄所有發(fā)出的短信信息的數(shù)據(jù)表。</p><p>  表4-6 RecMessage</p><p>  RecMessage表(Source Number, Message Content, Flag, Time),用于實(shí)現(xiàn)短信的回收功能。</p><p>  表4-7 Hi

75、story Message</p><p>  History Message表 ( ID, Source Number, Message Content, Recsed State, SucedState, Flag, Time) ,用于記錄短信歷史信息,其中包括用戶的手機(jī)號(hào)和短信內(nèi)容,以及短信的收發(fā)狀態(tài)和系統(tǒng)對(duì)短信的操作狀態(tài)。</p><p>  表4-8 Recycle</p

76、><p>  Recycle表(Source Number, Message Content, Time),用于實(shí)現(xiàn)回收站的功能,刪除的歷史記錄將記錄在該表中。</p><p>  在ASP.NET中, 數(shù)據(jù)庫(kù)的訪問(wèn)可通過(guò)ADO.NET模型來(lái)實(shí)現(xiàn),ADO.NET模型有兩個(gè)很重要的特性:一是可編程性, 它采用類(lèi)型化的操作對(duì)象,程序員可以對(duì)自己定義的對(duì)象進(jìn)行編程,更好地描述業(yè)務(wù)對(duì)象,使得其他用戶更

77、能容易理解。二是互操作性,它的這種特性體現(xiàn)在運(yùn)用DataSet(數(shù)據(jù)集)上,一個(gè)數(shù)據(jù)集可以包含任意多個(gè)數(shù)據(jù)表,數(shù)據(jù)集組成了一個(gè)非連接數(shù)據(jù)庫(kù)數(shù)據(jù)視圖,這種非連接的結(jié)構(gòu)體系使得只有在讀寫(xiě)數(shù)據(jù)庫(kù)時(shí)才需要使用數(shù)據(jù)庫(kù)服務(wù)器資源,因而提供了更好的可伸縮性。在ADO.NET中,數(shù)據(jù)訪問(wèn)是使用XML在組件間傳送數(shù)據(jù)集的,只要組件具有處理XML格式的能力都可以發(fā)送或者接收數(shù)據(jù)集,由于DataSet固有的序列化格式為 XML,所以它在以遠(yuǎn)程方式向XML W

78、eb Services發(fā)送和接收數(shù)據(jù)時(shí)成為首選。</p><p>  以身份驗(yàn)證模塊為例, 數(shù)據(jù)庫(kù)連接的步驟如下:</p><p><b>  1.導(dǎo)入命名空間</b></p><p>  using System.Configuration;</p><p>  using System.Data.SqlClient;

79、</p><p><b>  2.設(shè)定連接字符串</b></p><p>  string myConn =ConfigurationSettings.AppSettings ["Connection-String"];</p><p>  string mySQLstr2="select * from Manag

80、erLogin";</p><p>  在web.config的配置文件中的<configuration></configuration>標(biāo)記中加入<appSettings> <add key="ConnectionString" value="server=localhost;uid=sa;pwd=sa;database=smmd

81、b"/> </appSettings>,表明連接的服務(wù)器名, 數(shù)據(jù)庫(kù)名及其用戶名和密碼。</p><p>  3.用connection對(duì)象連接數(shù)據(jù)庫(kù)</p><p>  SqlConnection myConnection=new SqlConnection(myConn);</p><p>  myConnection.Open();

82、</p><p>  4.填充DataSet</p><p>  SqlDataAdapter myDataAdapter</p><p>  =new SqlDataAdapter(mySQLstr2,myConnection);</p><p>  DataSet myDS=new DataSet();</p><p&

83、gt;  myDataAdapter.Fill(myDS,"ManagerLogin");</p><p>  DataGrid1.DataSource=myD2;</p><p>  DataGrid1.DataBind();</p><p>  DataAdapter對(duì)象是DataSet和數(shù)據(jù)存儲(chǔ)之間的橋梁, 它是通過(guò)Fill方法把數(shù)據(jù)添加到

84、 DataSet中, 再通過(guò)將DataGrid對(duì)象的數(shù)據(jù)源指向該DataSet進(jìn)行數(shù)據(jù)綁定就可以在DataGrid中顯示ManagerLogin表的內(nèi)容[10] [11]。</p><p><b>  5 系統(tǒng)實(shí)現(xiàn)</b></p><p>  通信控制軟件是整個(gè)系統(tǒng)實(shí)現(xiàn)的關(guān)鍵,本部分主要根據(jù)平臺(tái)的核心模塊實(shí)現(xiàn)進(jìn)行描述,因?yàn)樯婕暗闹皇钦{(diào)度和訪問(wèn)功能因此提供的只有說(shuō)明和

85、源代碼,而沒(méi)有界面作為支撐。最后給出整個(gè)平臺(tái)的實(shí)現(xiàn)功能和界面描述。對(duì)于設(shè)備驅(qū)動(dòng)采用的VC++6作為開(kāi)發(fā)工具,因此主要以流程圖的方式進(jìn)行描述。而設(shè)備管理、任務(wù)引擎和接口引擎等模塊采用.NET平臺(tái)作為開(kāi)發(fā)工具,因此主要以類(lèi)圖的方式進(jìn)行描述。</p><p>  5.1 設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)</p><p>  本部分主要描述Modem設(shè)備類(lèi)的驅(qū)動(dòng)模塊實(shí)現(xiàn),用Modem的實(shí)現(xiàn)可以具有代表性,因?yàn)樗粌H

86、是實(shí)際設(shè)備,而且包括了底層短信格式的定義。</p><p>  5.1.1 打開(kāi)及關(guān)閉串口的操作</p><p>  由圖可看出,通過(guò)串口通信向設(shè)備發(fā)送指令用以實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)。因此,首先調(diào)用OpenComm,然后通過(guò)Open方法啟動(dòng)讀寫(xiě)線程監(jiān)控串口通信,從而實(shí)現(xiàn)異步操作。</p><p>  關(guān)閉串口的方法也是通過(guò)調(diào)用Close方法實(shí)現(xiàn)對(duì)線程的銷(xiāo)毀和串口的關(guān)閉。&l

87、t;/p><p>  圖 5-1 串口控制流程</p><p>  5.1.2 收發(fā)短信的操作</p><p>  圖 5-2 收發(fā)短信流程</p><p>  由圖可以看出,對(duì)于發(fā)送短信數(shù)據(jù):通過(guò)應(yīng)用程序調(diào)用的SendMsg函數(shù)提交短信數(shù)據(jù);給CSmsModem的PackageSmsMessage方法將信息打包成AT指令形式,再將其添加到CM

88、odemCommand的一個(gè)命令隊(duì)列當(dāng)中;啟動(dòng)一個(gè)ModemWrite線程將隊(duì)列中的AT指令發(fā)給Modem設(shè)備;監(jiān)聽(tīng)Modem設(shè)備的線程ModemRead將發(fā)送結(jié)果通過(guò)OnSendMsg事件提交給應(yīng)用程序[12]。</p><p>  對(duì)于短信接收:ModemRead線程將數(shù)據(jù)讀出;CSmsBuffer將數(shù)據(jù)解包并通過(guò)OnReceiveMsg事件提交給應(yīng)用程序,應(yīng)用程序通過(guò)掉用Readmsg方法進(jìn)行數(shù)據(jù)獲取。&l

89、t;/p><p>  5.1.3 實(shí)現(xiàn)控件</p><p>  函數(shù)說(shuō)明:打開(kāi)屬性comfort指定的串口。</p><p>  返回值:0表示打開(kāi)串口成功,否則打開(kāi)串口失敗,屬性comfort指定的串口可能不存在或被別的程序使用。void CloseCommQ:</p><p>  函數(shù)說(shuō)明:關(guān)閉串口。</p><p>

90、;  返回值:無(wú)short SendMsg(BSTR phonenumber, BSTR msg):</p><p>  函數(shù)說(shuō)明:發(fā)送短信,只能向一個(gè)號(hào)碼發(fā)送。</p><p>  參數(shù)說(shuō)明:phonenumber是對(duì)方的電話號(hào)碼,msg是要發(fā)送的內(nèi)容。</p><p>  返回值:返回該短信的序號(hào)(開(kāi)始時(shí)短信序號(hào)為1,每調(diào)用一次SendMsg短信的序號(hào)自動(dòng)加一)

91、,函數(shù)調(diào)用成功返回該序號(hào),函數(shù)調(diào)用失敗時(shí)(比如串口沒(méi)有打開(kāi)就調(diào)用該函數(shù))返回該序號(hào)的負(fù)數(shù)。因此,返回值>0調(diào)用成功,否則函數(shù)調(diào)用失敗。</p><p>  該短信是否成功發(fā)送出去應(yīng)在OnSendMsg事件中調(diào)用GetIndexOfLastSnd來(lái)獲得。short SendMessageMultiple(BSTR phonenumbers, BSTR msg):</p><p>  函

92、數(shù)說(shuō)明:群發(fā)短信,可以向多個(gè)號(hào)碼發(fā)送,號(hào)碼間以“,”號(hào)分隔。</p><p>  參數(shù)說(shuō)明:phonenumbers是接收方的電話號(hào)碼列表(電話號(hào)碼間以“,”號(hào)分隔),msg是要發(fā)送的內(nèi)容。</p><p>  返回值:0表示函數(shù)調(diào)用成功,否則調(diào)用失敗。該群發(fā)短信函數(shù)不增加短信序號(hào),發(fā)送完成后也不會(huì)產(chǎn)生OnSendMsg事件,即該函數(shù)不報(bào)告發(fā)送狀態(tài)。short SendMessageMul

93、tiMedia(BSTR phonenumber, BSTR MSmsg, long nCount):</p><p>  函數(shù)說(shuō)明:發(fā)送彩信,該函數(shù)暫未編寫(xiě)。</p><p>  參數(shù)說(shuō)明:phonenumber是對(duì)方的電話號(hào)碼,MSmsg彩信內(nèi)容,nCount是要發(fā)送的字節(jié)數(shù)。</p><p>  返回值:0表示函數(shù)調(diào)用成功,否則調(diào)用失敗。short ReadM

94、sg(BSTR* strSCMA, BSTR* strContent, BSTR* strPhoneNumber,BSTR* strTime):</p><p>  函數(shù)說(shuō)明:接收短信,當(dāng)產(chǎn)生OnReceiveMsg事件時(shí)調(diào)用該函數(shù)獲得短信。</p><p>  參數(shù)說(shuō)明:strSCMA是短信中心號(hào)碼,strConter是短信內(nèi)容,strPhoneNumber是發(fā)送方號(hào)碼,strTime是

95、接收時(shí)間串(如:"07-06-11 15:20:12")</p><p>  返回值:0表示函數(shù)調(diào)用成功,獲得了短信信息,否則沒(méi)有讀到短信,獲得的短信信息無(wú)意義。long GetIndexOfLastSndQ:</p><p>  函數(shù)說(shuō)明:該函數(shù)報(bào)告SendMsg發(fā)送的短信是否發(fā)送成功,當(dāng)產(chǎn)生OnSendMsg事件時(shí)調(diào)用該函數(shù)獲得短信發(fā)送報(bào)告。</p>

96、<p>  返回值:返回短信的序號(hào)(開(kāi)始時(shí)短信序號(hào)為1,每調(diào)用一次SendMsg短信的序號(hào)自動(dòng)加一),序號(hào)大于0時(shí)表示該序號(hào)的短信發(fā)送成功,序號(hào)為負(fù)數(shù)時(shí),表示該序號(hào)的短信發(fā)送失敗。void GetSimCardCapacity (int* Total, int* Used):</p><p>  函數(shù)說(shuō)明:獲得SIM卡短信總?cè)萘考氨皇褂玫臄?shù)量。</p><p>  函數(shù)參數(shù):To

97、tal獲得SIM卡短信容量,Used獲得當(dāng)前存儲(chǔ)的短信條數(shù)。</p><p>  返回值:無(wú)。控件事件OnReceiveMsg:</p><p>  說(shuō)明:當(dāng)有短信到達(dá)時(shí)觸發(fā)該事件,在該事件中調(diào)用ReadMsg函數(shù)獲取短信內(nèi)容。OnSendMsg:</p><p>  說(shuō)明:當(dāng)收到短信發(fā)送報(bào)告后觸發(fā)該事件,在該事件中調(diào)用GetIndexOfT.astSnd函數(shù)獲得相

98、應(yīng)短信的發(fā)送報(bào)告[13]。</p><p>  5.2 設(shè)備管理模塊實(shí)現(xiàn)</p><p>  本部分主要描述設(shè)備管理模塊的具體實(shí)現(xiàn)思路和數(shù)據(jù)結(jié)構(gòu)描述,而主要代碼如下:</p><p>  public class DeviceMgr</p><p><b>  {</b></p><p>  /

99、//<summary></p><p>  ///屬性定義,用來(lái)設(shè)置對(duì)象的一些常用屬性</p><p>  ///</summary></p><p>  private static DeviceMgr m}Obj =null;</p><p>  private static bool m bLoadFlag=fa

100、lse;</p><p>  private static bool m bStartFlag=false;</p><p>  private static AutoResetEvent asyncMonitorIsDone;</p><p>  private static AutoResetEvent asyncWorksAreDone;</p>

101、<p>  private static AutoResetEvent asyncOpsAreDone;</p><p>  private static SMSOperation.</p><p>  private static log4net.ILog</p><p>  private static DeviceWrapper</p>

102、<p>  DeviceManager.DAO.SMSDAO smsDAO;</p><p><b>  logger;</b></p><p>  deviceWrapper;</p><p>  public DeviceMgr()</p><p><b>  {</b></

103、p><p><b>  //</b></p><p>  //TODD:在此處添加構(gòu)造函數(shù)邏輯</p><p><b>  //</b></p><p>  logger=log4net. LogManager. GetLogger ("SMSDevice"):</p>

104、<p>  log4net. Config. XmlConfigurator. Configure();</p><p>  m}Ob j=this;</p><p>  asyncOpsAreDone=new AutoResetEvent(false);</p><p>  asyncMonitorIsDone=new AutoResetEvent(f

105、alse);</p><p>  asyncWorksAreDone=new AutoResetEvent(false);</p><p><b>  smsDAO=</b></p><p>  (SMSOperation. DeviceManager. DAO. SMSDAO)SMSOperation. DeviceManager. DAO

106、.DAOFactory.getDAOInstance("SMS");</p><p>  deviceWrapper=new DeviceWrapper():</p><p>  public static DeviceMgr getObjInstance()</p><p><b>  {</b></p>&

107、lt;p>  i f (m}Ob j==null)</p><p>  return new DeviceMgr();</p><p><b>  else</b></p><p>  return m}Ob j;</p><p><b>  <summary></b></p

108、><p>  根據(jù)數(shù)據(jù)庫(kù)配置,裝載所有設(shè)備,現(xiàn)在有短信貓和信息機(jī)兩種設(shè)備在數(shù)據(jù)庫(kù)中分別以1代表短信貓,2代表信息機(jī)[14]。</p><p>  </summary></p><p><b>  ////////</b></p><p><b>  l/z////</b></p>

109、<p>  public void loadAllDevice()</p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  if(!m bLoadFlag)</p>

110、<p><b>  {</b></p><p>  m bLoadFlag=true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  catch(Exception e)</p><p>

111、;  logger. Error ("loadAllDevice has an error"+e. ToString());</p><p><b>  }</b></p><p>  ///<summary></p><p>  ///啟動(dòng)設(shè)備工作,根據(jù)種類(lèi)配置信息不同,啟動(dòng)設(shè)備進(jìn)行工作</p>

112、<p>  ///</summary></p><p>  public void startDeviceWork()</p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論