基于p2p架構的企業(yè)級全文搜索系統(tǒng)的設計與實現---服務器與連接---畢業(yè)論文_第1頁
已閱讀1頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本 科 畢 業(yè) 論 文</p><p>  基于P2P架構的企業(yè)級全文搜索系統(tǒng)的設計與實現---服務器與連接</p><p>  The Design and Implementation of P2P Architecture Based Enterprise Full-text Search System ------Server and connect

2、ion</p><p><b>  姓 名: </b></p><p><b>  學 號:</b></p><p><b>  學  院:軟件學院</b></p><p><b>  系:軟件工程</b></p><p&

3、gt;  專 業(yè):軟件工程</p><p><b>  年 級:</b></p><p><b>  指導教師: </b></p><p><b>  年 月</b></p><p><b>  摘 要</b></p>&

4、lt;p>  研究表明,技術型企業(yè)、設計類企業(yè)、軟件開發(fā)企業(yè)均有這樣的特點:技術和研發(fā)人員從網絡中獲取了大量的技術資料和市場信息,同時,他們通過生產工作也積累了大量的項目經驗,技術文檔等等,構建起個人或團體較完善的信息庫。但由于公司與公司間商業(yè)性競爭而限于技術性保密和員工隱私等問題,這些有高價值信息無法在企業(yè)內部形成有效的流動和傳播,從而形成了一個個信息孤島。</p><p>  針對此,急需研發(fā)一個便于共

5、享企業(yè)內部資源的信息共享系統(tǒng)?;?,企業(yè)內部技術、項目資料多以文件形式存儲的特點,開發(fā)一個企業(yè)級全文搜索引擎是當務之急。而P2P架構在互聯(lián)網應用以其方便,信息交互迅速,結點平等等特點運用極其廣泛,據電信部門公布的數據表明:當今基于P2P技術的BT流量占到計算機網信息量的60%以上,可見其運用廣泛。因此,我們提出一種基于P2P架構的企業(yè)資源搜索引擎,一個用于知識型企業(yè)內部的員工之間的信息共享的檢索工具。該項目基于Windows Searc

6、h 服務,根據用戶自定義的搜索需求,進行局域網絡全文文件搜索。使局域網絡內的共享資源以一個界面就能全部呈現給用戶,整個網絡內計算機資源便形成一個資源池,任何用戶能夠以使用本地資源方式使用網絡內的資源。服務器同時不斷整合搜索結果:關鍵詞、詞頻統(tǒng)計數據、文檔的存儲位置等信息。當任何一個用戶試圖搜索某一個資源時,系統(tǒng)自動在企業(yè)內部網絡進行搜索和適配,并將合適的文檔直接推送到搜索結果集中,并將檢索結果保存在內部服務器端以加速二次檢索,形成一個企

7、業(yè)網內的P2P搜索共享系統(tǒng)。</p><p>  項目的主要任務是通過Windows Search服務實現文檔的搜索和共享,使用windows search API用C#語言構建基于Socket編程和多線程技術實現的P2P客戶端和服務端。</p><p>  關鍵詞:P2P ;企業(yè)文件共享;全文搜索</p><p><b>  Abstract</b

8、></p><p>  Recent researches prove that Technology-based enterprises, design-based enterprise, software development and service enterprises all have the following characteristics: technology and R & D

9、 personnel get a great deal of technical information and market information from the Internet, and through the production lot they have accumulated project experience, technical documentation, etc., that builds a better

10、information base of individuals or groups. However, limited commercial confidentiality and </p><p>  So, needed to develop an information sharing system for facilitate to share internal resources. Based on t

11、he characteristic of majority of enterprise technology, project information stored in the form of document, the development of an enterprise-class full-text search engine is a priority. Moreover, the P2P application in t

12、he Internet for its convenience, the rapid information exchange, equal nodes is used an extremely wide, according to data released from the telecommunications sector that BT </p><p>  The project's main

13、task is achieved by Windows Search service search and share documents, use windows search API using C # language construct based on Socket programming and multithreading technology of the P2P client and server. </p>

14、;<p>  Key words: P2P; enterprise files sharing; full-text search</p><p><b>  目錄</b></p><p><b>  第一章 緒論1</b></p><p><b>  1.1前言1</b><

15、/p><p>  1.2論文組織結構2</p><p>  第二章 系統(tǒng)概述與相關技術4</p><p>  2.1系統(tǒng)概述4</p><p>  2.1.1文件搜索引擎概述4</p><p>  2.1.2P2P概述5</p><p>  2.1.3系統(tǒng)實現工具概述7<

16、/p><p>  2.2相關技術8</p><p>  2.1.1資源預分配機制8</p><p>  2.1.2Windows Search 4.010</p><p>  2.1.3Telerik RadControls for WinForms11</p><p><b>  本章小節(jié)14

17、</b></p><p>  第三章 系統(tǒng)分析15</p><p>  3.1系統(tǒng)需求15</p><p>  3.1.1企業(yè)對于內部文件搜索共享系統(tǒng)的需求15</p><p>  3.1.2基于P2P架構的搜索共享系統(tǒng)的功能需求15</p><p>  3.2系統(tǒng)設計16</p&g

18、t;<p>  3.1.1系統(tǒng)概述16</p><p>  3.1.2系統(tǒng)非功能需求16</p><p>  3.1.3總體設計16</p><p>  3.3詳細設計18</p><p>  3.1.1組件、框架與系統(tǒng)模塊18</p><p>  3.1.2模塊通信19</

19、p><p><b>  本章小結20</b></p><p>  第四章 系統(tǒng)實現22</p><p>  4.1包設計22</p><p>  4.2服務器的實現:25</p><p>  4.1.1模塊一:搜索服務模塊:29</p><p>  4.1.2

20、模塊二:搜索請求模塊32</p><p>  4.1.3模塊三:搜索狀態(tài)模塊36</p><p>  4.1.4請求池與響應池36</p><p>  4.3客戶端簡介41</p><p>  4.4Socket池化實現46</p><p>  4.5實體對象序列化48</p>&l

21、t;p><b>  本章小節(jié)50</b></p><p>  第五章 系統(tǒng)測試及運行結果51</p><p><b>  5.1測試51</b></p><p><b>  5.2結果51</b></p><p><b>  文件搜索:51<

22、/b></p><p><b>  文件下載54</b></p><p><b>  本章小結55</b></p><p>  第六章 展望與總結56</p><p><b>  6.1 展望56</b></p><p><b>

23、  6.2 總結56</b></p><p><b>  參考文獻58</b></p><p><b>  致謝59</b></p><p><b>  Contents</b></p><p>  Chapter 1 Preface1</p>

24、<p>  1.1Introduction1</p><p>  1.2The structure of this paper2</p><p>  Chapter 2 System principle and related technologies outline4</p><p>  2.1System working principl

25、e4</p><p>  2.1.1File search enginer working principle4</p><p>  2.1.2P2P working principle5</p><p>  2.1.3System Implemetation working principle7</p><p>  2.2R

26、elated technologies introduce8</p><p>  2.1.1Resource pre-allocation mechanism8</p><p>  2.1.2Windows Search 4.010</p><p>  2.1.3Telerik RadControls for WinForms11</p>

27、<p>  Summary14</p><p>  Chapter 3 System Analysis15</p><p>  3.1System Requirement15</p><p>  3.1.1Requirements of enterprise search system15</p><p>  3.1.

28、2Functional requirements of P2P based system15</p><p>  3.2System Design16</p><p>  3.1.1Introduction of system16</p><p>  3.1.2Non-functional requirements of system16</p

29、><p>  3.1.3Overall design16</p><p>  3.3Detail Design18</p><p>  3.1.1Components, framework and system modules18</p><p>  3.1.2Module Communication19</p>&

30、lt;p>  Summary20</p><p>  Chapter 4 System Implementation22</p><p>  4.1Packet Design22</p><p>  4.2Server implementation:25</p><p>  Module 1: Search service

31、module:29</p><p>  Module 2: The search request module32</p><p>  Module 3: Search state Module36</p><p>  Module 4: Responsepool and RequestPool36</p><p>  4.3Cli

32、ent Profile36</p><p>  4.4 Socket Pooling Implementation46</p><p>  4.5object serialization48</p><p>  Summary50</p><p>  Chapter 5 System testing and running resu

33、lts51</p><p>  5.1System testing51</p><p>  5.2Running results51</p><p>  Summary55</p><p>  Chapter 6 Sumary and Outlook56</p><p>  6.1 Outlook56&

34、lt;/p><p>  6.2 Summary of the paper56</p><p>  References58</p><p><b>  Thanks59</b></p><p><b>  緒論</b></p><p><b>  前言</b

35、></p><p>  互聯(lián)網和搜索引擎已經成為現在人生活中不可或缺的一部分。在帶給生活極大方便的同時,互聯(lián)網上龐大冗沓的信息量也使人們在搜尋自己所需上付出了較大的時間成本,其中最主要的花費就是在浩瀚的搜尋結果中甄別、挑選的時間——盡管搜索引擎已經在它的能力上最大程度地進行了優(yōu)化排序。</p><p>  在調研中,我們發(fā)現,在企業(yè)中,尤其是技術型企業(yè)、設計類企業(yè)、軟件開發(fā)和服務企業(yè)

36、中:橫向對比,由于工作環(huán)境和工作項目等的相似性,同一時期員工的信息獲取關鍵字和方向重復度非常高,在同一部門尤甚;縱向對比,由于企業(yè)的業(yè)務的相似,不同項目、工程所應用的技術、資料等資源亦可以長時間重復利用。另一方面,員工本身自己在工作中已經不自覺建立和完善的知識庫和資源,這些資源往往是已經經過篩選甄別的,相比互聯(lián)網上的內容,具有更高的價值和更少的冗余無用信息,但是同時又有很大數量的資源是重復浪費的,員工每一個人可能在獲取一份相同的資料上都

37、花費了不等的時間。如果能將整個公司的網絡資源有效組織,那么不論是員工個人時間,還是間接的公司成本,都會得到極大的節(jié)約和改善。而資料文檔的互通共享也會使工作效率得到很大程度的提高。</p><p>  目前一些國內外的企業(yè)已經意識到這些問題,而快速增長的企業(yè)搜索市場吸引了Google、IBM、微軟等軟件巨頭的注意,未來搜索技術將進入每個應用程序的接口中。如推出了Google Search Appliance等本地

38、局域網搜索設備和軟件,或者提供了搜索API供定制開發(fā),還有一些中小型公司提供專業(yè)的私有搜索引擎開發(fā)。但是仍然無法完全解決問題:如果應用大型公司的技術,成本開支過高,應用功能相對高端卻用不上;應用私有技術,卻擔心技術支持,隱私等等沒有保障。通過統(tǒng)計和了解,在大部分企業(yè)中,所需要的資源多為word文檔,pdf文件等通用格式,重復冗余度最高,知識相關性最高的也是此類格式。同時在極大多數企業(yè)里,使用率最高的是Windows操作系統(tǒng),而自Wind

39、ows Vista開始,便內置了Window Search,在Windows XP中,也可以方便地安裝應用,并由微軟公司提供相關支持。</p><p>  針對上述問題和特點,我的畢業(yè)設計選擇了基于Windows Search API的二次開發(fā),它兼二者優(yōu)勢,成本較低,應用方便簡約,同時應用了P2P架構,在作為資源獲取者的同時也成為資源貢獻者。并將其本機的簡單搜索功能擴展化,網絡化,使搜索局域網內文件如同搜索本機

40、一樣迅速高效,最終實現了公司網絡內的資源共享流通。將客戶機的索引文件匯入網絡搜索,并將最終索引存儲到內部服務器,形成網絡自己的索引。在界面上提供了全文搜索,常用擴展名搜索下載等基本服務,同時在后臺可以響應多種高級搜索指令以便專業(yè)用戶使用,簡約而功能卓越。系統(tǒng)在設計時便預留足夠的空間可以擴展升級以及定制,在不同的公司和網絡間可以方便地進行復用。</p><p><b>  本系統(tǒng)的設計目標:</b&

41、gt;</p><p><b>  提高搜索質量</b></p><p>  1994年,有人認為一個完整的索引將會使得搜索變得十分簡單。然而,隨著的計算科學技術的迅速發(fā)展,事實證明查全率并不是評價搜索質量的唯一因數。大量的“無效的”結果常常沖掉用戶真正感興趣的結果。并且,人們仍然只愿意察看結果中的前十幾個。因此,伴隨的文件系統(tǒng)的龐大,我們需要的極高的查詢準確度。事實

42、上,我們希望只返回那些最“最優(yōu)秀”的文檔,而不是數以百計的相關性很小的文檔。</p><p>  極高的查詢準確度對于查詢之后的文件訪問也有重大的意義,用戶不必訪問大量的結果來找出所需的內容。搜索結果的顯示提供了相關性判斷的很好的依據。</p><p><b>  給搜索結果排序</b></p><p>  文件信息是一種很重要的資源,但是沒有

43、被文件搜索引擎很好的利用。根據關鍵字出現頻率、文件訪問頻率等對文件進行分類排序,這就使其很好的與人的主觀判斷相符合。</p><p><b>  論文組織結構</b></p><p>  本論文共六章,論文首先對企業(yè)資源重復冗余,員工重復相同的資源收集工作的現狀進行了描述,分析了其原因,以及現有的解決方案,介紹了畢業(yè)設計項目的背景和意義。緊接著論文簡單概述了畢業(yè)設計項

44、目中所用到的各項技術和原理,對用戶的需求和系統(tǒng)的總體設計進行整體的分析和概括。然后文章詳細地介紹了開發(fā)模塊和系統(tǒng)實現。在連接方面使用SOCKET和線程池進行文件搜索和傳輸,并實現P2P;在UI方面使用RAD CONTROL進行設計,使用戶操作體驗得到很大的提升。由于是基于Windows編程,我們選擇了C#語言和Visual Studio和Windows 7作為開發(fā)環(huán)境。同時為了提高開發(fā)效率和做好時間管理,我們使用了SCRUM方法來進行敏

45、捷開發(fā)。</p><p><b>  安排如下:</b></p><p>  第一章 緒論。介紹了知識型企業(yè)在發(fā)展和生產過程中,資源共享和知識交流的困難提出局域文件搜索系統(tǒng)的設計背景和目標。</p><p>  第二章 系統(tǒng)概述和相關技術。簡要介紹了文件搜索引擎基本組成部分,P2P技術,以及開發(fā)高效率服務器所需的資源預分配機制,Windows

46、Search 4.0特性等</p><p>  第三章 系統(tǒng)分析。針對用戶的共享文件資源,知識的需求,確定此系統(tǒng)的實現目標。此系統(tǒng)的總體設計和詳細設計,包括系統(tǒng)框架,模塊及其通信的介紹。</p><p>  第四章 系統(tǒng)實現。介紹了此系統(tǒng)的總體實現框架,主要介紹了服務器部分的開發(fā)。</p><p>  第五章 系統(tǒng)測試和運行結果。</p><p

47、>  第六章 展望和總結。</p><p><b>  系統(tǒng)概述與相關技術</b></p><p><b>  系統(tǒng)概述</b></p><p><b>  文件搜索引擎概述</b></p><p>  文件搜索引擎(File Search Engine)是指根據一定的策

48、略、運用特定程序搜集計算機上的文件信息,在對信息進行組織和處理后,并將處理后的信息顯示給用戶,是為用戶提供檢索服務的系統(tǒng)。</p><p>  文件搜索引警通常由4個部分組成:搜索器,索引器,檢索器,用戶接口</p><p><b>  搜索器:</b></p><p>  搜索器的功能是當計算機處于空閑時自動啟動,或人為手動啟動發(fā)現和搜索文件

49、信息。它盡可能多、盡可能快地搜索各種類型的新信息,同時因為某些計算機上的文件更新很快,所以還要定期更新已經搜集過的舊信息,以避免無效信息的存在(如文件已被刪除,或文件名更改)。并且由于在本地機器上搜索數據可以以非??斓乃俣冗M行,因此,能夠以多種搜索策略進行文件搜索。</p><p><b>  索引器:</b></p><p>  索引器的功能是理解搜索器所搜索的信息

50、,從中取出索引項,用于表示文檔及生成文檔庫的索引表。</p><p>  目前,在本系統(tǒng)中進行局域網文件搜索最重要的技術是分布式、并行搜索技術,達到搜索結果可在多臺機器上同時獲取,以提高文件信息發(fā)現與獲取速度。</p><p>  索引項有客觀索引項與內容索引項兩種:客觀項與文檔的語意內無關,如作者名、更新時間、編碼、文件長度、最近訪問時間、讀寫屬性、隱藏屬性等;內容索引項是用來反映文檔內

51、容的,如關鍵字及其出現頻率、短語、單字等。且內容索引項只可以分為單索引項和多索引項兩種。單索引項對于英語來說是英語單詞,容易提取,這是因為單詞之間存在空格是天然的分隔符;對于中文等連續(xù)書寫的語言,必須進行詞語的拆分。</p><p>  在文件搜索引擎中,一般要給單索引項賦予一個權值,以表示該索引項對文檔的區(qū)分度,同時用來計算查詢結果的相關度。使用的方法一般有統(tǒng)計法,信息論法和概率法。多索引項的提取方法有統(tǒng)計法,

52、概率法和語言學法。</p><p>  索引表一般使用某種形式的倒排表(Inversion List),即由索引項查找相應的文檔。索引表也可能要記錄索引項在文檔中出現的位置,以便檢索器計算索引項之間的相鄰或接近關系。</p><p>  索引器可以使用集中式索引算法或分布式索引算法。當數據量很大時,必須實現即時索引(Instant Indexing),否則不能夠跟上信息量急劇增加的速度。索

53、引算法對索引器的性能(如大規(guī)模峰值查詢時的響應速度)有很大的影響。一個搜索引擎的有效性在很大程度上取決于索引的質量。</p><p><b>  檢索器:</b></p><p>  檢索器的功能是根據用戶的查詢在索引庫中快速檢出文檔,進行文檔與查詢的相關度評價,對將要輸出的結果進行排序,并實現某種用戶相關性反饋機制。</p><p>  檢索

54、器常用的信息檢索模型有集合理模型、代數模型、概率模型和混合模型4種。</p><p><b>  用戶接口:</b></p><p>  用戶接口的作用是輸入用戶查詢、顯示查詢結果、提供用戶相關性反饋機制。主要的目的是方便用戶使用搜索引擎,高效率、多方式地從搜索引擎中得到有效、及時的信息。用戶接口的設計和實現使用人機交互的理論和方法,以充分適應人類的思維習慣。<

55、/p><p>  用戶接口可以分為簡單接口和復雜接口兩種:簡單接口只提供用戶輸入查詢串的文本框;復雜接口可以讓用戶對查詢進行,如邏輯運算(And、Or、Not;+、-)、相近關系(相鄰、Near)、目錄范圍、出現位置(如文件名、文件內容)、信息時間、長度等。目前一些公司和機構正在考慮制定查詢選項的標準。</p><p><b>  P2P概述</b></p>

56、<p>  在引言中,我們提到過“在當今的社會中,我們周圍P2P技術的應用越來越廣泛, 也可以說我們接觸到的軟件中絕大部分是P2P軟件?!?,那么什么是P2P技術?P2P技術具有什么特點?如何實現P2P思想?</p><p>  P2P(Peer-to-Peer) 稱為對等互聯(lián)網絡技術,一種網絡新技術,依賴網絡中參與者的計算能力和帶寬,而不是把依賴都聚集在較少的幾臺服務器上。P2P網絡通常用于通過Ad

57、Hoc連接來連接節(jié)點。這類網絡可以用于多種用途,各種文件共享軟件已經得到了廣泛的使用。P2P技術也被使用在類似VoIP等實時媒體業(yè)務的數據通信中。P2P還是英文Point to Point (點對點)的簡稱。它是下載術語,意思是在你自己下載的同時,自己的電腦還要繼續(xù)做主機上傳。</p><p>  純點對點網絡沒有客戶端或服務器的概念,只有平等的同級節(jié)點,同時對網絡上的其它節(jié)點充當客戶端和服務器。這種網絡設計模型

58、不同于客戶端-服務器模型,在客戶端-服務器模型中通信通常來往于一個中央服務器。</p><p>  有些網絡(如Napster, OpenNAP, 或IRC @find)的一些功能(比如搜索)使用客戶端-服務器結構,而使用P2P結構來實現另外一些功能。類似Gnutella 或Freenet的網絡則使用純P2P結構來實現全部的任務。</p><p>  一般報章都稱P2P是點對點技術,但其實

59、是錯的,實為解作群對群(Peer-to-Peer)。在虛擬私人網絡VPN (Virtual Private Network)中,也有P2P這個名稱,它才是真正解作點對點(Point-to-Point)。</p><p>  依據中央化程度,P2P可以分為三類:純P2P,雜P2P和混合P2P。</p><p>  純P2P——節(jié)點同時作為客戶端和服務器端,沒有中心服務器,沒有中心路由器。&l

60、t;/p><p>  雜P2P——有一個中心服務器保存節(jié)點的信息并對請求這些信息的要求做出響應;節(jié)點負責發(fā)布這些信息(中心服務器并不保存文件),讓中心服務器知道需要交換的信息,讓節(jié)點下載其需要的資源。</p><p>  混合P2P——介于純P2P和雜P2P之間的。有一定約束,同時含有純P2P和雜P2P的特點。</p><p>  此系統(tǒng)采用了雜P2P架構。當某個Cli

61、ent PC節(jié)點的用戶根據特定需求試圖搜索與某個關鍵字相關文件時,搜索請求會首先發(fā)送給Server,Server負責轉發(fā)給在局域網內具有文件搜索功能的Search PC節(jié)點。Search PC節(jié)點一旦接受到搜索請求,就會立即啟動文件搜索服務,在完全文件搜索之后會將搜索結果集返回給服務器。Server再將搜索結果集封裝成相就應的包,依次返回給發(fā)出搜索請求的Client PC節(jié)點。該節(jié)點接收到搜索結果集后,用戶需要將某些下載或瀏覽某些文件,

62、此時Client PC 就無需通過Server再將文件下載到本地,而是繞過Server直接與文件所在遠程Search PC建立Tcp連接來實現文件傳輸,獲取該文件。由于文件獲取過程與Server無關,因此是屬于雜P2P范疇。</p><p>  圖2.1 系統(tǒng)運行原理圖</p><p><b>  系統(tǒng)實現工具概述</b></p><p> 

63、 有了系統(tǒng)的架構和運行原理,就可以選擇一種合適的編程語言去實現它。C#是微軟公司發(fā)布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言。作為微軟新一代Visual Studio開發(fā)平臺的首選語言,綜合了VB簡單的可視化操作和C++的高運行效率,與COM是直接集成的,具有強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程的支持??梢杂肅#編寫出安全的、穩(wěn)定的、簡單的、優(yōu)雅的程序。因此,選擇了C#作為

64、開發(fā)語言。</p><p>  此系統(tǒng)是典型的多線程應用程序,其服務器結果類似現今相當流行的游戲服務器設計方式,很好的解決了并發(fā)互斥等問題,具有很好的穩(wěn)定性。另一方面,借助于windows search SDK 提供了.NET平臺下的dll庫,在C#下操作windows search API更加方便。</p><p>  微軟公司的Windows Search組件為我們實現本機搜索提供了可

65、能,利用windows search API,我們可以通過編程實現本地文件全文搜索。Windows 7 操作系統(tǒng),更是自帶了Windows Search 服務,這讓我們的系統(tǒng)隨著Windows 7操作系統(tǒng)的普及而容易被兼容。</p><p><b>  相關技術</b></p><p>  在設計階段,局域網絡文件搜索服務器就得設計成為能同時為大量客戶服務,這就要求服

66、務器具有很高的穩(wěn)定性,同時能夠及時響應客戶請求,性能的提高依賴服務器數據處理的每一個環(huán)節(jié),而通信部分位于體系底層,顯得愈為重要。系統(tǒng)資源的分配方式、Socket的管理、I/O模式的選擇、并發(fā)服務以及負載均衡策略等都直接影響到通信的效率,以下將著重討論資源分配技術。</p><p><b>  資源預分配機制</b></p><p><b>  資源分配機制的

67、比較</b></p><p>  服務器在接受大量客戶連接請求的同時,需要頻繁地向系統(tǒng)申請資源,如系統(tǒng)內存申請接收緩沖區(qū)和發(fā)送緩沖區(qū),申請線程處理業(yè)務邏輯,申請I/O對數據收發(fā)進行投遞等。如下圖所示,操作系統(tǒng)在處理應用程序的這些請求時,不斷地創(chuàng)建資源供應用程序使用,在應用程序釋放資源后執(zhí)行銷毀和回收操作。</p><p>  圖2.2 資源“即時創(chuàng)建,即時銷毀”的分配式<

68、/p><p>  這種“即時創(chuàng)建,即時銷毀”的資源分配方式,存在以下缺陷:</p><p>  系統(tǒng)輔助資源的過量消耗。由于服務器長時間運行,頻繁的創(chuàng)建銷毀操作會給系統(tǒng)增加很多額外的資源消耗,如系統(tǒng)需要登記零碎的資源片段。</p><p>  系統(tǒng)的性能下降。創(chuàng)建銷毀操作造成系統(tǒng)資源的巨大開銷,而這些開銷與業(yè)務邏輯無關,導致業(yè)務邏輯的處理相對延遲。</p>

69、<p>  針對這種情況,采用資源預分配機制可以彌補這些缺陷。預先建立一些資源對象中以備使用,當一個客戶訪問一種指定類型的資源時,服務器不是簡單的分配給新的資源而是從池中取得已經實例化的資源對象為它服務,從而實現對象進行復用以提高系統(tǒng)性能。從結構上看,具有容器對象和具體的元素對象。使用方法上看,可以直接取得池中的元素來用,也可以把要做的任務交給它處理。</p><p>  圖2.3 資源預分配技術&l

70、t;/p><p>  預分配機制——池化技術</p><p>  應用池化技術原因:在不使用池化技術的并發(fā)請求環(huán)境中,需要為每個請求重新申請分配資源,如:內存,I/O,等,頻繁申請資源,釋放資源造成系統(tǒng)資源的浪費,而這些資源本身可被多個請求重復使用。為了解決系統(tǒng)資源不必要浪費的問題,引入池化技術,實現資源多次利用,從而提高系統(tǒng)性能,節(jié)約系統(tǒng)資源</p><p><

71、b>  池化技術原理:</b></p><p>  1、池中有空閑隊列與繁忙列表兩個集合,任何池中對象都存儲且僅存儲于其中一個集合。</p><p>  2、在建立池時,可初使化0至多個對象。</p><p>  3、當有請求到來時,就從空閑隊列中彈出一個對象為當前請求服務,若空閑隊列中無空閑對象,則才開始向系統(tǒng)申請分配資源,再將當前被使用的對象存

72、入繁忙列表中。</p><p>  4、當對某個請求的服務結束,就將所擁有的資源對象從繁忙列表中取出,壓入空閑隊列,等待再次利用。</p><p>  注:在向空閑隊列請求釋放資源或向繁忙列表存取資源時,要解決多個請求并發(fā)互斥。</p><p>  池化技術實現:線程池、Socket池、I/O池、Object池</p><p>  在這里僅介

73、紹線程池和Socket池,另外兩個實現類似:</p><p>  線程池:對于多線程編程,在C#中提供了System.Threading 名字空間下的Thread類,通常一次使用一個線程,來創(chuàng)建和刪除線程。然而以這種方式建立和刪除線程是很昂貴的(CPU密集型)。所以CLR內置了一個線程池,供應用程序使用。這個線程池可以通過ThreadPool類訪問。ThreadPool類會在線程的托管池中重用已有的線程。使用完線

74、程后,線程就會返回線程池,供以后使用。ThreadPool有25個可用的線程(每個處理器)。應用線程池最重要的需要考慮的問題:要以最簡單的方式創(chuàng)建和刪除線程;應用程序使用線程的性能要優(yōu)先考慮。相反,如果需要控制所創(chuàng)建線程的優(yōu)先級,希望所使用的線程維護其標識,該標識要與線程一起進行各種操作,經過許多不同時間段,所使用線程壽命較長等情況下就得使用Thread而不是ThreadPool。</p><p>  Socke

75、t池具體實現:見 第四章:系統(tǒng)實現</p><p>  Windows Search 4.0</p><p>  使用Windows Search 4.0可以對計算機執(zhí)行快速搜索。Windows Search 4.0可以幫助查找和預覽計算機上的文檔、電子郵件、音樂文件、照片和其他項目。Windows Search 4.0中的搜索引擎是一項Microsoft Windows服務,可以使用此搜

76、索引擎為程序的內容編制索引;可以使用它獲得即時結果。</p><p>  Windows 桌面搜索非常簡單。它可以通過可擴展性機制將您的所有文檔、文件和電子郵件消息以及提供給它的任何其他數據編入索引。隨著新項目的添加以及對現有項目的修改,它們會重新編入索引。您可以通過 UI 在編入索引的項目中搜索字符串和關鍵字,并使用相關聯(lián)的應用程序打開任何找到的項目。</p><p>  Windows

77、桌面搜索提供一個SDK,它允許其他應用程序使用其索引和搜索功能。使用Windows Search SDK編寫程序,需要在Windows 7下。Windows 7 SDK已經包含了Windows Search 3x SDK。Windows Search 3x SDK的目錄結構如下</p><p>  圖2.4 Windows Search SDK 目錄結構</p><p>  Teleri

78、k RadControls for WinForms </p><p>  Telerik RadControls for WinForms 是一款處于行業(yè)領先地位的.NET程序UI控件,包含了30多個強大的UI和數據控件;包含透明度、比例縮放和旋轉的調節(jié)特性。它提供了全面的UI功能、最完整的UI架構示例、以及最好的在線技術支持。包含Windows Forms 和 ASP.NET兩個方面的服務。使用該UI控件,開

79、發(fā)者能夠容易地實現高級的UI展示,大幅提高應用程序界面的美觀性。</p><p>  使用Telerik RadControls進行開發(fā),具有如下特征:</p><p>  (1) Telerik展示框架 - 利用高級的Telerik展示框架,可以很容易地獲取所需要的控件并編寫代碼。Telerik展示框架(TPF)是RadControls套包中所有控制的基本結構。它為遵循WPF實踐的套包內

80、的控制提供了完整地可定制的結構。支持動畫效果、透明度、輪顯以及尺寸調節(jié)。</p><p>  圖2.5 Telerik 展示框架</p><p>  (2) 完整的控件列表 – 大量的不同控件類型的分類,包括:標準類型(Bar,Button,Label等)和許多組合類型(Chart,GridView,PanelBar等)。</p><p>  圖2.6 各種UI控件

81、</p><p>  (3) 多種風格的設計時支持。控件風格能夠在設計時設定來代替編寫運行時代碼。</p><p>  (4) 主體風格配置文件化。RadControls控件的主題風格是以XML文件形式保存的,更改和獲取控件風格都很方便。</p><p>  (5) 提供完備的支持資料。Telerik RadControls為程序員提供了完備的開發(fā)文檔和使用實例。使

82、用Telerik RadControls開發(fā)相當的方便。</p><p>  圖2.7 Telerik RadControls網站幫助</p><p><b>  本章小節(jié)</b></p><p>  本章主要包含文件搜索引擎,P2P概述,系統(tǒng)實現工具等系統(tǒng)概述,以及資源預分配機制,池化技術,Windows Search 4.0,和Teler

83、ik RadControl等與此系統(tǒng)開發(fā)的相關技</p><p>  首先,介紹了文件搜索引擎的基本組件,如搜索器,索引器,檢索器,用戶接口。概述P2P架構,簡單介紹了目前存在的三種形式:純P2P、雜P2P和混合P2P。針對知識型企業(yè)內部知識共享的處理方法,并提出了我們的解決架構,闡述了此系統(tǒng)運行原理。</p><p>  接著我們描述了系統(tǒng)的實現方法,以C#作為開發(fā)語言,以Windows

84、 Search 4.0為搜索引擎實現文檔在企業(yè)內部局域網的共享。</p><p><b>  系統(tǒng)分析</b></p><p><b>  系統(tǒng)需求</b></p><p>  企業(yè)對于內部文件搜索共享系統(tǒng)的需求</p><p>  在工程企業(yè)或者知識型企業(yè)中,往往需要員工在工作的同時不停對項目或者

85、技術進行學習。在學習的過程中,員工一般會將經過篩選的,有價值的,有意義的文檔、工具保留,在無形中就形成了對于某項目或者技術的知識庫。但是由于隱私和網絡原因,往往他們獲取的有意義的資源無法及時共享或者共享度極低,使得大量的時間重復使用在資源搜集的過程中,而這些資源往往都是可復用的。因此,企業(yè)急需一種資源共享軟件系統(tǒng),既可以有效共享同事間的資源,又有效的屏蔽了互聯(lián)網上無關信息的干擾,提高了搜索準確度。同時,還要求軟件的茁壯性,安全性有很高的

86、保障。</p><p>  基于P2P架構的搜索共享系統(tǒng)的功能需求</p><p>  本系統(tǒng)為企業(yè)局域網用戶提供了一個資源、文件搜索共享的P2P平臺,用戶可以通過系統(tǒng)高效率地進行各種資源的搜索。</p><p><b>  客戶端功能需求</b></p><p>  1.各類型文件的搜索</p><

87、p>  2.本地和遠程的搜索</p><p>  3.搜索后的結果可下載</p><p>  4.提供簡約界面和高級命令搜索功能</p><p>  5.響應搜索請求并返回結果(P2P)</p><p><b>  服務器端功能需求</b></p><p>  1.接收客戶搜索請求并轉發(fā)&l

88、t;/p><p>  2.接收搜索請求返回結果并在數據庫中建立自身索引</p><p>  3.將返回結果發(fā)送至請求端</p><p>  4.在服務器索引內有對應請求的則優(yōu)先返回索引內結果</p><p><b>  系統(tǒng)設計</b></p><p><b>  系統(tǒng)概述</b>

89、;</p><p>  上面我們介紹了企業(yè)級搜索系統(tǒng)的功能需求,了解了系統(tǒng)需要完成的任務。為了更好的更加直觀的讓企業(yè)員工分享企業(yè)里的知識庫,為員工的知識獲取提供支持,我們構建了UI友好的企業(yè)級搜索系統(tǒng)。是以結構化查詢和全文搜索技術結合的方式,為企業(yè)員工提供更加智能、高效、準確的檢索服務和下載服務。</p><p>  搜索系統(tǒng)不但能搜索網頁內容,而且能搜索各種文本、HTML、OFFICE文

90、檔、PDF等文件系統(tǒng),以及散布在企業(yè)各個角落的郵件、圖片等非結構化數據,提供全面的企業(yè)信息搜索應用。</p><p>  系統(tǒng)采用多線程并發(fā)搜索技術,智能分配線程數目,實現多線程并發(fā)搜索,大大提高信息獲取速度。同時,結合分布式技術和Cache緩沖技術,各個節(jié)點上的搜索任務由節(jié)點完成,從而提高信息采集效率。</p><p>  采用相關性算法對文檔進行排序,保證檢索相關性最高的頁面放在最前面

91、。</p><p><b>  系統(tǒng)非功能需求</b></p><p>  1.系統(tǒng)應當同時具有結構化數據檢索以及全文檢索能力</p><p>  2.具有較好的查詢時間性能;</p><p>  3.具有盡可能高的全文檢索召回率與準確率;</p><p>  4.盡量保證用戶期望的查詢結果排在整

92、個結果集的前部;</p><p>  5.能夠通過系統(tǒng)運行中積累的數據自動改善檢索質量和效率;</p><p>  6.具有形式簡潔、容易使用并且高效的查詢條件輸入界面;</p><p>  7.具有便于使用、針對領域特點的查詢語法;</p><p>  8.系統(tǒng)的主要方面應當易于擴展以適應需求變更。</p><p>

93、<b>  總體設計</b></p><p><b>  搜索部分</b></p><p>  系統(tǒng)的總體設計建立在系統(tǒng)的功能需求和非功能需求的基礎上。在整個系統(tǒng)中,提供2種搜索方式:本地搜索和局域網搜索。</p><p>  本地搜索:即檢索本地機器上的文檔,直接調用window search服務,根據用戶輸入的參數信息

94、進搜索</p><p><b>  圖3.1 本地搜索</b></p><p>  由于本地搜索速度最快,搜索方式簡單,對搜索結果的處理等方面都非常容易。需要解決的問題:在對windows search 服務的調用時,必須對用戶進行文檔搜索時的輸入數據進行規(guī)格化。而本地搜索相當于局域網文檔搜索的附加模塊的,對其搜索過程不作過多介紹。</p><p&

95、gt;  局域網文檔搜索:用戶根據需求輸入關鍵字對局域網內的PC進行文檔搜索</p><p><b>  算法思想:</b></p><p>  用戶輸入搜索關鍵字,規(guī)格化后經Client App發(fā)送給Server</p><p>  Server對每個關鍵字進行處理(執(zhí)行搜索、搜索頻度,查找數據庫等)后,輪詢發(fā)送給局域網內具有搜索功能的PC&

96、lt;/p><p>  當搜索完成時,Search PC就將搜索結果封裝成結果項返回給Server</p><p>  Server將搜索結果存儲入數據庫,并發(fā)送給Client</p><p>  Client接收到搜索結果并保存搜索記錄,顯示,完成全部搜索</p><p>  圖3.2 局域文檔搜索</p><p>&l

97、t;b>  文檔下載與瀏覽:</b></p><p>  用戶進行局域網文檔搜索之后,常需獲取或瀏覽其他PC上的文檔,以達到用戶進行搜索的最終目的。在本系統(tǒng)中,無論是獲取文檔還是瀏覽文檔都必然要求提供文件傳輸服務。其中,文件瀏覽需要文件傳輸服務原因在于非本地文件,如果用戶要訪問,不可能直接打開遠程PC上的文件,此時,就得把文件下載到本地PC上,再在臨時文件夾內打開相應文件。</p>

98、<p>  在本系統(tǒng)文件傳服務,基于C/S架構,在文件傳輸請求方,即接收方發(fā)起Tcp連接。文件傳輸響應方,即發(fā)送方要幀聽文件傳輸請求。在文件發(fā)送方,建立文件流,與網絡流,再把文件流接向網絡流,與此同時,在文件的接收方,建立網流與文件流,把網絡流接向文件流。</p><p>  文件傳輸服務繞過Server,Client pc 直接與 Search PC連接 實現文件傳輸。</p><

99、;p><b>  詳細設計</b></p><p>  組件、框架與系統(tǒng)模塊</p><p>  系統(tǒng)由3個邏輯層構成:用戶顯示層,邏輯業(yè)務層,數據訪問層;分為2個模塊:服務器,客戶端;</p><p><b>  邏輯分層:</b></p><p>  UI層(USL):用于接收BLL回送的

100、數據,用戶輸入命令或數據,以及顯示,方便用戶使用整個系統(tǒng)。主要表成WinForm(RadControl)方式,依賴于BLL。</p><p>  邏輯業(yè)務層(BLL): 針對該系統(tǒng)的邏輯實現,對數據層的操作,接收表示層的數據與命令進行業(yè)務邏輯處理。USL,DAL似為積木,那BLL就是對這些積木的搭建。主要表示成應用程序(相關算法,網絡通信,多線程,信息包定制)方式,服務于USL,依賴于DAL。</p>

101、<p>  數據訪問層(DAL):用于接收,提供BLL的數據,其本身不是數據庫,而是對數據的操作和組織管理。主要表示成數據I/O,服務于BLL</p><p><b>  圖3.3 邏輯分層</b></p><p>  模塊劃分:由服務器端與客戶端兩個部分構成</p><p>  服務器:由3個部分構成:1、搜索服務模塊;2、搜索

102、請求模塊;3、搜索狀態(tài)模塊</p><p>  客戶端:由3個部分構成:1、文件搜索服務,對本地文件進行搜索;2、文件傳輸服務,用戶對文件進行下載、瀏覽;3搜索請求服務,發(fā)送用戶的搜索請求和接收來自服務器的搜索結果</p><p><b>  模塊通信</b></p><p>  此系統(tǒng)采用雜P2P結構,Client啟動時提供搜索服務的模塊就主

103、動發(fā)起與服務器的Tcp連接,并且以INF包形式將配置信息發(fā)送給Server,使Server將其識別為Search PC。若用戶搜索局域網內文件的需要,通過Client App將搜索請求封裝成REQ包發(fā)送給Server,與此同時,Server若在resultDB中存在相應的搜索結果,就將所有相關記錄封裝成DBS包發(fā)送給Client,在收到ACK包后完成整個搜索。反之,數據庫中不存在相關記錄,就轉發(fā)REQ包給各個Search PC</

104、p><p>  Search PC完成搜索后,將搜索結果封成RES包返回Server,相應的Server首先發(fā)送參予搜索的Search PC列表,再將RES中的搜索結果寫入數據庫再將RES包轉發(fā)給此次搜索的請求方用戶,直到將所有Search PC上的結果全發(fā)送給Client,接收到ACK包后,完成全部搜索。</p><p>  圖3.4 模塊通信圖</p><p>&l

105、t;b>  本章小結</b></p><p>  本章結合企業(yè)內部文件共享的迫切需求和搜索系統(tǒng)的基本任務,提出了該系統(tǒng)的功能性需求和非功能性需求,并據此介紹了系統(tǒng)的總體設計。然后就系統(tǒng)的架構和C/S信息的交互展開了詳細的分析和總體實現。</p><p>  首先,我們分析了企業(yè)內部資源不能有效共享的現狀,提出了企業(yè)對資源共享軟件系統(tǒng)的需求。</p><

106、p>  其次,我們列舉出了系統(tǒng)的功能性需求。除了實現搜索的基本功能外,應添加其他的配套功能以提供更人性化的服務。</p><p>  然后,介紹了系統(tǒng)的總體設計。包括系統(tǒng)的概述和非功能性需求,系統(tǒng)C/S架構的總體設計??蛻舳税l(fā)出的搜索請求被服務器轉發(fā)到局域網中其他的客戶端,每個客戶端會把本地的搜索結果返回給服務器,再有服務器返回給請求發(fā)出者。整個邏輯清晰明了。</p><p>  最

107、后,論文闡述了系統(tǒng)的詳細設計。我們給出了系統(tǒng)的組件、模塊和框架,介紹了系統(tǒng)總體的一些實現細節(jié),并說明了系統(tǒng)模塊通信。</p><p><b>  系統(tǒng)實現</b></p><p>  根據前幾章的概述和需求分析,以及總體設計和詳細設計,在本章中就應用如第二章提高的相關技術對此系統(tǒng)的具體實現進行完善的說明。這章的系統(tǒng)實現重點和難點都在服務器端。因此,詳細介紹服務器部分的

108、實現,且對客戶端僅作簡介。</p><p><b>  包設計</b></p><p>  數據包是計算機網絡中交換數據時使用的數據的單位。這樣的數據包結構是沒有確定的結構,需要根據網絡編程的特點,自己定義結構。實際上,通過套接字交換的一個個數據片都是數據包。一般,把數據以文件形式保存在硬盤時,采用的方式是分頭和實際數據來保存,數據包也采用類似的格式。以圖像文件格式B

109、MP為例,在文件頭部記錄著圖像的數據的寬,高以及色彩的比特數等信息,而后面的部分才是真正的圖像數據。在網絡編程中的數據包也以同樣的格式構成。</p><p>  在包設計中,通常采用兩種方式:固定長度的包和可變長度的包。固定長度的包往往以結構體方式實現,在交換的數據包種類不太多的情況下,采用結構體定義數據包的方法問題不大,但利用結構體定義數據包的方法的不足之處是,當進行字節(jié)調整時,如果Client的程序和服務器程

110、序用不同的Struct member alignment設置,剛結構體的sizeof值不一樣,不能正確地傳送數據。另外,數據包需要一個一個都用結構體定義也是一個不足。因此,一般不采用利用結構體的固定數據包,而是采用長度可變的數據包格式。</p><p><b>  總體格式:</b></p><p>  系統(tǒng)建立局域網絡文件搜索必然需要對數據定制數據包進行Client

111、與Server, Server與Search PC, Client與Client之間的通信。此系統(tǒng)根據搜索請求,PC信息,搜索結果等這些數據的封裝需要,總體上制了三類數據包:信息包,控制包,狀態(tài)包。</p><p>  以上三種包的具體作用如下:</p><p>  信息包:用于封裝各種主體數據,它是此系統(tǒng)中各模塊交互和實現具體功能真正的數據流實體,起著主體作用。</p>&

112、lt;p>  控制包:用于封裝Client與server之間以信息包進行通信時,所需對通信時序、流程、交互過程進行控制的數據包。</p><p>  狀態(tài)包:用于封裝具體PC的配置信息的數據包。</p><p>  包類型:機器列表包(ALS),數據庫訪問包(DBS),搜索請求包(REQ),應答包(ACK),Search PC配置包(INF),文件名包(DLD),搜索結果包(RES)

113、,錯誤包(ERR)</p><p><b>  狀態(tài)包</b></p><p><b>  INF:</b></p><p>  目的:由提供搜索服務的PC,在與服務器的Search PC管理模塊成功建立Socket連接后,發(fā)送本地PC的配置信息(PC名,IP等)。</p><p><b>

溫馨提示

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

評論

0/150

提交評論