企業(yè)即時(shí)通信系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn) 軟件工程專業(yè)_第1頁
企業(yè)即時(shí)通信系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn) 軟件工程專業(yè)_第2頁
企業(yè)即時(shí)通信系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn) 軟件工程專業(yè)_第3頁
企業(yè)即時(shí)通信系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn) 軟件工程專業(yè)_第4頁
企業(yè)即時(shí)通信系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn) 軟件工程專業(yè)_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

企業(yè)即時(shí)通信系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)軟件工程專業(yè)TheEnterpriseInstantMessaging摘要隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,網(wǎng)絡(luò)已經(jīng)成為人們獲取信息,交流信息以及管理信息的重要途徑。其中即時(shí)通信的出現(xiàn)無疑是網(wǎng)絡(luò)通信領(lǐng)域的一場(chǎng)革命,他使人們能夠隨時(shí)隨地的同任何地方的人進(jìn)行快捷的交流。如今,網(wǎng)絡(luò)即時(shí)通信已經(jīng)逐步發(fā)展成為應(yīng)用于各行各業(yè)的信息交流工具。本論文通過設(shè)計(jì)和實(shí)現(xiàn)一款集即時(shí)通信與內(nèi)部組織管理于一體的企業(yè)內(nèi)部即時(shí)通信系統(tǒng),討論并分析在TCP/IP協(xié)議的基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)一個(gè)C/S結(jié)構(gòu)的即時(shí)通信系統(tǒng)的詳細(xì)過程。首先,介紹即時(shí)通信系統(tǒng)的現(xiàn)狀,其次,分析和設(shè)計(jì)客戶端與服務(wù)器端之間的通信協(xié)議,為上層的數(shù)據(jù)包交換以及系統(tǒng)功能實(shí)現(xiàn)模塊提供規(guī)范的數(shù)據(jù)交流格式。然后,對(duì)系統(tǒng)中最重要的部分即數(shù)據(jù)包模塊,進(jìn)行詳細(xì)的設(shè)計(jì)說明以及實(shí)現(xiàn)方案的闡述,最后,描述即時(shí)通信系統(tǒng)整體的系統(tǒng)功能的邏輯處理流程,以及實(shí)現(xiàn)過程。在當(dāng)前這個(gè)信息時(shí)代,由于企業(yè)即時(shí)通信系統(tǒng)為公司提供的便捷的員工交流方式以及規(guī)范的公司組織管理功能,所以即時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)在各行各業(yè)中具有非常廣泛的應(yīng)用前景。關(guān)鍵詞:即時(shí)通信企業(yè)應(yīng)用程序TCP/IPC/S

目錄摘要 表3.1所示。ParamCount屬性對(duì)應(yīng)于數(shù)據(jù)包包頭中的參數(shù)個(gè)數(shù),用于解析后續(xù)包體中的各個(gè)參數(shù),值可以為0-n。Param0至Param(n-1)對(duì)應(yīng)于數(shù)據(jù)包的包體,里面依次為操作所需的n個(gè)參數(shù)。由于數(shù)據(jù)交換中數(shù)據(jù)種類繁多,在本論文無法將全部定義一一列出,這里僅通過登陸驗(yàn)證的協(xié)議數(shù)據(jù)包定義來闡釋數(shù)據(jù)包具體的定義方式,其他操作相關(guān)的數(shù)據(jù)包包體定義與之類似。客戶端連接到服務(wù)端后將用戶名密碼發(fā)送至服務(wù)端進(jìn)行驗(yàn)證,而服務(wù)端則將驗(yàn)證結(jié)果返回給客戶端。下面介紹在代碼中如何實(shí)現(xiàn)定義請(qǐng)求包和應(yīng)答包。登錄驗(yàn)證請(qǐng)求包的定義:<protocol><ActionName="Verify" //操作標(biāo)識(shí),表示要進(jìn)行驗(yàn)證ParamCount="2" //參數(shù)個(gè)數(shù),表示兩個(gè)參數(shù)Param0="賬號(hào)" //參數(shù)一Param1="密碼"/> //參數(shù)二</protocol>其中Name="Verify"ParamCount="2"對(duì)應(yīng)于與包頭,Name的屬性為Verify標(biāo)識(shí)要進(jìn)行的操作為驗(yàn)證密碼,而ParamCount的屬性為2則標(biāo)識(shí)后面跟有兩個(gè)參數(shù)。Param0="賬號(hào)"Param1="密碼"對(duì)應(yīng)于包體,分別為第一個(gè)參數(shù)和第二個(gè)參數(shù)登錄驗(yàn)證應(yīng)答包的定義:<protocol><ActionName="VerifyResult" //操作標(biāo)識(shí),表示返回驗(yàn)證結(jié)果ParamCount="1" //參數(shù)個(gè)數(shù),表示有一個(gè)參數(shù)Param0="結(jié)果"/> //參數(shù)一</protocol>其中Name="VerifyResult"ParamCount="1"對(duì)應(yīng)于包頭,Name的屬性為VerifyResult標(biāo)識(shí)返回的是驗(yàn)證結(jié)果,而ParamCount的屬性為1則標(biāo)識(shí)后面跟有一個(gè)參數(shù)。Param0="結(jié)果"對(duì)應(yīng)于包體,標(biāo)識(shí)驗(yàn)證結(jié)果,如果是1標(biāo)識(shí)驗(yàn)證成功,如果是0則標(biāo)識(shí)驗(yàn)證失敗。表3.SEQ表\*ARABIC\s11操作標(biāo)識(shí)以及對(duì)應(yīng)的描述標(biāo)識(shí)名傳輸方向描述Verify客服端到服務(wù)端客戶端向服務(wù)端發(fā)起認(rèn)證,參數(shù)包括賬號(hào)、密碼VerifyResult服務(wù)端到客戶端服務(wù)端向客戶端返回認(rèn)證結(jié)果,參數(shù)包括認(rèn)證結(jié)果,0代表失敗,1代表成功ClientInfo客服端到客戶端客戶端向服務(wù)端發(fā)送本機(jī)信息,參數(shù)包括監(jiān)聽的端口號(hào)Department服務(wù)端到客戶端服務(wù)端向客戶端傳輸部門信息,參數(shù)包括部門編號(hào)以及部門名稱標(biāo)識(shí)名傳輸方向描述Msg客服端到客戶端客戶端向其它客戶端發(fā)送聊天消息,參數(shù)包括用戶ID以及消息內(nèi)容TextForm客服端到客戶端客戶端向其它客戶端發(fā)送聊天所用的字體信息,參數(shù)包括字體、字號(hào)、顏色SendFile客服端到客戶端客戶端向其它客戶端發(fā)起文件傳輸請(qǐng)求,參數(shù)包括文件名、文件大小、傳輸文件所用的端口號(hào)GetGroupList客服端到服務(wù)端客戶端向服務(wù)端發(fā)起請(qǐng)求,獲取自己的群組列表GetGroupMember客服端到服務(wù)端客戶端向服務(wù)端發(fā)起請(qǐng)求,獲取群組成員,參數(shù)包括群組IDCreateGroup客服端到服務(wù)端客戶端向服務(wù)器發(fā)起創(chuàng)建群組請(qǐng)求,參數(shù)包括群組名稱、群組描述、所邀請(qǐng)的群組成員等GroupMsg客服端到服務(wù)端客戶端發(fā)送的群組消息,有服務(wù)端進(jìn)行轉(zhuǎn)發(fā),參數(shù)包括發(fā)送者ID、字體、字號(hào)、字體大小、消息內(nèi)容InviteGroupMember客服端到服務(wù)端客戶端向服務(wù)器發(fā)送邀請(qǐng)其他員工加入群組請(qǐng)求,參數(shù)包括群組ID、以及邀請(qǐng)的人員列表RemoveGroupMember客服端到服務(wù)端群組創(chuàng)建者向服務(wù)端發(fā)送移除群組成員請(qǐng)求,參數(shù)包括群組ID、要移除的群組成員IDQuitGroup客服端到服務(wù)端群組成員向服務(wù)端發(fā)送退出群組請(qǐng)求,參數(shù)包括要退出的群組IDDestoryGroup客服端到服務(wù)端服務(wù)端到客戶端群組創(chuàng)建者向服務(wù)端發(fā)送解散群組請(qǐng)求,服務(wù)端向群組成員發(fā)送群組解散通知,參數(shù)包括群組ID標(biāo)識(shí)名傳輸方向描述UpdateGroupStatus客服端到服務(wù)端服務(wù)端到客戶端群組創(chuàng)建者向服務(wù)端發(fā)送群組說明更新通知,服務(wù)端向群組成員發(fā)送群組說明更新通知,參數(shù)包括群組ID、群組說明UpLoadFile客服端到服務(wù)端群組成員向服務(wù)端發(fā)送上傳共享文件請(qǐng)求,參數(shù)包括群組ID、文件名、文件大小、傳輸文件所用的端口號(hào)DownLoadFile客服端到服務(wù)端群組成員向服務(wù)端發(fā)送下載共享文件請(qǐng)求,參數(shù)包括群組ID、文件名、傳輸文件所用的端口號(hào)GetGroupFile客服端到服務(wù)端群組成員向服務(wù)端發(fā)送獲取群共享文件列表請(qǐng)求,參數(shù)包括群組IDDeleteGroupFile客服端到服務(wù)端創(chuàng)建者通知服務(wù)端刪除群共享文件,參數(shù)包括群ID、要?jiǎng)h除的文件名Comment客服端到服務(wù)端服務(wù)端到客戶端客戶端向服務(wù)端傳輸發(fā)布的評(píng)論,服務(wù)端向客戶端發(fā)送員工對(duì)某一公告的評(píng)論。參數(shù)包括公告ID、發(fā)布者ID、評(píng)論內(nèi)容IssueAnnounce客服端到服務(wù)端客戶端向服務(wù)端發(fā)送發(fā)布公告請(qǐng)求,參數(shù)包括公告內(nèi)容GetAnnounce客服端到服務(wù)端客戶端向服務(wù)端發(fā)送獲取公告請(qǐng)求DeleteAnnounce客服端到服務(wù)端客戶端向服務(wù)端發(fā)送刪除公告請(qǐng)求,參數(shù)包括要?jiǎng)h除的公告IDGetComment客服端到服務(wù)端客戶端向服務(wù)端發(fā)送獲取公告評(píng)論請(qǐng)求,參數(shù)包括要獲取評(píng)論的公告IDStaff服務(wù)端到客戶端服務(wù)端向客戶端發(fā)送員工基本信息,參數(shù)包括員工ID、昵稱、性別、在線狀態(tài)等StaffEndpoint服務(wù)端到客戶端服務(wù)端通知在線用戶員工上線信息,包括上線員工的ID、IP、通信所需的端口號(hào)DropLine服務(wù)端到客戶端服務(wù)端通知在線用戶員工下線信息標(biāo)識(shí)名傳輸方向描述BeKickedOut服務(wù)端到客戶端服務(wù)端通知用戶被移出群組信息,包括群組IDAnnounceMent服務(wù)端到客戶端服務(wù)端向客戶端發(fā)送公司公告,參數(shù)包括發(fā)布者ID、時(shí)間、公告內(nèi)容GroupFile服務(wù)端到客戶端服務(wù)端向群組成員發(fā)送群共享文件列表,參數(shù)包括群組ID、文件名、文件大小本節(jié)小結(jié)本節(jié)主要介紹了本系統(tǒng)客戶端與客戶端之間、客戶端與服務(wù)端之間的數(shù)據(jù)傳輸辦法,詳細(xì)設(shè)計(jì)出了數(shù)據(jù)在網(wǎng)絡(luò)上傳輸?shù)耐ㄐ艆f(xié)議。并詳細(xì)講解的通信協(xié)議數(shù)據(jù)包結(jié)構(gòu)在實(shí)現(xiàn)中的定義。數(shù)據(jù)包傳輸模塊的設(shè)計(jì)與實(shí)現(xiàn)本模塊在整個(gè)系統(tǒng)設(shè)計(jì)中是非常重要的一個(gè)模塊,在企業(yè)即時(shí)通信系統(tǒng)中,所有功能的實(shí)現(xiàn)都必須依賴客戶端與服務(wù)端以及客戶端與客戶端的數(shù)據(jù)交換。而能否可靠、快速的進(jìn)行數(shù)據(jù)交換直接決定了其它后續(xù)業(yè)務(wù)處理模塊的正常運(yùn)行,而本模塊就承擔(dān)了數(shù)據(jù)包交換這個(gè)關(guān)鍵任務(wù),它確保其它模塊要處理的數(shù)據(jù)是一個(gè)個(gè)完整的數(shù)據(jù)包,此模塊成功實(shí)現(xiàn)后,其它模塊將完全從繁瑣的數(shù)據(jù)包交換中解放出來,將可以完全關(guān)注于與用戶的交互以及其它業(yè)務(wù)的實(shí)現(xiàn)。套接字的模型選擇和多線程的運(yùn)用套接字I/O模型選擇在利用SOCKET進(jìn)行編程時(shí),有以下幾個(gè)概念需要了解,同步、異步、阻塞、非阻塞方敏、張彤,網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì),西安電子科技大學(xué)出版社,2005;。方敏、張彤,網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì),西安電子科技大學(xué)出版社,2005;同步方式通信的同步是指客戶端在發(fā)送請(qǐng)求后,需要在得到服務(wù)端的回應(yīng)后才可以發(fā)送下次請(qǐng)求。異步方式與同步方式相反,在異步方式下,客戶端再發(fā)送請(qǐng)求后,不必等待服務(wù)端做出回應(yīng)即可以發(fā)送下次請(qǐng)求。阻塞阻塞套接字是指在調(diào)用某一套接字的網(wǎng)絡(luò)調(diào)用時(shí),如讀取數(shù)據(jù)、寫入數(shù)據(jù)等,所調(diào)用的函數(shù)只有在得到結(jié)果后才會(huì)返回,在得到調(diào)用結(jié)果前,該調(diào)用所在的線程會(huì)掛起,該套接字會(huì)阻塞在該網(wǎng)絡(luò)調(diào)用上,直到有數(shù)據(jù)到來或操作完成。非阻塞同樣,與阻塞套接字不同的是,非阻塞套接字在進(jìn)行某一網(wǎng)絡(luò)調(diào)用時(shí),不論調(diào)用能否立刻完成,它都會(huì)直接返回,因此對(duì)非阻塞套接字的網(wǎng)絡(luò)調(diào)用不會(huì)將線程掛起。在本系統(tǒng)開發(fā)中,如果采用一般的同步阻塞套接字,當(dāng)在發(fā)起一個(gè)不能立刻完成的網(wǎng)絡(luò)調(diào)用時(shí),由于阻塞套接字的特性,會(huì)將發(fā)起套接字網(wǎng)絡(luò)調(diào)用的線程掛起,直接的結(jié)果就是導(dǎo)致UI主線程掛起,最后導(dǎo)致這個(gè)應(yīng)用程序阻塞,界面無響應(yīng)。所以本系統(tǒng)開發(fā)中采用了異步非阻塞套接字。而在用C#進(jìn)行網(wǎng)絡(luò)編程張立,C#2.0完全自學(xué)手冊(cè),機(jī)械工業(yè)出版社,2007;時(shí),由于.NetFrameworkSDK對(duì)阻塞和非阻塞套接字機(jī)制的封裝,其中TcpClient、UdpClien中的BeginRead、BeginWrite等方法對(duì)套接字的非阻塞操作提供了很好地支持,因此我們直接采用System.Net命名空間System.Net.Sockets命名空間下的TcpListener、TcpClient、UdpClient等進(jìn)行代碼編寫。張立,C#2.0完全自學(xué)手冊(cè),機(jī)械工業(yè)出版社,2007;多線程技術(shù)的運(yùn)用正如人可以同時(shí)思考、聽歌、走路,汽車可以同時(shí)轉(zhuǎn)彎、播放音樂、加速一樣,計(jì)算機(jī)也可以同時(shí)進(jìn)行許多工作,這就是多線程的思想。多線程的好處是能使多個(gè)線程在應(yīng)用程序中同時(shí)運(yùn)行,這樣就可以使多個(gè)工作并發(fā)的進(jìn)行,大大的提高了程序處理數(shù)據(jù)的速度。例如在進(jìn)行數(shù)據(jù)交換時(shí),如果數(shù)據(jù)交換比較耗時(shí),那就可以開啟一個(gè)線程在后臺(tái)專門負(fù)責(zé)數(shù)據(jù)交換,而這時(shí)候主線程還可以同時(shí)響應(yīng)用戶的其它操作,這樣也大大的提高了響應(yīng)速度。綜上所述,本系統(tǒng)在開發(fā)時(shí)充分的利用了多線程的諸多優(yōu)點(diǎn),對(duì)各種耗時(shí)操作都放在了單獨(dú)的線程中進(jìn)行處理。例如在進(jìn)行文件傳輸時(shí),由于文件傳輸是個(gè)非常耗時(shí)的工作,于是專門開啟一個(gè)線程進(jìn)行文件傳輸。這樣即可以使用戶在文件傳輸時(shí)進(jìn)行其它操作,例如聊天、發(fā)布公告、評(píng)論公告等,又可以避免在文件傳輸時(shí)將主線程阻塞導(dǎo)致界面無響應(yīng),程序崩潰。在C#下進(jìn)行多線程開發(fā)[美]WroxPressInc,C#高級(jí)編程(第三版),清華大學(xué)出版社;時(shí),在.Net的基礎(chǔ)類庫的System.Threading命名空間中,提供了大量的類和接口支持多線程程序設(shè)計(jì)所需要實(shí)現(xiàn)的功能,包括線程的創(chuàng)建、停止、同步等。在本系統(tǒng)開發(fā)中就用System.Threading命名空間中的類進(jìn)行多線程程序開發(fā)。[美]WroxPressInc,C#高級(jí)編程(第三版),清華大學(xué)出版社;數(shù)據(jù)包傳輸模塊的設(shè)計(jì)數(shù)據(jù)包傳輸面臨的一些問題在使用TCP/IP協(xié)議羅軍舟,TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù),清華大學(xué)出版社,2004;的套接字編程的非阻塞操作中,當(dāng)你發(fā)起一個(gè)BeginRead調(diào)用時(shí),調(diào)用函數(shù)會(huì)直接返回,當(dāng)異步調(diào)用完成時(shí),會(huì)通知你設(shè)好的回調(diào)函數(shù)進(jìn)行處理。當(dāng)你的回調(diào)函數(shù)從緩沖區(qū)讀取數(shù)據(jù)進(jìn)行處理時(shí)就會(huì)遇到一個(gè)問題,如果對(duì)方多次數(shù)據(jù)包發(fā)送時(shí)間非常接近,在你讀取數(shù)據(jù)包時(shí)數(shù)據(jù)緩沖區(qū)中就會(huì)存在多個(gè)數(shù)據(jù)包,而由于不同的數(shù)據(jù)包長(zhǎng)度不一樣,當(dāng)你讀取時(shí)你就無法準(zhǔn)確的讀取一個(gè)數(shù)據(jù)包,你有可能讀取多個(gè)數(shù)據(jù)包或者讀取到不完整的數(shù)據(jù)包,這時(shí)候就需要某種機(jī)制來確保能夠?qū)⒕彌_區(qū)中的數(shù)據(jù)解析成一條條完整的協(xié)議。羅軍舟,TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù),清華大學(xué)出版社,2004;數(shù)據(jù)包緩沖區(qū)的設(shè)計(jì)與實(shí)現(xiàn)為了能夠正確的進(jìn)行通信,并且解決上一節(jié)提到的問題,將數(shù)據(jù)包緩沖區(qū)設(shè)計(jì)如下,在系統(tǒng)中創(chuàng)建一個(gè)數(shù)據(jù)緩沖區(qū)存儲(chǔ)將要發(fā)送的數(shù)據(jù)或者接收到的數(shù)據(jù),在緩沖區(qū)中所以數(shù)據(jù)以字節(jié)流的形式存儲(chǔ)。數(shù)據(jù)緩沖區(qū)的大小為1025,其中前1024字節(jié)存儲(chǔ)數(shù)據(jù),第1025字節(jié)存儲(chǔ)緩沖區(qū)中原有數(shù)據(jù)長(zhǎng)度。每次收到數(shù)據(jù)后調(diào)用ProtocolHelper的GetActualString方法從數(shù)據(jù)包緩沖區(qū)中解析得到協(xié)議數(shù)組,并將剩余的數(shù)據(jù)保存在數(shù)據(jù)包緩沖區(qū)中。在ProtocolHelper的GetActualString中用到了一些C#對(duì)于正則表達(dá)式30分鐘學(xué)習(xí)正則表達(dá)式,/tutorials/regex/regex.htm30分鐘學(xué)習(xí)正則表達(dá)式,/tutorials/regex/regex.htm數(shù)據(jù)包傳輸模塊的實(shí)現(xiàn)客戶端與服務(wù)端的數(shù)據(jù)包傳輸對(duì)于客戶端與服務(wù)端的通信,客戶端啟動(dòng)后先調(diào)用StartClient方法做一些初始化,然后在StartClient方法中投送一個(gè)異步接受操作(BeginRead),異步操作直接返回,在異步接受操作完成后,會(huì)調(diào)用OnStreamToServerReadComplete方法,在OnStreamToServerReadComplete中,先調(diào)用ProtocolHelper的GetActualString方法對(duì)數(shù)據(jù)包緩沖區(qū)中的數(shù)據(jù)進(jìn)行解析。解析完畢后繼續(xù)投送下一次異步接受操作(BeginRead),然后再將解析得到的每個(gè)數(shù)據(jù)包委托給主線程進(jìn)行處理,處理過程在主線程的HandleServerProtocol方法中。圖3.2描述了客戶端與服務(wù)端通信模塊的工作流程。 初始化初始化嘗試連接服務(wù)器獲取錯(cuò)誤信息,向業(yè)務(wù)邏輯層反饋開始監(jiān)聽網(wǎng)絡(luò)事件(BeginRead)調(diào)用讀響應(yīng)事件(OnStreamToServerReadComplete)將消息重新封裝,交給業(yè)務(wù)邏輯層進(jìn)行處理。(HandleServerProtocol)調(diào)用連接斷開響應(yīng)事件連接失敗有數(shù)據(jù)發(fā)來與服務(wù)器斷開連接圖3.2客戶端與服務(wù)端通信模塊的工作流程其中讀響應(yīng)事件的具體工作流程則需要更詳細(xì)的說明,下面結(jié)合圖3.3進(jìn)行具體的講解。在讀響應(yīng)事件中,在通過ProtocolHelper的GetActualString得到一個(gè)個(gè)完整的數(shù)據(jù)包后,會(huì)根據(jù)包頭中的信息,將包體中的信息進(jìn)行預(yù)處理,然后將預(yù)處理得到的信息(要進(jìn)行的操作、參數(shù))重新封裝以便于交給業(yè)務(wù)邏輯層進(jìn)行處理。進(jìn)入讀響應(yīng)事件進(jìn)入讀響應(yīng)事件讀取緩沖區(qū)中的數(shù)據(jù)數(shù)據(jù)是否完整否對(duì)數(shù)據(jù)重新封裝(ProtocolHelper)是調(diào)用數(shù)據(jù)處理函數(shù)圖3.3讀響應(yīng)事件工作流程客戶端與客戶端的數(shù)據(jù)包傳輸對(duì)于客戶端于客戶端的通信,客戶端于客戶端的通信采用UDP協(xié)議,客戶端啟動(dòng)后,首先調(diào)用StartClient方法,在StartClient方法中同樣先投送一個(gè)異步接受操作(BeginReceive),在異步接受操作完成后,會(huì)調(diào)用UDPRecvCallBack方法,由于在使用UDP通信的套接字中不會(huì)出現(xiàn)多個(gè)數(shù)據(jù)包疊加在一起的情況,所以在UDPRecvCallBack對(duì)收到的數(shù)據(jù)包進(jìn)行處理時(shí),直接開啟新線程進(jìn)行處理,并投送下一次異步接受操作。線程對(duì)數(shù)據(jù)包的處理工程在HandleClientProtocol方法中。圖3.4描述了客戶端與客戶端通信模塊的工作流程。初始化監(jiān)聽網(wǎng)絡(luò)事件初始化監(jiān)聽網(wǎng)絡(luò)事件(BeginReceive)調(diào)用讀響應(yīng)事件(UDPRecvCallBack)有數(shù)據(jù)到來將消息重新封裝,交給業(yè)務(wù)邏輯層處理。(HandleClientProtocol)調(diào)用客戶端退出響應(yīng)事件客戶端退出本節(jié)小結(jié)本節(jié)詳細(xì)講解了數(shù)據(jù)包傳輸模塊的設(shè)計(jì)與編碼實(shí)現(xiàn),本模塊的實(shí)現(xiàn)為其它模塊提供了可靠、快捷的數(shù)據(jù)包傳輸保障。第四章業(yè)務(wù)邏輯模塊引言本章節(jié)主要講解系統(tǒng)功能的詳細(xì)實(shí)現(xiàn),本章節(jié)的內(nèi)容是整個(gè)系統(tǒng)開發(fā)中編碼最為繁瑣、耗時(shí)最長(zhǎng)的一部分。評(píng)價(jià)一個(gè)即時(shí)聊天系統(tǒng)是否成功,最終還是要看用戶的體驗(yàn)、評(píng)價(jià),而決定用戶對(duì)一個(gè)軟件評(píng)價(jià)好壞的往往取決于軟件提供的功能以及功能實(shí)現(xiàn)的好壞,所以本章節(jié)任務(wù)完成的好壞最終決定了本系統(tǒng)的成敗。接下來結(jié)合系統(tǒng)流程圖[美]MartinFowler,UML精粹(第三版),清華大學(xué)出版社;[美]JonesBL,21天學(xué)通C#,人民郵電出版社,2002.3;金華、華進(jìn),C#網(wǎng)絡(luò)編程技術(shù)教程,2006;[美]MartinFowler,UML精粹(第三版),清華大學(xué)出版社;[美]JonesBL,21天學(xué)通C#,人民郵電出版社,2002.3;金華、華進(jìn),C#網(wǎng)絡(luò)編程技術(shù)教程,2006;圖4.SEQ圖\*ARABIC\s11企業(yè)即時(shí)通信系統(tǒng)客戶端操作流程圖接下來將用一章節(jié)的內(nèi)容詳細(xì)講解系統(tǒng)功能一步步的實(shí)現(xiàn),依次為登陸模塊、主界面、點(diǎn)對(duì)點(diǎn)通信、群組會(huì)議、組織結(jié)構(gòu)查看、日常公告管理、工作郵件。登陸登陸模塊包含兩個(gè)功能,登陸設(shè)置以及登陸認(rèn)證。登陸模塊的工作流程如圖4.2所示。系統(tǒng)根據(jù)用戶不同的選擇調(diào)用不同的模塊進(jìn)行處理。登陸設(shè)置功能描述客戶端要連接服務(wù)端進(jìn)行登錄首先就需要知道服務(wù)端的IP地址設(shè)置以及服務(wù)圖4.2登陸模塊流程圖端監(jiān)聽的端口號(hào),而這個(gè)模塊就是對(duì)這些參數(shù)進(jìn)行設(shè)置。參數(shù)有服務(wù)器IP地址、服務(wù)器監(jiān)聽的端口號(hào)。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.3所示。圖4.3登陸設(shè)置界面設(shè)計(jì)業(yè)務(wù)處理流程啟動(dòng)時(shí)先從server.xml配置文件中讀取保存的服務(wù)器配置。如要更改服務(wù)器配置,在地址欄輸入服務(wù)器地址,端口欄輸入服務(wù)器監(jiān)聽的端口號(hào),點(diǎn)擊確定后將新的服務(wù)器配置寫入server.xml配置文件中。登陸功能描述此模塊最主要的功能就是將用戶名和密碼發(fā)送至服務(wù)器進(jìn)行驗(yàn)證,根據(jù)服務(wù)器發(fā)回的驗(yàn)證結(jié)果作出不同反應(yīng)。如果驗(yàn)證成功則顯示主界面,如果驗(yàn)證失敗則提示用戶驗(yàn)證失敗。為了方便用戶操作,提高用戶體驗(yàn),此模塊加入了其它一些功能,例如記住密碼以及自動(dòng)登錄功能。用戶使用記住密碼功能后,系統(tǒng)會(huì)將用戶賬號(hào)和用戶密碼進(jìn)行保存,每次系統(tǒng)啟動(dòng),系統(tǒng)會(huì)將用戶上次使用的賬號(hào)和密碼自動(dòng)填充,這樣就免去了每次登錄輸入密碼的煩惱。用戶使用自動(dòng)登錄功能后,系統(tǒng)啟動(dòng)后會(huì)自動(dòng)使用用戶上次登錄的賬號(hào)連接服務(wù)器進(jìn)行驗(yàn)證。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.4所示。圖4.4登陸功能界面設(shè)計(jì)業(yè)務(wù)處理流程系統(tǒng)啟動(dòng)后先從config.xml配置文件中讀取用戶配置,然后根據(jù)用戶的不同配置做不同的初始化工作,例如用戶選擇了記住密碼功能,那么系統(tǒng)會(huì)從配置文件中讀取用戶上次的賬號(hào)信息并將信息填充在界面上。用戶點(diǎn)擊登陸后先檢查賬號(hào)和密碼是否已經(jīng)輸入。如果已經(jīng)輸入則從server.xml配置文件讀取服務(wù)器配置,開始連接服務(wù)器,連接服務(wù)器成功后將用戶名和密碼發(fā)送過去就行驗(yàn)證,數(shù)據(jù)發(fā)送格式為:<protocol><ActionName="Verify"ParamCount="2"Param0="賬號(hào)"Param1="密碼"/></protocol>。服務(wù)器返回驗(yàn)證結(jié)果后,工具驗(yàn)證是否成功做不同處理,服務(wù)器返回的驗(yàn)證結(jié)果的數(shù)據(jù)格式為:<protocol><ActionName="VerifyResult"ParamCount="1"Param0="結(jié)果"/></protocol>。如果成功則顯示主界面,失敗則提示用戶驗(yàn)證失敗。登陸功能序列圖如圖4.5所示。圖4.5登陸序列圖主界面組織結(jié)構(gòu)功能描述此功能模塊最主要的工作就是將服務(wù)器返回的組織結(jié)構(gòu)信息只是給用戶,它能夠使用戶方便快捷的了解公司的組織結(jié)構(gòu),公司員工通過此模塊不僅可以清楚地了解公司有哪些部門,而且還可以知道每個(gè)部門的人員配置。另外此功能模塊還附加一些其他的便捷功能,比如用戶雙擊列表中的任一員工就可以打開與此公司員工的聊天窗口,雙擊列表中自己的節(jié)點(diǎn)就可以打開個(gè)人信息設(shè)置頁面,員工根據(jù)其他員工的頭像就可以判斷其他員工是否在線。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.6所示。圖4.6組織結(jié)構(gòu)業(yè)務(wù)處理流程展示組織結(jié)構(gòu)信息從服務(wù)器收到組織信息后根據(jù)不同信息向組織結(jié)構(gòu)樹形控件中添加節(jié)點(diǎn),如果返回部門信息則直接添加節(jié)點(diǎn),如果返回員工信息,則根據(jù)員工所屬部門找到部門節(jié)點(diǎn)后添加節(jié)點(diǎn)。服務(wù)器返回的組織信息結(jié)構(gòu)數(shù)據(jù)格式如下:部門信息:<protocol><ActionName="DepartMent"ParamCount="2"Param0="部門ID"Param1="部門名稱"/></protocol>。員工信息:<protocol><ActionName="Staff"ParamCount="6"Param0="賬號(hào)"Param1="昵稱"Param2="性別"Param3="年齡"Param4="狀態(tài)"Param5="部門ID"/></protocol>。打開與員工的回話窗口用戶雙擊節(jié)點(diǎn)后,獲取用戶雙擊的節(jié)點(diǎn)信息,判斷雙擊的節(jié)點(diǎn)是員工還是部門。如果使員工則先在MyContext中的m_ChatFormTable表中查詢是否已經(jīng)打開聊天對(duì)話框,如果未打開則根據(jù)節(jié)點(diǎn)信息創(chuàng)建新的聊天對(duì)話框顯示,并將對(duì)話框添加到MyContext中的m_ChatFormTable表中。群組列表功能描述將服務(wù)器返回的群組列表展示給用戶,用戶雙擊任一群組節(jié)點(diǎn)可以打開群組回話框,此處還提供其它群組操作,包括創(chuàng)建群組、查看群組信息、解散群組、退出群組、刷新群組列表。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.7所示。圖4.7群組列表業(yè)務(wù)處理流程展示群組列表服務(wù)器返回群組列表信息后,將群組信息添加到群組列表。服務(wù)器返回的群組信息數(shù)據(jù)格式如下:<protocol><ActionName="GroupInfo"ParamCount="4"Param0="群ID"Param1="群名稱"Param2="群組說明"Param3="群組創(chuàng)建ID"/></protocol>。打開群組回話框用戶雙擊群組列表后,獲取雙擊的群組節(jié)點(diǎn)信息,在查找群組會(huì)話框是否已經(jīng)在MyContext中的m_GroupFormTable表中,如果不在則根據(jù)群組信息創(chuàng)建新的群組會(huì)話框顯示,并將群組會(huì)話框添加到MyContext中的m_GroupFormTable表中。創(chuàng)建群組用戶點(diǎn)擊創(chuàng)建按鈕后,彈出創(chuàng)建群組對(duì)話框,創(chuàng)建群組的處理過程由創(chuàng)建群組對(duì)話框處理。其它根據(jù)用戶是否為所點(diǎn)擊的群組的創(chuàng)建者彈出不同菜單,然后根據(jù)用戶的選擇向服務(wù)器發(fā)送不同信息,如退出群組或者解散群組。退出群組或解散群組的數(shù)據(jù)格式如下:退出群組:<protocol><ActionName="QuitGroup"ParamCount="1"Param0="群ID""/></protocol>。解散群組:<protocol><ActionName="DestoryGroup"ParamCount="1"Param0="群ID""/></protocol>。公告列表功能描述將服務(wù)器返回的公司公告展示給用戶,用戶雙擊任一公告可以打開對(duì)于公告的評(píng)論頁面,此處還提供公告的其它操作,如發(fā)布公告、刪除公告。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.8所示。業(yè)務(wù)處理流程展示公司公告得到服務(wù)器返回的公告信息是,向公告列表添加節(jié)點(diǎn)。服務(wù)器返回公告的數(shù)據(jù)格式如下:<protocol><ActionName="AnnounceMent"ParamCount="4"Param0="公告ID"Param1="發(fā)布者ID"Param2="時(shí)間"Param3="公告內(nèi)容"/></protocol>。打開公告評(píng)論頁面用戶雙擊任一公告后,獲取雙擊的公告的信息,查詢對(duì)應(yīng)的公告評(píng)論框是否在MyContext中的m_CommentFormTable表中,如果不在則根據(jù)公告信息創(chuàng)建對(duì)應(yīng)的公告評(píng)論框顯示,并將公告評(píng)論框顯示添加到MyContext中的m_CommentFormTable表中。有關(guān)公告評(píng)論的操作在公告評(píng)論對(duì)話框中處理。圖4.8公告列表發(fā)布公告彈出發(fā)布公告對(duì)話框,發(fā)布公告處理過程由發(fā)布公告對(duì)話框負(fù)責(zé)。刪除公告根據(jù)用戶的選擇將要?jiǎng)h除的公告信息發(fā)送至服務(wù)器。刪除公告的數(shù)據(jù)格式如下:<protocol><ActionName="DeleteAnnounce"ParamCount="1"Param0="公告ID"/></protocol>。點(diǎn)對(duì)點(diǎn)通信點(diǎn)對(duì)點(diǎn)通信模塊包含兩個(gè)功能,發(fā)送信息以及傳輸文件。用戶可以在聊天框輸入信息向其它員工發(fā)送信息,也可以選擇本地文件向?qū)Ψ桨l(fā)送文件。系統(tǒng)則根據(jù)用戶的不同選擇調(diào)用不同的模塊。點(diǎn)對(duì)點(diǎn)通信模塊的活動(dòng)圖如圖4.9所示。發(fā)送信息功能描述用戶通過此功能模塊可以于公司內(nèi)的其它任一員工進(jìn)行交流,目前只支持文字交流,視頻聊天以及語言聊天功能以后再添加。用戶使用此功能時(shí)首先要在組織結(jié)構(gòu)列表中找到要聊天的員工,然后雙擊員工節(jié)點(diǎn)就可以打開聊天窗口,在聊天框中輸入聊天信息點(diǎn)擊發(fā)送按鈕就可以將消息發(fā)送給對(duì)方。圖4.9點(diǎn)對(duì)點(diǎn)通信活動(dòng)圖另外為了給用戶提供較好的體驗(yàn),本功能模塊添加了其它一些功能。比如用戶可以設(shè)置聊天使用的文字的字體、大小、顏色。對(duì)于聊天信息的展示,系統(tǒng)會(huì)將消息發(fā)送者的昵稱、ID、消息發(fā)送時(shí)間全部展示給用戶。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.10所示。業(yè)務(wù)處理流程用戶點(diǎn)擊發(fā)送按鈕后,先判斷消息發(fā)送框內(nèi)容是否為空,如果不為空,則將消息內(nèi)容與字體封裝,發(fā)送到對(duì)方客戶端。消息數(shù)據(jù)格式如下:字體數(shù)據(jù)格式:<protocol><ActionName="TextForm"ParamCount="4"Param0="發(fā)送者ID"Param0="字體"Param0="字號(hào)"Param0="顏色"/></protocol>。消息內(nèi)容數(shù)據(jù)格式:<protocol><ActionName="Msg"ParamCount="2"Param0="發(fā)送者ID"Param0="消息內(nèi)容"/></protocol>。序列圖如圖4.11所示。圖4.10發(fā)送消息界面圖4.11發(fā)送消息序列圖傳輸文件功能描述在打開了聊天窗口的前提下,用戶可以將本地計(jì)算機(jī)的一些資料傳輸給對(duì)方。使用時(shí)發(fā)送方點(diǎn)擊發(fā)送文件按鈕選擇要發(fā)送的文件,然后客戶端會(huì)向另一個(gè)客戶端發(fā)送文件傳輸請(qǐng)求,在對(duì)方同意接收后開始傳輸文件。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.12所示。圖4.12傳輸文件界面業(yè)務(wù)處理流程用戶選擇要發(fā)送的文件,本地客戶端隨機(jī)監(jiān)聽一端口,將要發(fā)送的文件信息以及監(jiān)聽的端口號(hào)封裝成消息發(fā)送至對(duì)方客戶端,對(duì)方同意接受文件后,連接本地給定端口,兩客戶端連接成功后開始傳輸文件。序列圖如圖4.SEQ圖\*ARABIC\s113所示。群組會(huì)議群組會(huì)議模塊包含三功能,發(fā)送信息、文件共享、群成員管理。發(fā)送信息功能,用戶可以在聊天框輸入信息向其它群組成員發(fā)送信息。文件共享功能用戶也可以選擇本地文件發(fā)送到群共享也可以從群共享下載文件。群成員管理功能,群創(chuàng)建者可以邀請(qǐng)和移除群成員,而群成員只可以邀請(qǐng)其他員工加入群組。系統(tǒng)則根據(jù)用戶作出的不同選擇調(diào)用不同的模塊進(jìn)行處理。群組會(huì)議模塊的活動(dòng)圖如圖4.14所示。創(chuàng)建群組功能描述員工可以根據(jù)需要?jiǎng)?chuàng)建群組,并同時(shí)邀請(qǐng)其他員工加入群組。圖4.13文件傳輸序列圖圖4.14群組會(huì)議活動(dòng)圖界面設(shè)計(jì)界面設(shè)計(jì)如圖4.SEQ圖\*ARABIC\s115所示。圖4.15創(chuàng)建群組界面業(yè)務(wù)處理流程用戶輸入群組名稱、群組說明,并選擇邀請(qǐng)的員工,點(diǎn)擊確定按鈕。系統(tǒng)判斷用戶輸入信息是否完整,如果所需信息輸入完整則將創(chuàng)建群組信息發(fā)送至服務(wù)器,創(chuàng)建群組成功。創(chuàng)建群組信息數(shù)據(jù)傳輸格式如下:<protocol><ActionName="CreateGroup"ParamCount="n+1"Param0="群名稱"Param1="群組說明"Param2="創(chuàng)建者"Param3="被邀人員1"Param4="被邀人員2"……ParamN="被邀人員n"/></protocol>。序列圖如圖4.16所示。邀請(qǐng)員工加入群組功能描述群組內(nèi)成員可以邀請(qǐng)其他員工加入已有群組。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.SEQ圖\*ARABIC\s117所示。業(yè)務(wù)處理流程群組成員在邀請(qǐng)員工加入群組頁面選擇要邀請(qǐng)的聯(lián)系人,點(diǎn)擊確定。系統(tǒng)根據(jù)群組信息、邀請(qǐng)的聯(lián)系人列表生成消息發(fā)送至服務(wù)器。圖4.16創(chuàng)建群組序列圖圖4.17邀請(qǐng)員工加入群組邀請(qǐng)員工加入群組消息傳輸格式如下:<protocol><ActionName="InviteGroupMember"ParamCount="n+1"Param0="群ID"Param1="被邀人員1"Param2="被邀人員1"……ParamN="被邀人員n"/></protocol>。將員工移除群組功能描述群組創(chuàng)建者即群主可以將任一群組成員移除群組。業(yè)務(wù)處理流程群主選擇任一群組成員點(diǎn)擊移除按鈕,系統(tǒng)將群組信息以及要移除的成員信息封裝成消息,發(fā)送至服務(wù)器。移除群組成員消息傳輸格式如下:<protocol><ActionName="RemoveGroupMember"ParamCount="2"Param0="群ID"Param1="被T員工ID"/></protocol>。群組聊天功能描述群組成員可以發(fā)送群組消息,群組內(nèi)每一個(gè)成員都會(huì)收到消息,用戶可以設(shè)置消息的字體、大小、顏色。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.18所示。業(yè)務(wù)處理流程用戶在消息框輸入要發(fā)送的消息,單擊發(fā)送按鈕。系統(tǒng)判斷消息框內(nèi)容是否為空,如果不為空,將本地群組信息、用戶信息、字體、消息內(nèi)容封裝成消息,發(fā)送至服務(wù)端。 群組聊天消息傳輸格式如下: <protocol><ActionName="GroupMsg"ParamCount="7"Param0="群ID"Param1="發(fā)送者ID"Param2="內(nèi)容"Param3="字體"Param4="大小"Param5="風(fēng)格"Param6="顏色"/></protocol>。 序列圖如圖4.19所示。圖4.18群組聊天界面圖4.19群組聊天序列圖上傳共享文件功能描述平時(shí)如果員工之間要共享一些文件、資料文檔時(shí),一般情況下員工會(huì)拿U盤、移動(dòng)硬盤等進(jìn)行拷貝或者用QQ進(jìn)行傳輸,但是在一些不允許員工使用U盤、QQ等聊天工具的公司,員工之間的文件共享將變得十分麻煩。正是由于這點(diǎn),企業(yè)即時(shí)通信工具加入了群文件共享的功能。群組成員可以將一些重要文件發(fā)布在群共享里面,其他群組成員可以方便的進(jìn)行下載,這樣既方便了員工,又保證了安全性(共享文件只可以讓群組成員進(jìn)行下載)。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.20所示。圖4.20群組文件共享界面業(yè)務(wù)處理流程用戶點(diǎn)擊上傳文件選擇要上傳的文件,系統(tǒng)隨機(jī)監(jiān)聽端口,將群組信息、上傳的文件信息、監(jiān)聽的端口號(hào)封裝成消息發(fā)送至服務(wù)端。服務(wù)端收到請(qǐng)求后連接客戶端,連接成功后開始傳輸文件。上傳文件消息傳輸格式如下:<protocol><ActionName="UpLoadFile"ParamCount="4"Param0="群ID"Param1="文件名"Param2="文件大小"Param3="監(jiān)聽端口號(hào)"/></protocol>。序列圖如圖4.21所示。圖4.21上傳群共享文件下載共享文件功能描述平時(shí)如果員工之間要共享一些文件、資料文檔時(shí),一般情況下員工會(huì)拿U盤、移動(dòng)硬盤等進(jìn)行拷貝或者用QQ進(jìn)行傳輸,但是在一些不允許員工使用U盤、QQ等聊天工具的公司,員工之間的文件共享將變得十分麻煩。正是由于這點(diǎn),企業(yè)即時(shí)通信工具加入了群文件共享的功能。群組成員可以方便的進(jìn)行下載其它員工共享的文件,這樣既方便了員工,又保證了安全性(共享文件只可以讓群組成員進(jìn)行下載)。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.22所示。圖4.22群組文件共享界面業(yè)務(wù)處理流程用戶選擇要下載的文件點(diǎn)擊下載文件選擇要保存的位置,系統(tǒng)隨機(jī)監(jiān)聽端口,將群組信息、下載的文件信息、監(jiān)聽的端口號(hào)封裝成消息發(fā)送至服務(wù)端。服務(wù)端收到請(qǐng)求后連接客戶端,連接成功后開始傳輸文件。下載文件消息傳輸格式如下: <protocol><ActionName="DownLoadFile"ParamCount="3"Param0="群組號(hào)"Param1="群共享文件名"Param2="監(jiān)聽端號(hào)"/></protocol>。 序列圖如圖4.23所示。日常公告管理日常公告管理包括四個(gè)功能,發(fā)布公告、刪除公告、查看公告評(píng)論、評(píng)論公告。系統(tǒng)根據(jù)用戶不同的選擇將操作所需的信息發(fā)送至服務(wù)器或者從服務(wù)器獲取相應(yīng)的消息展示給用戶。日常公告管理的活動(dòng)圖如圖4.24所示。圖4.23下載文件序列圖發(fā)布公告功能描述公司有重要通知時(shí),可以在公告發(fā)布頁面發(fā)布公司公告,公司員工會(huì)及時(shí)收到公司公告。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.SEQ圖\*ARABIC\s125所示。業(yè)務(wù)處理流程用戶在公告編輯框內(nèi)編輯公告內(nèi)容,編輯完成點(diǎn)擊發(fā)布,系統(tǒng)判斷所需信息是否完整,如果完整則將發(fā)布者信息、公告內(nèi)容封裝成消息發(fā)送至服務(wù)端。發(fā)送公告消息格式如下:<protocol><ActionName="IssueAnnounce"ParamCount="1"Param0="公告內(nèi)容"/></protocol>。4.24日常公告管理活動(dòng)圖圖4.25發(fā)布公告界面發(fā)布公告序列圖如圖4.26所示。刪除公告功能描述公司用戶可以將過期的、不需要的公告刪除。業(yè)務(wù)處理流程用戶選擇要?jiǎng)h除的公告,點(diǎn)擊刪除,系統(tǒng)將要?jiǎng)h除的公告信息封裝成消息,發(fā)圖4.26發(fā)布公告序列圖送至服務(wù)器,公告刪除完成。刪除公告數(shù)據(jù)傳輸格式如下:<protocol><ActionName="DeleteAnnounce"ParamCount="1"Param0="公告ID"/></protocol>。查看公告評(píng)論功能描述員工雙擊任一公司公告,可以打開相關(guān)公告的評(píng)論頁面,可以查看其它員工對(duì)次公告發(fā)表的評(píng)論。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.27所示。業(yè)務(wù)處理流程員工雙擊任一公告打開公告評(píng)論頁面,系統(tǒng)向服務(wù)端發(fā)送消息獲取對(duì)應(yīng)公告的圖4.27公告評(píng)論展示界面評(píng)論。服務(wù)端將公告對(duì)應(yīng)的評(píng)論返回后,系統(tǒng)將評(píng)論保存并在公告評(píng)論頁面展示。獲取評(píng)論的數(shù)據(jù)傳輸格式如下:獲取評(píng)論:<protocol><ActionName="GetComment"ParamCount="1"Param0="公告ID"/></protocol>。服務(wù)端返回評(píng)論:<protocol><ActionName="Comment"ParamCount="4"Param0="公告ID"Param1="評(píng)論者ID"Param2="評(píng)論時(shí)間"Param3="評(píng)論內(nèi)容"/></protocol>。評(píng)論公告功能描述員工可以對(duì)公司發(fā)布的公告自由的進(jìn)行評(píng)論,員工的評(píng)論可以實(shí)時(shí)的被其它員工獲取。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.28所示。圖4.28公告評(píng)論界面業(yè)務(wù)處理流程員工在公告評(píng)論頁面中的評(píng)論框內(nèi)輸入評(píng)論內(nèi)容,點(diǎn)擊評(píng)論,系統(tǒng)判斷所需信息是否完整,如果完整,則將公告信息、評(píng)論者信息、評(píng)論內(nèi)容封裝成消息發(fā)送至服務(wù)端。發(fā)布評(píng)論消息傳輸格式如下:<protocol><ActionName="Comment"ParamCount="2"Param0="公告ID"Param1="評(píng)論內(nèi)容"/></protocol>。序列圖如圖4.29所示。工作郵件發(fā)送郵件功能描述在信息社會(huì)郵件是人與人之間交流的一中非常便捷的方式,公司提供內(nèi)部的郵件功能不但可以方便員工之間的交流,另一方面也保證了交流信息不會(huì)外泄。企圖4.29發(fā)布評(píng)論序列圖業(yè)即時(shí)通信系統(tǒng)的郵件功能就是為員工提供內(nèi)部的郵件發(fā)送接受功能,功能類似于網(wǎng)絡(luò)上其它類型郵件,例如網(wǎng)易郵箱、新浪郵箱、QQ郵箱等。界面設(shè)計(jì)界面設(shè)計(jì)如圖4.30所示。圖4.30發(fā)送郵件界面業(yè)務(wù)處理用戶登陸后可以用自己的工作郵箱向其它公司員工的工作郵箱發(fā)送郵件,發(fā)送郵件時(shí)員工需要填寫對(duì)方的郵箱、郵件主題、郵件內(nèi)容。郵件的發(fā)送功能使用System.Net.Mail下的提供的功能完成。由于沒有自己的服務(wù)器,所以只拿網(wǎng)易郵箱進(jìn)行測(cè)試,測(cè)試成功。如果部署時(shí)需要使用此功能,需要先建立公司自己的服務(wù)器,然后在客戶端中進(jìn)行配置

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論