版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 題目:基于云協(xié)作平臺的客戶端設(shè)計與實現(xiàn)</p><p> 基于云協(xié)作平臺的客戶端設(shè)計與實現(xiàn)</p><p><b> 摘要</b></p><p> 云協(xié)作平臺其理論依據(jù)來源于云計算,是基于互聯(lián)網(wǎng),將共享的軟硬件資源和信息,通過云資源調(diào)度管理系統(tǒng)(JH scheduler),按需提供給計算機和其他設(shè)備,并對這些設(shè)備進(jìn)
2、行管理。云協(xié)作平臺通常提供通用的通過瀏覽器訪問的應(yīng)用,軟件和數(shù)據(jù)可存儲在數(shù)據(jù)中心。瀏覽器和服務(wù)器結(jié)構(gòu)雖然簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本,然而瀏覽器和服務(wù)器結(jié)構(gòu)也有一些自身無法克服的缺點?,F(xiàn)如今,瀏覽器種類繁多,良莠不齊,這樣,就引發(fā)了一個很難做到平衡的問題——瀏覽器的兼容性問題,還有一個根問重要的是:如果要將本地的一些應(yīng)用程序集成到云平臺,瀏覽器就顯得捉襟見肘了??蛻舳说某霈F(xiàn)恰恰解決了以上
3、問題。</p><p> 本文基于云協(xié)作平臺,以瀏覽器實現(xiàn)的功能為設(shè)計參考,重點在于節(jié)省系統(tǒng)軟硬件資源,避免不同瀏覽器帶來的瀏覽器兼容性問題,增強云協(xié)作平臺前端的可擴展性,并為客戶端增加一些與服務(wù)端交互的工具,提高云協(xié)作平臺的用戶體驗和產(chǎn)品的認(rèn)可度??蛻舳说膶崿F(xiàn)是以觀察者模式為設(shè)計模式,以QT GUI為開發(fā)框架,使用Thrift,Boost等第三方工具庫。做到與瀏覽器端高度一致,與服務(wù)器端接口兼容,又具有客戶端
4、特色的云協(xié)作平臺的用戶前端軟件。</p><p> 通過幾個月的學(xué)習(xí)和努力,熟悉了服務(wù)器端的運行機制,以及服務(wù)器和瀏覽器的交互過程,在此基礎(chǔ)上參考瀏覽器端實現(xiàn)的用戶操作界面,實現(xiàn)了與瀏覽器端功能相同的客戶端。經(jīng)過測試,運行穩(wěn)定,可以投放使用。</p><p> 關(guān)鍵詞:云協(xié)作平臺;JH scheduler;客戶端;QT GUI</p><p> Design
5、and Implementation of the Client On Cloud Collaboration Platform</p><p><b> Abstract</b></p><p> Cloud collaboration platform the theoretical basis from the cloud computing, Intern
6、et based, will be shared hardware and software resources and information be provided to computers and other equipment, and management of these devices. Cloud collaboration platforms usually provide generic application th
7、rough the browser, software and data can be stored in the data center. The browser and the server mechanism while simplifying the client computer load, reduce the cost and the workload of system ma</p><p>
8、In this paper, cloud based collaboration platform, the browser functions as a design reference, Through resource scheduling management system (JH scheduler), focused on saving the system software and hardware resources,
9、avoid browser compatibility problems caused by cloud browser, enhanced collaboration platform front-end scalability, and to increase the number of interactive tools for the client and server, improve the recognition of c
10、loud cooperation platform user experience and product the. T</p><p> Through several months of study and work, familiar with the operation mechanism of the server, and the server and browser interaction pro
11、cess, the user operation interface on the basis of browser implementation, achieved with the same client browser function. After testing, stable operation, can be put in use.</p><p> Key Words: Cloud collab
12、oration platform ; JH scheduler ;The client;QT GUI</p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p><b> 1 緒論1</b&g
13、t;</p><p> 1.1課題設(shè)計背景1</p><p> 1.2課題設(shè)計的目的和意義1</p><p> 1.3課題的主要研究工作1</p><p> 1.4 論文結(jié)構(gòu)安排2</p><p> 2 課題設(shè)計的關(guān)鍵技術(shù)3</p><p> 2.1 資源調(diào)度管理系統(tǒng)簡介
14、3</p><p> 2.2 觀察者模式簡介4</p><p> 2.2.1 概述4</p><p> 2.2.2 解決的問題4</p><p> 2.2.3 模式中的角色4</p><p> 2.2.4 模式解讀5</p><p> 2.2.5 模式總結(jié)5</p&
15、gt;<p> 2.3 Thrift庫6</p><p> 2.3.1 Thrift簡介6</p><p> 2.3.2 Thrift架構(gòu)6</p><p> 2.3.3 支持的數(shù)據(jù)傳輸格式、數(shù)據(jù)傳輸方式和服務(wù)模型7</p><p> 2.3.4 Thrift使用7</p><p>
16、 2.4 Boost庫8</p><p> 2.4.1 Boost庫簡介8</p><p> 2.4.2 Boost的log庫8</p><p> 2.5 QT GUI簡介10</p><p> 2.5.1 QT GUI簡介和功能特點10</p><p> 2.5.2 信號和槽10</p&g
17、t;<p> 2.5.3 樣式表11</p><p> 2.5.4 QtWebKit12</p><p> 3 系統(tǒng)需求分析14</p><p> 3.1 用戶需求分析14</p><p> 3.2 性能需求分析15</p><p> 3.3 數(shù)據(jù)需求分析17</p>
18、<p> 4 系統(tǒng)概要設(shè)計19</p><p> 4.1 軟件體系結(jié)構(gòu)設(shè)計19</p><p> 4.2 系統(tǒng)的數(shù)據(jù)庫設(shè)計19</p><p> 4.3 系統(tǒng)的功能模塊設(shè)計20</p><p> 5 系統(tǒng)詳細(xì)設(shè)計與實現(xiàn)22</p><p> 5.1 登陸頁面的設(shè)計與實現(xiàn)22</
19、p><p> 5.2 登陸后界面的設(shè)計與實現(xiàn)23</p><p> 5.3 功能模塊的設(shè)計與實現(xiàn)26</p><p> 5.3.1 文件傳輸26</p><p> 5.3.2 執(zhí)行遠(yuǎn)端命令26</p><p> 5.3.3 查看節(jié)點信息27</p><p> 5.3.4 啟動遠(yuǎn)
20、程桌面27</p><p> 5.3.5 管理遠(yuǎn)程桌面27</p><p> 5.3.6 提交作業(yè)27</p><p> 5.3.7 作業(yè)數(shù)據(jù)管理27</p><p><b> 6 系統(tǒng)測試28</b></p><p> 6.1軟件測試基礎(chǔ)理論28</p>&l
21、t;p> 6.1.1 軟件測試定義28</p><p> 6.1.2 軟件測試基本概念28</p><p> 6.2 軟件測試目的29</p><p> 6.3 軟件測試方法分類29</p><p> 6.3.1 靜態(tài)測試與動態(tài)測試29</p><p> 6.3.2 黑盒與白盒測試29&l
22、t;/p><p> 6.3.3 單元測試、集成測試、系統(tǒng)測試、驗證測試和確認(rèn)測試30</p><p> 6.4 系統(tǒng)測試30</p><p> 6.4.1 測試用例設(shè)計要求30</p><p> 6.4.2 系統(tǒng)各個模塊測試用例31</p><p> 6.5測試報告34</p><p
23、><b> 7 總結(jié)35</b></p><p><b> 參考文獻(xiàn)36</b></p><p><b> 致謝37</b></p><p><b> 附錄40</b></p><p><b> 1 緒論</b>
24、;</p><p> 1.1課題設(shè)計背景</p><p> 2006年8月9日,google首席執(zhí)行官埃里克·施密特(Eric Schmidt)在搜索引擎大會(SES San Jose 2006)首次提出“云計算”(Cloud Computing)的概念。之后包括Google 、IBM、雅虎、惠普、英特爾,以及戴爾在內(nèi)的世界頂尖級IT公司為推動
25、和發(fā)展云計算不遺余力,爭先恐后。云計算理論逐步成熟和結(jié)構(gòu)趨于完整,基于云計算的產(chǎn)品應(yīng)運而生,云協(xié)作平臺就是其中的一個典型。</p><p> 云協(xié)作平臺其理論依據(jù)來源于云計算,自然是基于互聯(lián)網(wǎng),將共享的軟硬件資源和信息,通過運行于服務(wù)器端的資源調(diào)度管理系統(tǒng)(JH scheduler)統(tǒng)一協(xié)調(diào),按需提供給計算機和其他設(shè)備,并對這些設(shè)備進(jìn)行管理。云協(xié)作平臺通常提供通用的通過瀏覽器訪問的應(yīng)用,軟件和數(shù)據(jù)可存儲在數(shù)據(jù)中
26、心。瀏覽器和服務(wù)器結(jié)構(gòu)雖然簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本,然而瀏覽器和服務(wù)器結(jié)構(gòu)也有一些自身無法克服的缺點?,F(xiàn)如今,瀏覽器種類繁多,良莠不齊,這樣,就引發(fā)了一個很難做到平衡的問題——瀏覽器的兼容性問題,還有一個更為重要的是:如果要將本地的一些應(yīng)用程序集成到云協(xié)作平臺,瀏覽器就顯得捉襟見肘了??蛻舳说某霈F(xiàn)恰恰解決了以上問題。</p><p> 1.2課題設(shè)計的目的和
27、意義</p><p> 瀏覽器能夠?qū)崿F(xiàn)的功能,客戶端同樣也可以實現(xiàn),但這并不是說,客戶端就可以完全取代瀏覽器來實現(xiàn)與云平臺的交互,完成生產(chǎn)實踐。瀏覽器旨在其靈活性,可移動性,而客戶端旨在其高度的集成性,以及其普適性,即可以集成操作系統(tǒng)上的所有應(yīng)用,更方便的為用戶提供服務(wù);普適性在于操作系統(tǒng)的較為明確,程序開發(fā)有的放矢,這樣也大大降低了開發(fā)成本,和開發(fā)、維護(hù)周期??蛻舳?服務(wù)器結(jié)構(gòu)能充分發(fā)揮客戶端PC的處理能力,
28、很多工作可以在客戶端處理后再提交給服務(wù)器,這樣可以提高工作效率,縮短工作時間,使云平臺能夠更高效、快捷的工作??蛻舳?服務(wù)器結(jié)構(gòu)在數(shù)據(jù)安全性方面也明顯高于瀏覽器/服務(wù)器結(jié)構(gòu),可以較為容易地實現(xiàn)多層認(rèn)證。</p><p> 1.3課題的主要研究工作</p><p> 由于云協(xié)作平臺的瀏覽器版已經(jīng)實現(xiàn),而客戶端版是盡量和瀏覽器版保持一致,因此,熟悉服務(wù)器端運行機制和瀏覽器版的基本結(jié)構(gòu)使得開
29、發(fā)客戶端變得有的放矢,也就相對容易的多了。服務(wù)器端的為java web實現(xiàn),客戶端實現(xiàn)是用C++實現(xiàn),兩者之間需要一個可以相互調(diào)用的接口。除此之外,從服務(wù)器端拿到的數(shù)據(jù)列表需要顯示在客戶端的對話框頁面,而這些數(shù)據(jù)列表是在瀏覽器端已經(jīng)</p><p> 實現(xiàn)的,在對話框上能夠直接顯示web頁面,就使得開發(fā)工作量減輕許多,這樣也為客戶端節(jié)省了響應(yīng)時間。</p><p> 1.4 論文結(jié)構(gòu)安
30、排</p><p> 本論文共有四章,具體組織如下:</p><p> 第一章:通過對已經(jīng)實現(xiàn)的云協(xié)作平臺的Web端功能分析,提出客戶端開發(fā)的目的和意義,此次研究的主要任務(wù),以及本次論文的組織結(jié)構(gòu)。</p><p> 第二章:主要介紹資源調(diào)度管理系統(tǒng)(JH scheduler)和開發(fā)本系統(tǒng)所采用的相關(guān)技術(shù),包括設(shè)計模式中的觀察者模式,Thrift庫、Boost
31、庫以及QT GUI編程等。</p><p> 第三章:系統(tǒng)需求分析,其中包括用戶需求分析、性能需求分析、數(shù)據(jù)需求分析。</p><p> 第四章:系統(tǒng)概要設(shè)計,從軟件體系結(jié)構(gòu),數(shù)據(jù)庫設(shè)計,系統(tǒng)功能模塊設(shè)計等方面敘述。</p><p> 第五章:系統(tǒng)詳細(xì)設(shè)計與實現(xiàn),用戶登錄頁面,操作界面,以及各個功能模塊的實現(xiàn)。</p><p><
32、b> 第六章:系統(tǒng)測試</b></p><p><b> 第七章:總結(jié)</b></p><p> 2 課題設(shè)計的關(guān)鍵技術(shù)</p><p> 云協(xié)作平臺是通過資源調(diào)度管理系統(tǒng),統(tǒng)一對用戶作業(yè)需求進(jìn)行動態(tài)管理、分配資源的協(xié)作的系統(tǒng)。一般是基于互聯(lián)網(wǎng),也有用專業(yè)網(wǎng)的情況。云協(xié)作平臺的主要功能是:分工合作、資源控制、作業(yè)管理等
33、功能。</p><p> 2.1 資源調(diào)度管理系統(tǒng)簡介</p><p> 資源調(diào)度管理系統(tǒng)(以下稱JH Scheduler)是一個集資源監(jiān)控和分布式應(yīng)用調(diào)度為一體的云計算的基礎(chǔ)架構(gòu)管理中間件,利用JH Scheduler可以快速的建立起一個完整企業(yè)級應(yīng)用服務(wù)平臺。它可以監(jiān)控、調(diào)度、管理網(wǎng)絡(luò)上的10臺到上千臺不同操作系統(tǒng)的服務(wù)器、工作站和虛擬機,把它們作為云計算資源集中管理起來為多種類型
34、的應(yīng)用軟件提供統(tǒng)一服務(wù)平臺。 JH Scheduler具有完備的和可擴展的資源定義、監(jiān)控等功能,包括硬件資源、操作系統(tǒng)、軟件許可證資源、存儲資源等等,并且為應(yīng)用軟件提供多種接口來使用這些云計算資源,從而輕易實現(xiàn)應(yīng)用軟件的并行分布式運行和彈性計算,完成從傳統(tǒng)的以服務(wù)器為中心的計算模式向以應(yīng)用服務(wù)為中心的計算模式遷移。 JH Scheduler支持多種類型應(yīng)用軟件的通用中間件,包括CAD/CAE軟件、制造業(yè)設(shè)計軟件、石油勘探分析軟件、模擬仿
35、真軟件、科學(xué)計算軟件等,這些不同類型的應(yīng)用軟件可以同時使用JH Scheduler管理的應(yīng)用集群,從而實現(xiàn)計算資源的充分共享。 由JH Scheduler管理的應(yīng)用集群系統(tǒng)具有高可用性,用戶可以配置多個管理節(jié)點,即使只有一個JH Schedule</p><p> 為了使計算資源得到高效使用,JH Scheduler內(nèi)置多種高效的管理調(diào)度策略,包括先來先服務(wù)、用戶/用戶組資源配額管理、基于隊列的優(yōu)先級設(shè)置、資源
36、公平共享調(diào)度、獨占式作業(yè)調(diào)度、搶占式作業(yè)調(diào)度等,基于這些策略,JH Scheduler把應(yīng)用軟件的每一次執(zhí)行實例作為一個作業(yè)來進(jìn)行調(diào)度和管理,并為管理員和作業(yè)的用戶提供方便的作業(yè)狀態(tài)監(jiān)控和友好的用戶界面。此外,JH Scheduler還有可擴展的接口,可以為特殊的管理調(diào)度需求定制策略。 由JH Scheduler管理的應(yīng)用集群系統(tǒng)具有高可靠性,作業(yè)在沒有資源的情況下將在系統(tǒng)中排隊等待資源。即使在執(zhí)行過程中計算節(jié)點出現(xiàn)故障,JH Sche
37、duler仍然可以把作業(yè)重新調(diào)度到其它機器上繼續(xù)執(zhí)行。 </p><p> 作為云計算基礎(chǔ)架構(gòu)產(chǎn)品,JH Scheduler與其基礎(chǔ)之上的Web portal產(chǎn)品提供安全友好的用戶管理和使用界面;通過與JH License Manager集成管理應(yīng)用集</p><p> 群系統(tǒng)的許可證資源,并提供專門針對許可證資源的先進(jìn)調(diào)度;通過與JH Analytics集成為用戶提供豐富的資源使用和
38、作業(yè)調(diào)度報表功能,以及詳盡靈活的計費系統(tǒng)。 </p><p> JH Scheduler產(chǎn)品的總體結(jié)構(gòu)如圖2.1所示。</p><p> 圖2.1 JH scheduler 總體結(jié)構(gòu)圖</p><p> 2.2 觀察者模式簡介</p><p><b> 2.2.1 概述</b></p><p&
39、gt; 觀察者模式有時被稱作發(fā)布/訂閱模式,觀察者模式定義了一種一對多的依賴關(guān)系,讓多個觀察者對象同時監(jiān)聽某一個主題對象。這個主題對象在狀態(tài)發(fā)生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。</p><p> 2.2.2 解決的問題</p><p> 將一個系統(tǒng)分割成一個一些類相互協(xié)作的類有一個不好的副作用,那就是需要維護(hù)相關(guān)對象間的一致性。我們不希望為了維持一致性而使各類緊
40、密耦合,這樣會給維護(hù)、擴展和重用都帶來不便。觀察者就是解決這類的耦合關(guān)系的。</p><p> 2.2.3 模式中的角色</p><p> 抽象主題(Subject):它把所有觀察者對象的引用保存到一個聚集里,每個主題都可以有任何數(shù)量的觀察者。抽象主題提供一個接口,可以增加和刪除觀察者對象。</p><p> 具體主題(ConcreteSubject):將有關(guān)
41、狀態(tài)存入具體觀察者對象;在具體主題內(nèi)部狀態(tài)改變時,給所有登記過的觀察者發(fā)出通知。</p><p> 抽象觀察者(Observer):為所有的具體觀察者定義一個接口,在得到主題通知時更新自己。</p><p> 具體觀察者(ConcreteObserver):實現(xiàn)抽象觀察者角色所要求的更新接口,以便使本身的狀態(tài)與主題狀態(tài)協(xié)調(diào)。</p><p> 2.2.4 模式
42、解讀</p><p> 實現(xiàn)觀察者模式有很多形式,比較直觀的一種是使用一種“注冊——通知——撤銷注冊”的形式。如圖2.2詳細(xì)的描述了這樣一種過程:</p><p> 圖2.2觀察者模式實現(xiàn)過程</p><p><b> 觀察者</b></p><p> ?。∣bserver)將自己注冊到被觀察對象(Subject)
43、中,被觀察對象將觀察者存放在一個容器(Container)里。</p><p><b> 被觀察</b></p><p> 被觀察對象發(fā)生了某種變化(如圖中的SomeChange),從容器中得到所有注冊過的觀察者,將變化通知觀察者。</p><p><b> 撤銷觀察</b></p><p>
44、; 觀察者告訴被觀察者要撤銷觀察,被觀察者從容器中將觀察者去除。</p><p> 觀察者將自己注冊到被觀察者的容器中時,被觀察者不應(yīng)該過問觀察者的具體類型,而是應(yīng)該使用觀察者的接口。這樣的優(yōu) 點是:假定程序中還有別的觀察者,那么只要這個觀察者也是相同的接口實現(xiàn)即可。一個被觀察者可以對應(yīng)多個觀察者,當(dāng)被觀察者發(fā)生變化的時候,他可以將消息 一一通知給所有的觀察者?;诮涌?,而不是具體的實現(xiàn)——這一點為程序提供了
45、更大的靈活性。</p><p> 2.2.5 模式總結(jié)</p><p><b> 優(yōu)點</b></p><p> 觀察者模式解除了主題和具體觀察者的耦合,讓耦合的雙方都依賴于抽象,而不是依賴具體。從而使得各自的變化都不會影響另一邊的變化。</p><p><b> 缺點</b></p&
46、gt;<p> 依賴關(guān)系并未完全解除,抽象通知者依舊依賴抽象的觀察者。</p><p><b> 適用場景</b></p><p> 當(dāng)一個對象的改變需要給變其它對象時,而且它不知道具體有多少個對象有待改變時。</p><p> 一個抽象某型有兩個方面,當(dāng)其中一個方面依賴于另一個方面,這時用觀察者模式可以將這兩者封裝在獨立
47、的對象中使它們各自獨立地改變和復(fù)用。</p><p> 2.3 Thrift庫</p><p> 2.3.1 Thrift簡介</p><p> Thrift是一個跨語言的服務(wù)部署框架,最初由Facebook于2007年開發(fā),2008年進(jìn)入Apache開源項目。Thrift通過一個中 間語言(IDL, 接口定義語言)來定義RPC的接口和數(shù)據(jù)類型,然后通過一個編
48、譯器生成不同語言的代碼(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由生成的代碼負(fù)責(zé)RPC協(xié)議層和傳輸層的實現(xiàn)。</p><p> 2.3.2 Thrift架構(gòu)</p><p> 圖2.3 Thrift架構(gòu)</p><p> Thrif
49、t實際上是實現(xiàn)了C/S模式,通過代碼生成工具將接口定義文件生成服務(wù)器端和客戶端代碼(可以為不同語言),從而實現(xiàn)服務(wù)端和客戶端跨語 言的支持。用戶在Thrift描述文件中聲明自己的服務(wù),這些服務(wù)經(jīng)過編譯后會生成相應(yīng)語言的代碼文件,然后用戶實現(xiàn)服務(wù)(客戶端調(diào)用服務(wù),服務(wù)器端提服務(wù))便可以了。其中protocol(協(xié)議層, 定義數(shù)據(jù)傳輸格式,可以為二進(jìn)制或者XML等)和transport(傳輸層,定義數(shù)據(jù)傳輸方式,可以為TCP/IP傳輸,內(nèi)存
50、共享或者文件共享等)被用作運行時庫。</p><p> 2.3.3 支持的數(shù)據(jù)傳輸格式、數(shù)據(jù)傳輸方式和服務(wù)模型</p><p> (1)支持的傳輸格式</p><p> TBinaryProtocol – 二進(jìn)制格式.</p><p> TCompactProtocol – 壓縮格式</p><p> TJS
51、ONProtocol – JSON格式</p><p> TSimpleJSONProtocol –提供JSON只寫協(xié)議, 生成的文件很容易通過腳本語言解析。</p><p> TDebugProtocol – 使用易懂的可讀的文本格式,以便于debug</p><p> ?。?)支持的數(shù)據(jù)傳輸方式</p><p> TSocket -
52、阻塞式socker</p><p> TFramedTransport – 以frame為單位進(jìn)行傳輸,非阻塞式服務(wù)中使用。</p><p> TFileTransport – 以文件形式進(jìn)行傳輸。</p><p> TMemoryTransport – 將內(nèi)存用于I/O. java實現(xiàn)時內(nèi)部實際使用了簡單的ByteArrayOutputStream。<
53、/p><p> TZlibTransport – 使用zlib進(jìn)行壓縮, 與其他傳輸方式聯(lián)合使用。當(dāng)前無java實現(xiàn)。</p><p> (3)支持的服務(wù)模型</p><p> TSimpleServer – 簡單的單線程服務(wù)模型,常用于測試</p><p> TThreadPoolServer – 多線程服務(wù)模型,使用標(biāo)準(zhǔn)的阻塞式IO。
54、</p><p> TNonblockingServer – 多線程服務(wù)模型,使用非阻塞式IO(需使用TFramedTransport數(shù)據(jù)傳輸方式)</p><p> 2.3.4 Thrift使用</p><p> ?。?)編譯安裝:./configure –》make –》make install</p><p> ?。?)利用Thri
55、ft部署服務(wù)</p><p> 主要流程:編寫服務(wù)說明,保存到.thrift文件–》根據(jù)需要,編譯.thrift文件,生成相應(yīng)的語言源代碼–》根據(jù)實際需要,編寫client端和server端代碼。</p><p> a).thrift文件編寫</p><p> 一般將服務(wù)放到一個.thrift文件中,服務(wù)的編寫語法與C語言語法基本一致,在.thrift文件中有
56、主要有以下幾個內(nèi)容:變量聲明、數(shù)據(jù)聲明(struct)和服務(wù)接口聲明(service, 可以繼承其他接口)。 </p><p> b)client端和server端代碼編寫 </p><p> client端和server端代碼要調(diào)用編譯.thrift生成的中間文件。</p><p> 在client端,用戶自定義CalculatorClient類型的對象(用
57、戶在.thrift文件中聲明的服務(wù)名稱是Calculator,則生成的中間代碼中的主類為CalculatorClient),該對象中封裝了各種服務(wù),可以直接調(diào)用(如client.ping()),然后thrift會通過封裝的rpc調(diào)用server端同名的函數(shù)。在server端,需要實現(xiàn)在.thrift文件中聲明的服務(wù)中的所有功能,以便處理client發(fā)過來的請求。如圖2.4所示。</p><p> 圖2.4 cl
58、ient端和server端的書寫</p><p> 2.4 Boost庫</p><p> 2.4.1 Boost庫簡介</p><p> Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一。Boost庫由C++標(biāo)準(zhǔn)委員會庫工作組成員發(fā)起,其中有些內(nèi)容有望成為下一代C++標(biāo)準(zhǔn)庫內(nèi)容。在C++社區(qū)中影響甚大,是不折
59、不扣的“準(zhǔn)”標(biāo)準(zhǔn)庫。Boost由于其對跨平臺的強調(diào),對標(biāo)準(zhǔn)C++的強調(diào),與編寫平臺無關(guān)。大部分Boost庫功能的使用只需包括相應(yīng)頭文件即可,少數(shù)(如正則表達(dá)式庫,文件系統(tǒng)庫等)需要鏈接庫。</p><p> 2.4.2 Boost的log庫</p><p><b> ?。?)相關(guān)概念</b></p><p> 日志記錄:一個獨立的消息包,這
60、個消息包還不是實際寫到日志里的消息,它只是一個候選的消息。 </p><p> 屬性:日志記錄中的一個消息片。 </p><p> 屬性值:那就是上面所說的屬性的值了,可以是各種數(shù)據(jù)類型。 </p><p> 日志槽(LOG SINK):日志寫向的目標(biāo),它要定義日志被寫向什么地方,以及如何寫。 </p><p> 日志源:應(yīng)用程序?qū)懭?/p>
61、志時的入口,其實質(zhì)是一個logger對象的實例。 </p><p> 日志過濾器:決定日志記錄是否要被記錄的一組判斷。 </p><p> 日志格式化:決定日志記錄輸出的實際格式。 </p><p> 日志核心:維護(hù)者日志源、日志槽、日志過濾器等之間的關(guān)系的一個全局中的實體。主要在初始化logging library時用到。 </p><p
62、><b> ?。?)框架結(jié)構(gòu)</b></p><p> Boost log的框架結(jié)構(gòu)如圖2.5所示:</p><p> 圖2.5 Boost log的框架結(jié)構(gòu)</p><p> A)應(yīng)用程序在圖的右側(cè),通過一個或多個logger實例發(fā)送日志消息。</p><p> B)應(yīng)用程序也可以出現(xiàn)在左側(cè),那就是一個日
63、志的顯示實例了。</p><p> C)一個日志記錄的數(shù)據(jù)中會包括許多屬性。屬性基本上是一個函數(shù),它的返回值就是屬性值。比如時間不僅是一個函數(shù)(也是一個屬性)。</p><p> D)有三種類型的屬性集:全局的,特定線程的,特定源的。前兩個是由logging core來維護(hù)的,所以不用再初始化。</p><p> 全局屬性集中的屬性被連接到所以的日志對象上。&
64、lt;/p><p> 線程屬性集中的屬性會連接到把它注冊到屬性集時的那個線程。</p><p> 源屬性集由初始化日志的源來維護(hù)的,它會連接到一個特定的源上。</p><p> 當(dāng)一個源初始化日志對象的時候,它會從上述的三個屬性集的所有屬性中得到屬性值。這些值會在將來處理。</p><p> 如果在不同的屬性集中有相同的屬性名字的時候就會
65、造成沖突,解決沖突的方法是全局屬性集的優(yōu)先級最低,源屬性集的優(yōu)先級最高。高優(yōu)先級的屬性會覆蓋低優(yōu)先級的屬性。</p><p> E)當(dāng)組合屬性值的時候,logging core來決定一個屬性是否要被送到sink中,這就是過濾。有兩層過濾,首先應(yīng)用的是全局中過濾,全局過濾用來快速的過濾掉那些不需要的日志記錄。然后 就是sink指定的過濾了。每個sink都有單獨的過濾器。sink過濾器允許將一個日志記錄定向到一個指
66、定的sink。</p><p> F)如果一個日志記錄至少通過了一個sink的話,它就可以用了。這時候就是日志消息格式化的時候了。格式化完成的日志消息和屬性值一起被送到接收它們的sink中。</p><p> G)如上圖所示,sink被分為前端和后端兩個部分。這是為了抽象sink的通用功能,如過濾和線程同步。前端由日志庫提供,用戶不大可能再去實現(xiàn)它。而后端 很可能是在日志庫的外面,它來
67、實現(xiàn)對日志記錄的處理。如寫文件,發(fā)送到網(wǎng)絡(luò)等。日志庫提供了大部分通常用到的后端程序。 </p><p> 2.5 QT GUI簡介</p><p> 2.5.1 QT GUI簡介和功能特點</p><p> QT提供了設(shè)計師工具,可以很方便的使用鼠標(biāo)拖拽的方式繪制界面。繪制完畢后自動生成一個界面的.h文件(如ui_mainwindow.h),其中含有一個自動生
68、成的Ui_MainWindow類,這個類中核心的函數(shù)是setupUi,根據(jù)界面向?qū)У牟煌锩娼邮找粋€QWidget *參數(shù)或者QMainWindow *參數(shù)。這個函數(shù)會自動在傳入的QWidget或QMainWindow上根據(jù)設(shè)計師繪制的界面創(chuàng)建可視化控件。使用這個自動生成的類有兩種方式,一是在定義QWidget或QMainWindow時創(chuàng)建一個Ui_MainWindow類型的成員ui,在構(gòu)造函數(shù)中調(diào)用其setupUi方法ui.setup
69、Ui(this),或使用C++特有的多繼承方式,定義子類的時候同時以Ui_MainWindow作為基類,在構(gòu)造函數(shù)中直接調(diào)用setupUi(this)。這時已經(jīng)可以在自定義部件子類中顯示繪制的界面了。要訪問繪制界面的可視化控件,根據(jù)上述兩種方式使用ui->控件名稱或者控件名稱直接進(jìn)行引用即可。</p><p> 2.5.2 信號和槽</p><p> 在圖形界面編程中,很多時候我
70、們希望一個可視對象發(fā)生某種變化時通知另一個或幾個對象,再一個地說,我們希望任何一類的對象能和其他對象進(jìn)行通訊。例如,某 個數(shù)值顯示窗口負(fù)責(zé)顯示某個滾動條對象的當(dāng)前數(shù)值,當(dāng)滾動條對象的值發(fā)生變化時,我們希望數(shù)值顯示窗口能收到來自滾動條對象發(fā)送的“數(shù)值改變”的信號,從而改變自己的顯示數(shù)值。 </p><p> 對于類似以上的問題,較早的工具包使用“回調(diào)”的方式來實現(xiàn)?;卣{(diào)是指一個函數(shù)的指針,如果你希望一個處理函數(shù)同
71、志你一些事件,你可以把另一個函數(shù)的指針傳遞給處理函數(shù)。處理函數(shù)在適當(dāng)?shù)臅r候會調(diào)用回調(diào)函數(shù)。 </p><p> 采用回調(diào)方式實現(xiàn)對象間的通訊有兩個主要缺點,首先回調(diào)函數(shù)不是類型安全的,我們不能確定處理函數(shù)使用了正確的參數(shù)來調(diào)用回調(diào)函數(shù),第二,回調(diào)函數(shù)和處理函數(shù)間的聯(lián)系非常緊密,因為處理函數(shù)必須知道要調(diào)用哪個回調(diào)函數(shù)。</p><p> 在QT開發(fā)環(huán)境中,實現(xiàn)對象間的通訊我們有一種稱為“
72、信號和槽”的機制可以代替回調(diào)函數(shù)。信號和槽機制用于實現(xiàn)對象間的通訊,是QT的一個中心特性,恐怕也是QT與其它工具包最不同的地方了。 </p><p> 信號和槽機制就是:當(dāng)一個特定的事件發(fā)生時,一個或幾個被指定的信號就被發(fā)射,槽就是一個返回值為void的函數(shù),如果存在一個或幾個槽和該信號相連接,那在該信號被發(fā)射后,這個(些)槽(函數(shù))就會立刻被執(zhí)行。 </p><p> 信號和槽機制是
73、類型安全的,一個信號的簽名必須與它的接收槽的簽名相匹配,這樣編譯器就可以幫助我們檢查類型是否匹配。信號和槽是很寬松的聯(lián)系在一起的,一個發(fā)射信號的對象不用考慮哪個槽會接收這個信號,接收信號的槽的所在對象也不知道要連接的信號是哪個對象發(fā)射的。QT的信號和槽機制可以保證如果你把一個信號和一個槽連接起來后,槽會在正確的時間使用信號的參數(shù)而被調(diào)用,信號和槽可以使用任何數(shù)量、類型的參數(shù)。 </p><p> QT的窗口部件
74、已經(jīng)有很多預(yù)定義的信號,也有很多預(yù)定義的槽,但我們總是通過繼承來加入我們自己的信號和自己的槽,這樣我們就可以處理感興趣的信號 了。凡是從QObject類或者它的某個子類繼承的所有類都可以包含信號和槽。當(dāng)某個事件發(fā)生后,被指定的信號就會被發(fā)射,它不知道也沒有必要知道是否有 槽連接了該信號,這就是信息封裝。 </p><p> 槽是可以用來接收信號的正常的對象的成員函數(shù),一個槽不知道它是否被其它信號連接??梢园岩粋€
75、信號和一個槽進(jìn)行單獨連接,這時槽會因為該信號被發(fā)射 而被執(zhí)行;也可以把幾個信號連接在同一個槽上,這樣任何一個信號被發(fā)射都會使得該槽被執(zhí)行;也可以把一個信號和多個槽連接在一起,這樣該信號一旦被發(fā)射,與之相連接的槽都會被馬上執(zhí)行,但執(zhí)行的順序不確定,也不可以指定;也可以把一個信號和另一個信號進(jìn)行連接,這樣,只要第一個信號被發(fā)射,第二個信號立刻就被發(fā)射。 </p><p><b> 2.5.3 樣式表<
76、;/b></p><p> QT中可以靈活的使用層疊樣式表(CSS),其語法和css很相似。因為HTML CSS的靈活性,可以很方便的為QT界面設(shè)計自己需要的外觀。</p><p> ?。?) 各子對象設(shè)置樣式表</p><p> 部件的對象名調(diào)用樣式表,如下:</p><p> comboBox->setStyleShee
77、t("QComboBox{border:1pxsolidgray;border-radius:3px;padding:1px18px1px3px;}");</p><p> 這樣單獨對該部件設(shè)置樣式表。需要注意的就是,當(dāng)后面再次使用setStyleSheet函數(shù)對comboBox設(shè)置樣式表時,之前設(shè)置的樣式表就不起作用了,也即樣式被現(xiàn)在定義效果的取代了。</p><p&g
78、t; 如果想定義所有某一類控件(比如界面上所有的QComboBox)一個樣式,可以使用qApp進(jìn)行設(shè)置。</p><p> ?。?)使用qApp設(shè)置樣式表</p><p> qApp是一個全局對象,使用其設(shè)置樣式表之后,部件就固定樣式了,當(dāng)然,后面使用某個子對象調(diào)用setStyleSheet函數(shù)時,會只改變函數(shù)中設(shè)置的樣式,其他的樣式不會發(fā)生改變。</p><p&g
79、t;<b> 比如:</b></p><p> qApp->setStyleSheet("QPushButton{border:2pxsolidblue;border-radius:6px;background-color:#E3EAA5;min-width:80px;}QComboBox{border:1pxsolidgray;border-radius:3px;pad
80、ding:1px18px1px3px;}QLineEdit{border:1pxsolidgray;border-radius:5px;padding:08px;selection-background-color:darkgray;}");</p><p> 這句話定義了按鈕、下拉框、行編輯框的樣式,界面中這三種部件都按照里面定義的樣式顯示。如果后面要對其中一個子部件的樣式進(jìn)行修改,可以直接調(diào)用se
81、tStyleSheet,將需要的樣式覆蓋覆蓋掉之前的,其他的保留,例如</p><p> pushButton->setStyleSheet("QPushButton{background-color:red;}");</p><p> 這樣就只改變按鈕的背景色,邊框大小那些qApp定義好的還是不變。</p><p> 注意:當(dāng)很多部
82、件布局在一起時,有時先使用qApp,然后在子部件中設(shè)置會出現(xiàn)意想不到的結(jié)果,這時只有不用qApp,直接對子部件進(jìn)行樣式表設(shè)置,每次樣式表元素都要設(shè)置全,因為單獨設(shè)置會覆蓋掉之前的樣式表。</p><p> 2.5.4 QtWebKit</p><p> QtWebkit模塊提供了一個在QT中使用web browser的engine,這使得我們在QT的應(yīng)用程序中使用萬維網(wǎng)上的內(nèi)容變得很容
83、易,而且對其網(wǎng)頁內(nèi)容的控制也可以通過native controls 實現(xiàn)。</p><p> QtWebkit具有渲染HTML,XHTML和SVG 文檔,使用CSS排版,運行JavaScript等功能。</p><p> 在JavaScript 運行環(huán)境和Qt object model直接的橋接技術(shù)使得自定義的QObject可以在JavaScript代碼中使用。和Qt network
84、module的整合使得網(wǎng)頁可以通過從服務(wù)器,本地文件系統(tǒng),甚至QT的資源系統(tǒng)中下載。</p><p> 另外為了提供渲染特性,可以使用HTML元素的contenteditable屬性,使HTML文檔可以被用戶編輯。</p><p> 為了使用Qtwebkit模塊中的類,我們需要在相關(guān)頭文件中加入 #include <QtWebKit>,在工程的pro文件中添加 QT +=
85、webkit語句。</p><p> QWebView主要用來查看網(wǎng)頁,一個QWebView的實例中有一個QWebPage。</p><p> QWebPage可以訪問這個頁面的文檔結(jié)構(gòu),它主要描述如Frames,the navigation history, 和編輯內(nèi)容的the undo/redo stack。</p><p> HTML文檔可以嵌套到一個f
86、rameset中個frame中。HTML一個獨立的 frame是通過QWebFrame類展示的。這個類中包含了到JS window object的bridge和用于刷新的QPainter。每一個QWebPage擁有一個QWebFrame作為其main frame,一個main frame可以包含多個child frame。</p><p> 每一個的Frame都有一個自己的JavaScript Context。
87、QWebFrame::addToJavaScriptWindowObject()可以使Qt C++中的object從JavaScript函數(shù)中訪問。QWebFrame::evaluateJavaScript()可以使用戶在C++代碼中直接運行JavaScript代碼。</p><p> 一個HTML文檔中獨立的元素可以通過在同一個頁面中的DOM JavaScript 接口訪問。對應(yīng)的類是QWebElement。
88、可以使用CSS選擇器通過QWebFrame's findAllElements()和findFirstElement()函數(shù)獲取QWebElement對象。</p><p> QWebSetting提供了對瀏覽器常用的各種屬性,和各種設(shè)置的配置。如:JavaScript enabled,plugin enabled等。通過其默認(rèn)設(shè)置可以顯示所有QWebPage實例的默認(rèn)配置。個別的屬性可以通過
89、這個頁面的setting來設(shè)置。全局的Setting使用QWebSetting::globalSettings(),某個頁面的settings用QWebPage::settings()。</p><p> QWebHsitory主要是用來存放QWebPage的訪問歷史記錄,并且提供對于導(dǎo)航到相關(guān)頁面的支持。</p><p> QWebHistoryInterface提供了一個實現(xiàn)訪問歷
90、史連接的接口。</p><p> 自從WebKit支持Netscape Plugin API, Qt的應(yīng)用程序可以顯示當(dāng)前平臺上可用的常見plugin。為了使plugin的支持性可用,用戶必須安裝對應(yīng)的plugin,并且當(dāng)前應(yīng)用程序的QWebSetting::PluginEnabled設(shè)置為可用。</p><p> QNetworkAccessManager是一個可以發(fā)送和接收數(shù)據(jù)的異
91、步API。它可以看做是post/put/get/head API。它也提供了對cookie和session的支持。</p><p><b> 3 系統(tǒng)需求分析</b></p><p> 云協(xié)作平臺的客戶端是整個云協(xié)作平臺與用戶交互的工具,是連接前端操作與后端處理的樞紐。由于客戶端是直接接觸用戶,就必須具有友好的操作界面,而且操作不能太復(fù)雜;操作遠(yuǎn)端的軟硬件資源,數(shù)
92、據(jù)在遠(yuǎn)距離傳輸又必須保證數(shù)據(jù)的安全性;作為客戶端程序也必須保證其一定范圍的可擴展性。</p><p> 3.1 用戶需求分析</p><p> 云協(xié)作平臺是在資源調(diào)度管理系統(tǒng)的基礎(chǔ)上,將加入集群中各個節(jié)點的資源,例如Windows節(jié)點上的辦公軟件,專用型開發(fā)軟件,Linux機器上的Fluent等,集成到服務(wù)器上,用戶通過客戶端上的相應(yīng)操作,實現(xiàn)對由用戶通過客戶端直接操作管理。支持遠(yuǎn)程啟
93、動桌面,并可將權(quán)限范圍內(nèi)的遠(yuǎn)程桌面共享給其他用戶,并支持客戶端和服務(wù)端之間的文件互傳。登陸客戶端的用戶是在服務(wù)器端的數(shù)據(jù)庫中配置,增刪改查可通過對服務(wù)器端對應(yīng)數(shù)據(jù)表的相應(yīng)操作,完成相關(guān)配置。對于登陸的用戶,有做用戶身份區(qū)分,不同身份的用戶所能看到的桌面應(yīng)用也不盡相同,這也是可以在服務(wù)器端配置的。因此客戶端必須包含以下功能:</p><p><b> 文件上傳和下載</b></p>
94、;<p> 用戶可通過文件上傳和下載功能實現(xiàn)服務(wù)端和客戶端之間的文件共享,以及遠(yuǎn)程桌面的登陸。</p><p><b> 執(zhí)行遠(yuǎn)端命令</b></p><p> 在實際的生產(chǎn)當(dāng)中,客戶端和服務(wù)器往往不在同一物理地點,客戶端需要實時查看服務(wù)端有關(guān)信息以便做相應(yīng)操作,這時,通過客戶端執(zhí)行遠(yuǎn)端命令功能就顯得十分重要了。除此之外,提交作業(yè),啟動桌面也會較多
95、的用到執(zhí)行遠(yuǎn)端命令這一功能。</p><p><b> 查看節(jié)點信息</b></p><p> 在實際使用過程中,客戶端需要對添加到服務(wù)端的節(jié)點資源信息進(jìn)行實時監(jiān)控,以獲取各個節(jié)點的準(zhǔn)確信息,并將節(jié)點信息以數(shù)據(jù)表格的方式顯示給用戶。</p><p><b> 啟動遠(yuǎn)程桌面</b></p><p&g
96、t; 在服務(wù)器端的JH scheduler上配置資源,資源運行節(jié)點狀態(tài)為”ok”,此時啟動遠(yuǎn)程桌面,JH scheduler自動為用戶分配資源,用戶等待桌面啟動。桌面啟動后,可將桌面共享給其他用戶,共享模式須有區(qū)分:觀察者模式共享和交互模式共享。如圖3.1所示。</p><p><b> 管理遠(yuǎn)程桌面</b></p><p> 對于有操作權(quán)限的用戶,可以將已有的
97、遠(yuǎn)程桌面以觀察者模式或是交互模式共享給其他用戶,以供其他用戶查看或是操作。而管理員可以關(guān)閉其他非管理員啟動的遠(yuǎn)程桌面,將不再運行的圖形桌面關(guān)閉,釋放資源,以實現(xiàn)資源的最大化利用。</p><p> 圖3.1啟動遠(yuǎn)程桌面流程圖</p><p><b> 提交作業(yè)</b></p><p> 用戶在登錄客戶端時需做有效性驗證,驗證通過后即可登錄
98、到操作頁面,通過客戶端可以提交一個作業(yè)。此時,服務(wù)端需將作業(yè)相關(guān)信息,例如作業(yè)號(有JH scheduler自動分配),作業(yè)名(用戶輸入),運行節(jié)點(JH scheduler自動分配),作業(yè)狀態(tài)(JH scheduler根據(jù)作業(yè)運行狀態(tài)設(shè)定)等信息插入到服務(wù)器端數(shù)據(jù)庫作業(yè)信息列表中。如圖3.2所示。</p><p><b> 作業(yè)數(shù)據(jù)管理</b></p><p>
99、 用戶可通過作業(yè)數(shù)據(jù)管理頁面對已經(jīng)提交的作業(yè)進(jìn)行查看,包括作業(yè)名、作業(yè)號、運行節(jié)點、開始運行時間、結(jié)束時間、運行狀態(tài)等,當(dāng)作業(yè)條數(shù)較多時,可以將已完成的作業(yè)信息進(jìn)行刪除操作。</p><p> 客戶端桌面上顯示的應(yīng)用圖標(biāo)是根據(jù)服務(wù)器端相應(yīng)xml文件動態(tài)生成的,所以,客戶端的可擴展性就非常的好了,如果想集成一些更多的應(yīng)用,只需修改服務(wù)器端相應(yīng)的配置文件即可。</p><p> 除此之外,
100、客戶端還需易于安裝部署,配置須簡單明白。</p><p> 3.2 性能需求分析</p><p><b> 運行環(huán)境</b></p><p> 作為輕量級的云協(xié)作平臺的用戶訪問終端,客戶端的運行環(huán)境,以及對軟硬件的要求不能太高。具體軟硬件配置如下:</p><p> 處理器:Intel CORE I3</p
101、><p> 圖3.2 提交作業(yè)流程</p><p><b> 內(nèi)存: 2GB</b></p><p><b> 硬盤: 50GB</b></p><p> 操作系統(tǒng):Windows XP 及以上版本</p><p> 對于32位或是64位系統(tǒng),有不同的軟件安裝包以供不
102、同位數(shù)操作系統(tǒng)使用。</p><p><b> 響應(yīng)時間</b></p><p> 由于客戶端需要將用戶操作的相關(guān)信息發(fā)送給服務(wù)器,服務(wù)器得到相關(guān)信息后需作出相應(yīng)操作,此操作會在其他節(jié)點上進(jìn)行,因此,用戶操作響應(yīng)時間不能太長,啟動遠(yuǎn)程桌面時間不能超過30秒鐘,關(guān)閉遠(yuǎn)程桌面不能超過3秒鐘,而客戶端的數(shù)據(jù)列表的顯示刷新過程不能超過2秒鐘。</p><
103、;p><b> 資源消耗</b></p><p> 作為客戶端程序,有可能會較長時間在客戶機上運行,因此,必須保證不能存在內(nèi)存泄露,對于程序中從內(nèi)存開辟的空間,在使用完之后需及時釋放,以節(jié)省內(nèi)存空間。在客戶端運行時,不能將CPU獨占,使客戶端機器其他功能受到影響。</p><p> 由于客戶端的數(shù)據(jù)都是從服務(wù)器端獲取到,然后再顯示到客戶端相應(yīng)的位置,其中涉
104、及比較多的是數(shù)據(jù)列表,這樣就為客戶端處理數(shù)據(jù)節(jié)省了大量時間,</p><p> 使得客戶端程序在本地系統(tǒng)開銷大大減小,從而節(jié)省了客戶端系統(tǒng)的軟硬件資源。</p><p> 用戶從客戶端登錄成功進(jìn)入桌面,如果長時間(半個小時)不做任何操作,相當(dāng)于待機,此時,此時服務(wù)器端的session將會過期,繼續(xù)操作會跳到登錄界面,這樣保證了個人操作的相對獨立。</p><p>
105、; 3.3 數(shù)據(jù)需求分析</p><p> ?。?)E-R圖 根據(jù)需求分析,本系統(tǒng)中涉及到的實體有:用戶,作業(yè)等。如圖3.3是用戶實體的實體屬性圖。</p><p> 圖3.3 用戶實體屬性圖</p><p> 除了用戶這一實體外,本系統(tǒng)中還有作業(yè)這一實體,如圖3.4是作業(yè)實體的實體屬性圖。</p><p> 圖3.4 作業(yè)實體屬性圖
106、</p><p><b> ?。?)數(shù)據(jù)字典</b></p><p><b> 編號:D1</b></p><p><b> 名稱:用戶表</b></p><p> 描述:記錄用戶基本信息</p><p> 結(jié)構(gòu):用戶名,密碼,用戶組</p
107、><p><b> 編號:D2</b></p><p><b> 名稱:作業(yè)表</b></p><p> 描述:記錄作業(yè)基本信息</p><p> 結(jié)構(gòu):作業(yè)號,作業(yè)名,用戶名,作業(yè)詳情,操作時間,運行節(jié)點</p><p> ?。?)系統(tǒng)主要功能的數(shù)據(jù)流圖 在對系統(tǒng)中所用
108、到的實體模型進(jìn)行了設(shè)計之后,下面就是對各活動圖的描述,對于他們之間的行為和交互作用,以及怎樣進(jìn)行生效。</p><p> 用戶功能:用戶登陸系統(tǒng)后進(jìn)行提交作業(yè),其中數(shù)據(jù)流程圖如圖3.5所示。</p><p> 圖3.5 提交作業(yè)數(shù)據(jù)流圖</p><p><b> 4 系統(tǒng)概要設(shè)計</b></p><p> 客戶端
109、整體采用現(xiàn)在主流的扁平化顯示風(fēng)格,在設(shè)計模式方面采用觀察者模式。</p><p> 4.1 軟件體系結(jié)構(gòu)設(shè)計</p><p> 用戶使用前端設(shè)備,如個人電腦,筆記本電腦、pad等,通過客戶端操作共享資源,數(shù)據(jù)與后端服務(wù)器交互,后端服務(wù)器與云資源進(jìn)行交互,下發(fā)操作與數(shù)據(jù),并獲得數(shù)據(jù)返回,服務(wù)器將返回的數(shù)據(jù)返回用戶客戶端進(jìn)行呈現(xiàn),如圖4.1所示。</p><p>
110、 圖4.1 云協(xié)作平臺的整體結(jié)構(gòu)</p><p> 4.2 系統(tǒng)的數(shù)據(jù)庫設(shè)計</p><p> 本文使用的數(shù)據(jù)庫是PostgreSQL,作為一個在Linux平臺上運行的數(shù)據(jù)庫,它在數(shù)據(jù)管理支持方面有良好的特性,并且可以由人來隨意的進(jìn)行修改按照自己的意愿擴充接口進(jìn)而實現(xiàn)需要的功能。</p><p> 在數(shù)據(jù)庫中建立關(guān)系表,數(shù)據(jù)庫包含以下業(yè)務(wù)實體:用戶信息表,作業(yè)
111、信息表等。</p><p> ?。?)用戶表 表名:user_info,結(jié)構(gòu)如下表4.1所示。</p><p> 表4.1 用戶信息表</p><p> ?。?)作業(yè)信息表 表名:job_info,結(jié)構(gòu)如下表4.2所示。</p><p> 表4.2 作業(yè)信息表</p><p> 對應(yīng)的每種業(yè)務(wù)實體類型在進(jìn)行邏輯建
112、模后,通過相應(yīng)的工具生成到數(shù)據(jù)實體中,所產(chǎn)生的關(guān)系如圖4.2所示。</p><p> 圖4.2 系統(tǒng)整體E-R圖</p><p> 4.3 系統(tǒng)的功能模塊設(shè)計</p><p> 云協(xié)作平臺客戶端的功能模塊如圖4.3所示:</p><p> 圖4.3 客戶端功能模塊圖</p><p><b> 文件上
113、傳和下載:</b></p><p> 在客戶端和服務(wù)端需要文件傳輸功能,用以完成從本地向服務(wù)器上傳文件,用戶從服務(wù)器端下載文件到本地,還有啟動遠(yuǎn)程桌面登錄Windows系統(tǒng)時,也需要拷貝logon文件到遠(yuǎn)程機器。</p><p> 文件傳輸工具使用FTP文件傳輸協(xié)議。有運行于Linux節(jié)點的FTP服務(wù)器和Windows上的Client組成。通過命令行輸入完成文件上傳和下載,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于android平臺的在線音樂客戶端設(shè)計與實現(xiàn)-畢業(yè)論文
- 基于Android平臺的云盤客戶端的設(shè)計與實現(xiàn).pdf
- 掌廚手機客戶端設(shè)計與實現(xiàn)【畢業(yè)論文】
- 云平臺中瘦客戶端協(xié)議的設(shè)計與實現(xiàn).pdf
- 畢業(yè)論文 基于ios的易車新聞客戶端的設(shè)計與實現(xiàn)
- 畢業(yè)論文范文——基于android平臺的crm系統(tǒng)客戶端軟件的研究與實現(xiàn)
- 基于web客戶端的攻擊與防范【畢業(yè)論文】
- 基于Android系統(tǒng)云備份客戶端的設(shè)計與實現(xiàn).pdf
- 軟件工程畢業(yè)論文-基于ios平臺的客戶端應(yīng)用之食安檢的設(shè)計與實現(xiàn)
- 基于iOS平臺的HSK客戶端設(shè)計與實現(xiàn).pdf
- 私有云Android客戶端的設(shè)計與實現(xiàn).pdf
- 基于Android平臺IMS客戶端的設(shè)計與實現(xiàn).pdf
- 基于Android平臺的新聞客戶端的設(shè)計與實現(xiàn).pdf
- 基于Android平臺的視頻客戶端的設(shè)計與實現(xiàn).pdf
- 基于Android平臺手機支付客戶端的設(shè)計與實現(xiàn).pdf
- 70838.基于android平臺的新聞客戶端設(shè)計與實現(xiàn)
- 畢業(yè)論文(基于android平臺的圖書管理系統(tǒng)手機客戶端開發(fā)設(shè)計)
- 實時同步云存儲客戶端的設(shè)計與實現(xiàn).pdf
- 移動社交平臺客戶端的設(shè)計與實現(xiàn).pdf
- 基于Android的桌面云客戶端的設(shè)計及實現(xiàn).pdf
評論
0/150
提交評論