




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、分類(lèi)號(hào):TP311.1 UDC:D10621-408-(20XX)6163-0密 級(jí):公 開(kāi) 編 號(hào):20XX0320XXXX科技大學(xué)學(xué)位論文基于B/S方式的即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)論文作者姓名:王亞平申請(qǐng)學(xué)位專(zhuān)業(yè):網(wǎng)絡(luò)工程申請(qǐng)學(xué)位類(lèi)別:工學(xué)學(xué)士指導(dǎo)教師姓名(職稱(chēng)):陳麟(副教授)論文提交日期:20XX年6月9日基于B/S方式的即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)摘 要即時(shí)通訊(Instant Messaging)是目前Internet上最為流行的通訊方式,而各種各樣的即時(shí)通訊軟件也層出不窮;服務(wù)提供商也提供了越來(lái)越豐富的通訊服務(wù)功能。隨著互聯(lián)網(wǎng)的發(fā)展,即時(shí)通訊的運(yùn)用將日益廣泛,即時(shí)通訊軟件業(yè)方興未艾。本
2、文首先描述了即時(shí)通訊業(yè)的發(fā)展和現(xiàn)狀,然后初步探討了即時(shí)通訊所涉及到的一些技術(shù),最后對(duì)現(xiàn)有的技術(shù)進(jìn)行了對(duì)比和分析,提出了一些可能的改進(jìn)方案,并且設(shè)計(jì)了一個(gè)名為web-msn的即時(shí)通訊系統(tǒng)。 web-msn是基于B/S的模式的即時(shí)通訊系統(tǒng),通過(guò)IE等瀏覽器直接完成客戶(hù)端的登錄、數(shù)據(jù)傳輸,更加便捷了用戶(hù)之間的通訊和交友;使用最新的Ajax技術(shù),使其非???無(wú)需等待頁(yè)面的刷新,實(shí)現(xiàn)了即時(shí)通訊的功能。 在系統(tǒng)設(shè)計(jì)與建模過(guò)程中,使用了UML和面向?qū)ο蟮姆治?、設(shè)計(jì)方法,本系統(tǒng)基于.NET Framework 1.1,使用Visual Studio .NET 20XX作為開(kāi)發(fā)工具,將.NET中的一些新技術(shù)運(yùn)用
3、到了系統(tǒng)中;在開(kāi)發(fā)過(guò)程中用到了時(shí)下流行的重構(gòu)開(kāi)發(fā)方法,優(yōu)化了系統(tǒng)的設(shè)計(jì)。 關(guān)鍵詞:Web-msn;即時(shí)通訊;B/S; AjaxThe Design and Implementation of Instant Message Based on B/SAbstractInstant message is currently the most popular way to communicate on the Internet,by the way various instant message software have been continuously appearing; service p
4、rovider offers more and more communication services nowadays. As the development of the Internet, instant message will be more widely used than before. This article first describes the development and the current status of the instant message. Then it discusses the technologies of the instant messag
5、e such as communication protocol, service mode and friend-making mode. It makes a comparison and analysis with respect to the current technology and also provides some possible solutions for improvement. At last it designs and develops an instant message system named web-msn.The web-msn system is an
6、 instant message system which bases on b/s mode. You can login and interact with it through IE. It makes communication and finding friends more conveniently. It is designed using Ajax, which doesnt need to wait for refreshing page, so carry out communication instantly.This system is based on .NET Fr
7、amework 1.1 and uses Visual Studio .NET 20XX as the development tool. It accumulated some new technology in .NET into our system. During the process of development, it used the popular reconstruction development method, which optimizes the system design.Key words: Web-msn; Instant Message; B/S; Ajax
8、目 錄 論文總頁(yè)數(shù):24頁(yè)1 引言12 系統(tǒng)分析22.1 課題目的22.2 課題意義22.3 應(yīng)解決的問(wèn)題22.4 需要實(shí)現(xiàn)的功能22.5 開(kāi)發(fā)環(huán)境22.5.1 vs20XX開(kāi)發(fā)環(huán)境介紹22.5.2 Sql Server 20XX介紹32.5.3 C#語(yǔ)言介紹32.6 關(guān)鍵技術(shù)-Ajax簡(jiǎn)介33 需求分析33.1 即時(shí)消息的一般需求33.2 即時(shí)通訊系統(tǒng)需求44 系統(tǒng)設(shè)計(jì)54.1 方案論證54.1.1 “即時(shí)”技術(shù)的選擇54.1.2 web-msn的模型選擇64.2 數(shù)據(jù)庫(kù)設(shè)計(jì)84.2.1 數(shù)據(jù)表設(shè)計(jì)84.2.2 存儲(chǔ)過(guò)程設(shè)計(jì)84.3 系統(tǒng)功能分析與設(shè)計(jì)94.4 系統(tǒng)模塊設(shè)計(jì)114.4.1 注
9、冊(cè)模塊114.4.2 登錄模塊114.4.3 傳輸信息模塊124.4.4 退出系統(tǒng)模塊135 系統(tǒng)實(shí)現(xiàn)145.1 發(fā)送消息功能實(shí)現(xiàn)145.2 接收消息功能實(shí)現(xiàn)156 測(cè)試176.1 測(cè)試內(nèi)容176.2 測(cè)試結(jié)果17結(jié) 論18參考文獻(xiàn)19附 錄20致 謝23聲 明241 引言即時(shí)通訊軟件,幾乎是每一個(gè)上網(wǎng)用戶(hù)都必備的聯(lián)絡(luò)工具。即時(shí)通訊軟件除了能夠讓您迅速地在網(wǎng)上找到自己的朋友和工作伙伴,還可以實(shí)時(shí)交談和傳遞信息,而且,現(xiàn)在不少即時(shí)通訊軟件還集成了文件共享、語(yǔ)音聊天、網(wǎng)絡(luò)會(huì)議等功能。截止到目前,全球約有近3億多人使用即時(shí)通訊軟件進(jìn)行交流,正因?yàn)榧磿r(shí)通訊軟件擁有數(shù)以?xún)|計(jì)的用戶(hù)和迅速增長(zhǎng)的市場(chǎng),所以各
10、個(gè)公司都盯上了中國(guó)這個(gè)潛在的最大市場(chǎng),一時(shí)間,即時(shí)通訊市場(chǎng)硝煙四起。除了騰訊QQ和國(guó)外的幾款著名即時(shí)通訊軟件紛紛推出新版本,網(wǎng)易也推出了一種新的即時(shí)通訊軟件網(wǎng)易泡泡。朗瑪公司也推出了名為UC的通訊工具。即時(shí)通訊軟件最早發(fā)布于1996年11月15日,以色列特拉維文的Mirabilis Ltd.發(fā)表了一個(gè)題為E.T SURF HOME:MIRABILIS LTD. PROVIDES NEW SOLUTIONS FOR PEER-TO-PEER INTERNET COMMUNICATIONS的新聞稿,同時(shí)發(fā)布了他們新產(chǎn)品ICQ(I Seek You)的Beta測(cè)試版。這天標(biāo)志著Internet上的第
11、一個(gè)成熱的即時(shí)通訊系統(tǒng)(Instant Message System)的誕生。即時(shí)通訊服務(wù)在誕生之后的幾年時(shí)間得到了迅猛發(fā)展,成為新增Internet用戶(hù)的3個(gè)主要應(yīng)用之一(WEB,電子郵件和即時(shí)通訊)。在國(guó)內(nèi),1999年2月,深圳騰訊公司正式發(fā)布OICQ99 beta build 0210,開(kāi)通騰訊即時(shí)通訊服務(wù)。20XX年5月,騰訊QQ同時(shí)在線(xiàn)用戶(hù)突破10萬(wàn);20XX年2月l0日,騰訊QQ同時(shí)在線(xiàn)用戶(hù)突破100萬(wàn)。20XX年4月份騰訊QQ同時(shí)在線(xiàn)人數(shù)最高記錄已經(jīng)突破了600萬(wàn)大關(guān),現(xiàn)在騰訊公司正在把即時(shí)通訊系統(tǒng)往移動(dòng)通訊方向擴(kuò)展,如今已經(jīng)將即時(shí)通訊與手機(jī)短信息(SMS)成功結(jié)合起來(lái)。即時(shí)通訊
12、軟件涉及和影響的領(lǐng)域已近越來(lái)越廣,其競(jìng)爭(zhēng)也越來(lái)越激烈。國(guó)內(nèi)QQ最大的敵手朗瑪U(kuò)C從20XX年開(kāi)始研發(fā),20XX年的12月份UC正式發(fā)布,并且首創(chuàng)了很多技術(shù):UC是國(guó)內(nèi)第一個(gè)做場(chǎng)景聊天的;UC是第一個(gè)把同學(xué)錄和校友錄結(jié)合的;第一個(gè)把即時(shí)通訊與休閑游戲相結(jié)合的;第一個(gè)把發(fā)送動(dòng)畫(huà)與即時(shí)通訊相結(jié)合的。在一年的發(fā)展里,UC一度達(dá)到峰值在線(xiàn)30萬(wàn)人,注冊(cè)用戶(hù)達(dá)到7000萬(wàn)。但是縱觀(guān)這些即時(shí)通訊軟件業(yè),都是基于C/S模式的,需要下載客戶(hù)端進(jìn)行安裝,用戶(hù)名、密碼、聊天記錄等也是存放在本地機(jī)器上,在安全性和方便性上都有所欠缺。設(shè)計(jì)并開(kāi)發(fā)一個(gè)基于WEB的即時(shí)通訊平臺(tái),對(duì)于現(xiàn)階段的學(xué)習(xí)和研究,都是極為有意義的,基于
13、這個(gè)前提和起因,我選擇了基于B/S方式的即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)作為我的畢業(yè)設(shè)計(jì)。2 系統(tǒng)分析2.1 課題目的設(shè)計(jì)一個(gè)基于B/S模式的IM軟件,可以通過(guò)IE等瀏覽器直接完成客戶(hù)端的登錄、數(shù)據(jù)傳輸、好友信息分組管理、狀態(tài)更新、兩人以及多人的文字聊天等功能。2.2 課題意義作為計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生,即時(shí)了解和掌握流行的即時(shí)通訊機(jī)制并且應(yīng)用到實(shí)踐過(guò)程中,將極大的提高自己的設(shè)計(jì)和開(kāi)發(fā)軟件的積極性;提升自己的理論和技術(shù)水平,跟蹤國(guó)內(nèi)外最新的技術(shù)和開(kāi)發(fā)模式,為以后類(lèi)似的開(kāi)發(fā)積累經(jīng)驗(yàn);同時(shí),開(kāi)發(fā)出來(lái)的作品也可以真正運(yùn)用到實(shí)際當(dāng)中,方便大家的溝通和交流。2.3 應(yīng)解決的問(wèn)題1) 服務(wù)系統(tǒng)模型的選擇;2) 實(shí)時(shí)查看
14、在線(xiàn)好友列表;3) 向在線(xiàn)好友發(fā)送即時(shí)消息;4) 實(shí)時(shí)接收在線(xiàn)消息并且彈出提示;5) 狀態(tài)的即使切換(在線(xiàn),隱身等)。2.4 需要實(shí)現(xiàn)的功能1) 實(shí)現(xiàn)用戶(hù)注冊(cè)、登錄、退出、更改狀態(tài)等功能;2) 實(shí)現(xiàn)文本信息發(fā)送;3) 實(shí)現(xiàn)搜索好友,添加好友,刪除好友技術(shù);4) 實(shí)現(xiàn)消息的提示功能;5) 實(shí)現(xiàn)設(shè)置好友權(quán)限功能。2.5 開(kāi)發(fā)環(huán)境2.5.1 vs20XX開(kāi)發(fā)環(huán)境介紹 Visual Studio是微軟公司出品的一款大型應(yīng)用軟件,是一套完整的開(kāi)發(fā)工具集,它主要用于生成ASP.NET Web應(yīng)用程序、XML Web Services、桌面應(yīng)用程序和移動(dòng)應(yīng)用程序。Visual Basic、Visual C+
15、、Visual C# 和Visual J# 全都使用相同的集成開(kāi)發(fā)環(huán)境(IDE)。利用此IDE可以共享工具且有助于創(chuàng)建混合語(yǔ)言解決方案,使程序可以使用不同的語(yǔ)言共同開(kāi)發(fā)。NET開(kāi)發(fā)平臺(tái)由一組用于建立Web服務(wù)應(yīng)用程序和Windows桌面應(yīng)用程序的軟件組件構(gòu)成,包括.NET框架(Framework)、.NET開(kāi)發(fā)工具和ASP.NET。Visual Studio 20XX的集成開(kāi)發(fā)環(huán)境中為開(kāi)發(fā)人員提供了大量的實(shí)用工具以提高工作效率。這些工具包括了自動(dòng)編譯、項(xiàng)目創(chuàng)建向?qū)?、?chuàng)建部署工程等。2.5.2 Sql Server 20XX介紹SQL Server20XX由一系列相互協(xié)作的組件構(gòu)成,能滿(mǎn)足最大的
16、Web站點(diǎn)和企業(yè)數(shù)據(jù)處理系統(tǒng)存儲(chǔ)和分析數(shù)據(jù)的需要。SQLServer構(gòu)架各種組件通過(guò)何種方式發(fā)揮合力,更富成效地管理數(shù)據(jù)。 SQL Server20XX數(shù)據(jù)庫(kù)引擎提供完整的XML支持。它還具有構(gòu)成最大的Web站點(diǎn)的數(shù)據(jù)存儲(chǔ)組件所需的可伸縮性、可用性和安全功能。SQL Server20XX程序設(shè)計(jì)模型與WindowsDNA構(gòu)架集成,用以開(kāi)發(fā)Web應(yīng)用程序,并且SQL Server20XX支持EnglishQuery和 Microsoft搜索服務(wù)等功能,在Web應(yīng)用程序中包含了用戶(hù)友好的查詢(xún)和強(qiáng)大的搜索功能。2.5.3 C#語(yǔ)言介紹C#是一種語(yǔ)言,它是專(zhuān)門(mén)為了微軟的.NET戰(zhàn)略而設(shè)計(jì)的一種語(yǔ)言.
17、C#也叫C#.Net。2.6 關(guān)鍵技術(shù)-Ajax簡(jiǎn)介Ajax 是異步JavaScript和XML(Asynchronous JavaScript and XML)的英文縮寫(xiě)?!癆jax”這個(gè)名詞的發(fā)明人是Jesse James Garrett,而大力推廣并且使Ajax技術(shù)炙手可熱的是Google。Google發(fā)布的Gmail,Google Suggest等應(yīng)用最終讓人們了解了什么是Ajax。Ajax的核心理念在于使用XMLHttpRequest對(duì)象發(fā)送異步請(qǐng)求,最初為XMLHttpRequest對(duì)象提供瀏覽器支持的微軟公司。早在1998年,微軟公司開(kāi)發(fā)Web版Outlook時(shí),就已經(jīng)以Acti
18、veX控件的方式為XMLHttpRequest提供了支持。Ajax是使用客戶(hù)端腳本與Web服務(wù)器交換數(shù)據(jù)的Web應(yīng)用開(kāi)發(fā)方法。這樣,Web頁(yè)面不用打斷交互流程進(jìn)行重新加裁,就可以動(dòng)態(tài)地更新。使用Ajax,用戶(hù)可以創(chuàng)建接近本地桌面應(yīng)用的直接、高可用、更豐富、更動(dòng)態(tài)的Web用戶(hù)界面。實(shí)際上,Ajax不是一種技術(shù),而是幾種技術(shù)。每種技術(shù)都具有獨(dú)特之處,合在一起就形成了一個(gè)功能強(qiáng)大的新技術(shù)。Ajax包括:1) XHTML和CSS;2) 使用文檔對(duì)象模型進(jìn)行動(dòng)態(tài)顯示和交互;3) 使用XML和XSLT進(jìn)行數(shù)據(jù)交互和操作;4) 使用XMLHttpRequest進(jìn)行異步數(shù)據(jù)接收;5) 使用JavaScript
19、將它們綁定在一起。 3 需求分析3.1 即時(shí)消息的一般需求1) 一般即時(shí)消息格式需求:所有實(shí)體必須至少使用一種消息格式;一般即時(shí)消息格式必須定義發(fā)信者和即時(shí)收件箱的標(biāo)識(shí);一般即時(shí)消息格式必須包含一個(gè)讓接收者可以回消息的Adress;一般即時(shí)消息格式應(yīng)該包含其他通訊方法和聯(lián)系A(chǔ)dress,例如TEL號(hào)碼,郵件地;一般即時(shí)信息格式必須允許對(duì)信息有效負(fù)載的編碼和鑒別(非ASCII內(nèi)容);一般即時(shí)信息格式必須反映當(dāng)前最好的國(guó)際化實(shí)踐;一般即時(shí)信息格式必須反映當(dāng)前最好的可用性實(shí)踐;必須存在方法,在擴(kuò)展一般即時(shí)消息格式的時(shí)候,不影響原有的域;必須提供擴(kuò)展和注冊(cè)即時(shí)消息格式的模式的機(jī)制。2) 可靠性需求 協(xié)
20、議必須存在機(jī)制,保證即時(shí)消息成功投遞或者投遞失敗的時(shí)候,發(fā)信者獲得足夠的信息。3) 性能需求即時(shí)消息的傳輸必須足夠的迅速;即時(shí)消息的內(nèi)容必須足夠豐富;即時(shí)消息的長(zhǎng)度盡量足夠的長(zhǎng)。3.2 即時(shí)通訊系統(tǒng)需求1) 注冊(cè)需求即時(shí)通訊系統(tǒng)允許多個(gè)用戶(hù)注冊(cè);一個(gè)用戶(hù)可以注冊(cè)多個(gè)ID;注冊(cè)所使用的帳號(hào)類(lèi)型為數(shù)字或者字母;注冊(cè)新用戶(hù)時(shí)必須填寫(xiě)符合要求的信息。2) 通訊需求 用戶(hù)可以傳輸文本消息;用戶(hù)的消息可以中轉(zhuǎn)至服務(wù)器;用戶(hù)可以從服務(wù)器獲取中轉(zhuǎn)的好友消息;3) 好友管理需求用戶(hù)可以查詢(xún)好友;用戶(hù)可以添加好友;用戶(hù)可以添加多個(gè)人為好友,一個(gè)用戶(hù)可以被多個(gè)人添加為好友用戶(hù)可以刪除好友;用戶(hù)可以將好友放在多個(gè)組中
21、;用戶(hù)的好友一次只能屬于一個(gè)組。4) 狀態(tài)切換需求用戶(hù)可以選擇登錄狀態(tài);登錄完成后用戶(hù)可以切換狀態(tài)(在線(xiàn),隱身);用戶(hù)可以注銷(xiāo)登錄。5) 查看在線(xiàn)好友需求用戶(hù)登錄時(shí)列出所有在線(xiàn)好友;用戶(hù)可以看到新近登錄的好友;用戶(hù)將不在看到臨時(shí)登出的好友。4 系統(tǒng)設(shè)計(jì)4.1 方案論證4.1.1 “即時(shí)”技術(shù)的選擇聊天系統(tǒng)實(shí)現(xiàn)的關(guān)鍵在于其實(shí)時(shí)的特性,包括狀態(tài)的實(shí)時(shí)改變,消息的實(shí)時(shí)收發(fā),狀態(tài)的實(shí)時(shí)切換等,而傳統(tǒng)的Web應(yīng)用采用同步交互過(guò)程,這種情況下,用戶(hù)首先向Web服務(wù)器發(fā)送一個(gè)請(qǐng)求,然后Web服務(wù)器根據(jù)用戶(hù)請(qǐng)求的內(nèi)容,執(zhí)行相應(yīng)的任務(wù),并向用戶(hù)返回結(jié)果。這是一種不連貫的用戶(hù)體驗(yàn),在服務(wù)器處理請(qǐng)求時(shí),用戶(hù)只能等待
22、,此時(shí)瀏覽器顯示的頁(yè)面是空白的,這也就是通常所說(shuō)的“白屏”現(xiàn)象,應(yīng)用此種技術(shù)肯定實(shí)現(xiàn)不了即時(shí)通訊所要求的效果。所以就需要尋求一種新的技術(shù)來(lái)實(shí)現(xiàn)本系統(tǒng)所要求的即時(shí)的效果,而Ajax恰好彌補(bǔ)了Web應(yīng)用的這一缺點(diǎn)。與傳統(tǒng)的Web應(yīng)用不同,Ajax采用了異步交互的方式。它在用戶(hù)和服務(wù)器之間引入了一個(gè)中間媒介,從而改變了同步交互過(guò)程中的“處理-等待-處理-等待”模式。用戶(hù)的瀏覽器在執(zhí)行任務(wù)時(shí)即裝載了Ajax引擎。該引擎是用JavaScript語(yǔ)言編寫(xiě)的,通常位于一個(gè)隱藏的框架中,負(fù)責(zé)轉(zhuǎn)發(fā)用戶(hù)界面和服務(wù)器之間的交互。Ajax引擎允許用戶(hù)和應(yīng)用系統(tǒng)之間的交互以異步的方式進(jìn)行,獨(dú)立于用戶(hù)與Web服務(wù)器之間的
23、交互?,F(xiàn)在,可以通過(guò)Ajax引擎向Web服務(wù)器發(fā)送請(qǐng)求。所以本系統(tǒng)決定采用Ajax來(lái)實(shí)現(xiàn)即時(shí)通訊各個(gè)部分“即時(shí)”效果的實(shí)現(xiàn)。使用Ajax可以帶來(lái)的好處有以下幾個(gè)方面:1減輕服務(wù)器的負(fù)擔(dān)。Ajax的原則是“按需取數(shù)據(jù)”,可以最大程度地減少冗余請(qǐng)求,減輕服務(wù)器的負(fù)擔(dān)。2無(wú)需刷新頁(yè)面,減少用戶(hù)心理和實(shí)際的等待時(shí)間。特別是在讀取大量數(shù)據(jù)時(shí),不會(huì)像刷新頁(yè)面那樣出現(xiàn)白屏的情況,Ajax使用XMLHttpRequest對(duì)象發(fā)送請(qǐng)求并且得到服務(wù)器響應(yīng),在不重新載入整個(gè)頁(yè)面的情況下,用JavaScript操作DOM更新頁(yè)面。因此在讀取數(shù)據(jù)的過(guò)程中,用戶(hù)所面對(duì)的不是白屏,是原來(lái)的頁(yè)面內(nèi)容,只有在數(shù)據(jù)接收完畢后才更
24、新相應(yīng)部分的內(nèi)容。這種更新是瞬間的,用戶(hù)幾乎感覺(jué)不到。3帶來(lái)更好的用戶(hù)體驗(yàn)。4可以把以前一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶(hù)端,利用客戶(hù)端閑置的能力來(lái)處理,減輕服務(wù)器負(fù)擔(dān),充分利用寬帶資源,節(jié)約空間和寬帶租用成本。5可以調(diào)用外部數(shù)據(jù)。6基于標(biāo)準(zhǔn)化的并廣泛支持的技術(shù),不需要下載插件或者小程序。7進(jìn)一步促進(jìn)頁(yè)面呈現(xiàn)與數(shù)據(jù)的分離。4.1.2 web-msn的模型選擇1) 即時(shí)通訊系統(tǒng)的一般模型即時(shí)通訊服務(wù)有兩個(gè)實(shí)體:發(fā)送者和即時(shí)收信箱。即時(shí)通訊協(xié)議定義了即時(shí)通訊服務(wù)、發(fā)信者和即時(shí)收信箱之間的交互作用。即時(shí)通訊服務(wù)與其他郵件服務(wù)不同之處在于,即時(shí)消息本身足夠的小,便于快速交付到即時(shí)收件箱。個(gè)體,用戶(hù)代理,即
25、時(shí)通訊系統(tǒng)的模型如圖4-1表示:圖4-1 即時(shí)通訊系統(tǒng)的一般模型即時(shí)通訊系統(tǒng)模型發(fā)信者或者即時(shí)收信箱的身份鑒別。不同的收信箱有不同的身份鑒別需求。不同的旁觀(guān)者有不同的身份鑒別的需求。服務(wù)內(nèi)部可能存在多服務(wù)器或者多代理服務(wù)器。也就是說(shuō)一個(gè)即時(shí)通訊服務(wù)的邏輯的連接,內(nèi)部可能有復(fù)雜的重定向和代理結(jié)構(gòu)。代理服務(wù)器即時(shí)收信箱的身份與其他服務(wù)器交換即時(shí)消息。服務(wù)并不需要一個(gè)服務(wù)器,可以通過(guò)發(fā)信者和即時(shí)收信箱之間的直接通訊實(shí)現(xiàn)。涉及與其他即時(shí)通訊服務(wù)的情況,可能會(huì)有定的內(nèi)部機(jī)制。個(gè)體還可以通過(guò)收件箱用戶(hù)代理設(shè)置交付規(guī)則(Delivery Rules)限制即時(shí)通訊服務(wù)把即時(shí)信息交付到即時(shí)收信箱。2) 即時(shí)通訊
26、系統(tǒng)服務(wù)拓?fù)淠P同F(xiàn)在不少即時(shí)通訊系統(tǒng)服務(wù)的內(nèi)部拓?fù)渲胁捎媚J揭?;也有極其個(gè)別系統(tǒng)在即時(shí)通訊服務(wù)上面采用模式二。模式一是一種非常成熟的模式,大多數(shù)TCP/IP應(yīng)用系統(tǒng),例如SMTP服務(wù)、DNS服務(wù)、WWW服務(wù)等都是使用這種模式。模式二,對(duì)于模式一是一個(gè)技術(shù)上的修正,雖然這個(gè)修正帶來(lái)了新的問(wèn)題,但是其實(shí)用性是不可質(zhì)疑的;WEB-MSN正是實(shí)用模式二作為服務(wù)模式;web-msn的服務(wù)是由服務(wù)器構(gòu)成的;web-msn中每個(gè)實(shí)體都由一個(gè)寄主服務(wù)器管理。個(gè)體必須向服務(wù)器注冊(cè),注冊(cè)后就有可以控制的發(fā)信者和即時(shí)收件箱。發(fā)信者是獨(dú)立于即時(shí)通訊服務(wù)外的實(shí)體,而即時(shí)收信箱則存在于寄主服務(wù)器中。WEB-MSN的通訊系
27、統(tǒng)中只有存在發(fā)送者和接收者兩類(lèi)實(shí)體。注冊(cè)后的用戶(hù)必須在服務(wù)器上建立登記表,才能知道其他用戶(hù)的存在,與其他用戶(hù)進(jìn)行交流。S1S3S2C1C2C3客戶(hù)端服務(wù)器星型結(jié)構(gòu)服務(wù)器服務(wù)器對(duì)等結(jié)構(gòu)模式一S1S3S2C1C2C3客戶(hù)端服務(wù)器星型結(jié)構(gòu)服務(wù)器服務(wù)器對(duì)等結(jié)構(gòu)客戶(hù)端客戶(hù)機(jī)對(duì)等結(jié)構(gòu)模式二CS服務(wù)器客戶(hù)端客戶(hù)端客戶(hù)端連接客戶(hù)端服務(wù)器連接服務(wù)器服務(wù)器連接圖4-2 即時(shí)通訊系統(tǒng)服務(wù)模型4.2 數(shù)據(jù)庫(kù)設(shè)計(jì)4.2.1 數(shù)據(jù)表設(shè)計(jì)設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)該具備數(shù)據(jù)庫(kù)的基本知識(shí)和數(shù)據(jù)庫(kù)設(shè)計(jì)技術(shù),計(jì)算機(jī)科學(xué)的基礎(chǔ)知識(shí)和程序設(shè)計(jì)的方法和技巧及軟件工程的原理和方法應(yīng)用領(lǐng)域的知識(shí)。根據(jù)本系統(tǒng)的特點(diǎn)和要求,通過(guò)對(duì)整個(gè)系統(tǒng)運(yùn)行過(guò)程和數(shù)據(jù)流程
28、分析,得出本系統(tǒng)的實(shí)體表:用戶(hù)信息表:users ;聊天信息數(shù)據(jù)表:message ;users變化監(jiān)控表:global_info 。經(jīng)過(guò)數(shù)據(jù)庫(kù)分析與設(shè)計(jì)得到數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)。本系統(tǒng)使用Microsoft SQL Server 20XX為數(shù)據(jù)庫(kù)開(kāi)發(fā)工具;創(chuàng)建名為msn數(shù)據(jù)庫(kù)根據(jù)各種功能的實(shí)現(xiàn)以及考慮到將來(lái)系統(tǒng)功能上的擴(kuò)展,設(shè)計(jì)如下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):表4-1 用戶(hù)信息數(shù)據(jù)表:users中文名稱(chēng)字段名字段類(lèi)型字段長(zhǎng)度是否允許為空備注登錄名usernamevarchar50not null主鍵用戶(hù)昵稱(chēng)nicknamevarchar50null密碼passwordvarchar50not null登錄
29、狀態(tài)statusint4not null最后登錄時(shí)間logintimedatetime8null最后注銷(xiāo)時(shí)間logouttimedatetime8null最后消息編號(hào)last_msg_idint4not null 表4-2 聊天信息數(shù)據(jù)表:message中文名稱(chēng)字段名字段類(lèi)型字段長(zhǎng)度是否允許為空備注消息編號(hào)msg_idint4not null主鍵發(fā)送者用戶(hù)名sendervarchar50not null接受者用戶(hù)名receivervarchar50not null消息內(nèi)容contentvarchar255not null發(fā)送時(shí)間sendtimedatetime8not null 表4-3 us
30、ers變化監(jiān)控表:global_info中文名稱(chēng)字段名字段類(lèi)型字段長(zhǎng)度是否允許為空備注4.2.2 存儲(chǔ)過(guò)程設(shè)計(jì)為了提高執(zhí)行效率,并且簡(jiǎn)化數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的復(fù)雜程度,本系統(tǒng)設(shè)計(jì)了相應(yīng)的存儲(chǔ)過(guò)程完成基本的數(shù)據(jù)庫(kù)相關(guān)功能。根據(jù)對(duì)本系統(tǒng)的分析共創(chuàng)建了5個(gè)基本的存儲(chǔ)過(guò)程:用戶(hù)登錄存儲(chǔ)過(guò)程:UserLogin ;用戶(hù)注銷(xiāo)存儲(chǔ)過(guò)程:UserLogout;發(fā)送消息存儲(chǔ)過(guò)程:SendMessage ;最近聊天記錄存儲(chǔ)過(guò)程:GetRecentMsg ;獲取最新消息存儲(chǔ)過(guò)程:GetNewMessage。1 用戶(hù)登錄存儲(chǔ)過(guò)程UserLogin實(shí)現(xiàn)用戶(hù)的登錄功能,如果成功登錄則返回0,反之則返回1;2 用戶(hù)注銷(xiāo)存儲(chǔ)過(guò)程Use
31、rLogout實(shí)現(xiàn)用戶(hù)的登出功能,如果成功登出則返回0,反之則返回1;3 發(fā)送消息存儲(chǔ)過(guò)程SendMessage 首先對(duì)發(fā)送者和接收者的用戶(hù)名進(jìn)行檢查,然后再插入新的聊天記錄;4 最近聊天記錄存儲(chǔ)過(guò)程:GetRecentMsg 的作用是返回最近兩個(gè)用戶(hù)之間的聊天記錄;5 獲取最新消息存儲(chǔ)過(guò)程GetNewMessage 根據(jù)數(shù)據(jù)庫(kù)message表中的msg_id字段判斷哪些是新消息,凡是消息ID大于msg_id字段的均是新消息。4.3 系統(tǒng)功能分析與設(shè)計(jì)本系統(tǒng)的主要任務(wù)是提供用戶(hù)之間實(shí)時(shí)的交流,方便用戶(hù)之間相互的溝通。1 系統(tǒng)登錄。登錄模塊采用基于標(biāo)準(zhǔn)的MVC架構(gòu)的開(kāi)發(fā)模式。與一般的登錄系統(tǒng)相似
32、,主要是對(duì)登錄用戶(hù)的身份進(jìn)行合法性驗(yàn)證。登錄狀態(tài)分為兩種:在線(xiàn)、隱身。根據(jù)自己的需求選擇登錄方式。2 登錄狀態(tài)切換。當(dāng)用戶(hù)登錄后還可以重新選擇登錄狀態(tài),通過(guò)選擇下拉列表的選項(xiàng)可以切換用戶(hù)的登錄狀態(tài)是在線(xiàn)或者隱身。或者單擊“注銷(xiāo)”按鈕,將注銷(xiāo)用戶(hù)的登錄。3 用戶(hù)列表查看。當(dāng)用戶(hù)登錄成功后,系統(tǒng)將顯示給用戶(hù)他的所有在線(xiàn)好友,并且實(shí)時(shí)的更新用戶(hù)列表:當(dāng)有好友登錄后將即時(shí)的顯示在用戶(hù)列表中;當(dāng)有好友臨時(shí)退出系統(tǒng)后將在用戶(hù)列表中消失。4 消息提示。我們?cè)O(shè)計(jì)了一個(gè)類(lèi)似于MSN提示框的小窗口,定時(shí)的檢查是否有新消息,如果有的話(huà)彈出這個(gè)窗口,用戶(hù)可以即時(shí)回復(fù)消息。5 查看近期消息。當(dāng)加載消息發(fā)送頁(yè)面的時(shí)候,會(huì)
33、首先加載若干條近期的聊天記錄,幫助用戶(hù)回顧以往的聊天內(nèi)容。6 發(fā)送消息。用戶(hù)選擇發(fā)送對(duì)象后,直接進(jìn)行發(fā)送。7 接收消息。在消息發(fā)送后接收者能夠?qū)崟r(shí)接收消息。 根據(jù)需求分析和功能說(shuō)明,開(kāi)始系統(tǒng)的圖形化建模,本系統(tǒng)的功能說(shuō)明圖4-3所示:圖4-3 系統(tǒng)功能說(shuō)明圖 web-msn即時(shí)通訊系統(tǒng)執(zhí)行者a) Client:web-msn登錄端,使用web-msn進(jìn)行即時(shí)通訊的人b) Server:web-msn服務(wù)端,對(duì)用戶(hù)進(jìn)行注冊(cè)、登錄、資料管理的角色c) DBServer:web-msn數(shù)據(jù)庫(kù)服務(wù)器,保存用戶(hù)數(shù)據(jù)的角色d) MsgSender:端對(duì)端傳輸消息或這文件時(shí)的發(fā)送端e) MsgReceive
34、r:端對(duì)端傳輸消息或者文件時(shí)的接受端其中,MsgSender和MsgReceiver從屬于Clientweb-msn即時(shí)通訊系統(tǒng)用例說(shuō)明a) 注冊(cè):使用者通過(guò)注冊(cè)成為web-msn用戶(hù);b) 登錄:連接服務(wù)器獲得服務(wù);c) 更改狀態(tài):更改自己在服務(wù)器的狀態(tài),狀態(tài)分為:在線(xiàn)、隱身;d) 更改資料:更改自己的資料并保存在數(shù)據(jù)庫(kù)服務(wù)器;e) 查找好友:從服務(wù)器獲得好友信息;f) 傳輸信息:傳送文本信息或者富文本信息給好友;g) 退出系統(tǒng):從服務(wù)器退出,取消服務(wù);4.4 系統(tǒng)模塊設(shè)計(jì)4.4.1 注冊(cè)模塊 圖4-4 注冊(cè)用例圖注冊(cè)用例圖用例說(shuō)明:填寫(xiě)注冊(cè)信息檢查信息格式新注冊(cè)申請(qǐng)傳輸注冊(cè)數(shù)據(jù)生成新帳號(hào)添
35、加新用戶(hù)命令在數(shù)據(jù)庫(kù)中添加新用戶(hù)4.4.2 登錄模塊圖4-5 登錄用例圖登錄用例圖用例說(shuō)明:a) 輸入登錄信息b) 發(fā)送登錄請(qǐng)求c) 驗(yàn)證登錄信息d) 傳輸好友列表e) 刷新在線(xiàn)用戶(hù)列表f) 通知好友上線(xiàn)g) 改變好友狀態(tài)h) 讀取用戶(hù)數(shù)據(jù)命令i) 從數(shù)據(jù)庫(kù)中讀取用戶(hù)信息4.4.3 傳輸信息模塊 圖4-6 傳輸信息用例圖在線(xiàn)傳輸信息用例圖用例:a) 選擇發(fā)送內(nèi)容b) 傳輸信息c) 顯示信息4.4.4 退出系統(tǒng)模塊 圖4-7 退出系統(tǒng)用例圖退出系統(tǒng)用例a) 退出web-msnb) 發(fā)送退出消息c) 刷新在線(xiàn)用戶(hù)列表d) 通知好友下線(xiàn)e) 改變好友狀態(tài)f) 更改用戶(hù)狀態(tài)命令g) 在數(shù)據(jù)庫(kù)中更改用戶(hù)
36、狀態(tài)數(shù)據(jù)5 系統(tǒng)實(shí)現(xiàn)5.1 發(fā)送消息功能實(shí)現(xiàn)為了實(shí)現(xiàn)發(fā)送消息的功能,在服務(wù)器端代碼中需要定義Ajax方法SendMessage,具體代碼如下: AjaxMethod()public void SendMessage(string strUsername, string strContent)/ 數(shù)據(jù)連接SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettingsConnStr);/ SQL命令SqlCommand cmd = conn.CreateCommand();cmd.CommandText = stri
37、ng.Format(SendMessage 0,1, 2,User.Identity.Name, strUsername, strContent);try/ 打開(kāi)數(shù)據(jù)連接conn.Open();/ 執(zhí)行SQL,發(fā)送消息cmd.ExecuteNonQuery();catch (SqlException)finally/ 關(guān)閉連接conn.Close();然后在客戶(hù)端編寫(xiě)getMessage函數(shù),調(diào)用服務(wù)器Ajax方法進(jìn)行消息的發(fā)送。/ 發(fā)送消息function sendMessage()/ 消息內(nèi)容輸入框var ta_content = el(content);/ 如果輸入內(nèi)容不為空if (ta
38、_content.value.length 0)/ 消息顯示區(qū)域 var div_recentMsg = el(recentMsg);/ 用戶(hù)名var username = document.location.search.split(=)1;/ 發(fā)送消息ch111.SendMsg.SendMessage(username, ta_content.value);/ 清空輸入框ta_content.value = ;/ 頁(yè)面跟隨輸入框滾動(dòng)ta_content.scrollIntoView(false);/ 獲取新消息getNewMessage();getMessage函數(shù)的代碼如下:5.2 接收
39、消息功能實(shí)現(xiàn)為了實(shí)現(xiàn)接收消息的功能,在服務(wù)器端代碼中需要定義Ajax方法GetNewMessage,具體代碼如下:AjaxMethod()public DataSet GetNewMessage()/ 返回的數(shù)據(jù)集DataSet ds = new DataSet();/ 數(shù)據(jù)連接SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettingsConnStr);/ SQL命令SqlCommand cmd = conn.CreateCommand();/ 數(shù)據(jù)適配器SqlDataAdapter da = new Sql
40、DataAdapter(cmd);try/ 向DataSet中填充消息數(shù)據(jù)da.Fill(ds); try/ 向DataSet中填充消息數(shù)據(jù)da.Fill(ds);catch (SqlException)finally/ 關(guān)閉連接conn.Close();return ds;然后在客戶(hù)端編寫(xiě)getNewMessage函數(shù),調(diào)用服務(wù)器Ajax方法進(jìn)行消息的發(fā)送。getNewMessage函數(shù)的代碼如下:function getNewMessage()/ 用戶(hù)名var username = document.location.search.split(=)1;/ 消息顯示區(qū)域var div_rec
41、entMsg = el(recentMsg);/ 獲取最新消息的數(shù)據(jù)表var dt = ch111.SendMsg.GetNewMessage().value.Tables0;for (var i = 0;i dt.Rows.length;i+) / 一條消息對(duì)應(yīng)與一個(gè)對(duì)象 var oneMsg = document.createElement(span);/ 消息發(fā)送者與發(fā)送對(duì)象 var strLine1 = dt.Rowsi.sender + 說(shuō): ( + dt.Rowsi.sendtime + );strLine1 = DealBrackets(strLine1);/ 消息內(nèi)容 var
42、strLine2 = dt.Rowsi.content;strLine2 = DealBrackets(strLine2);/ 顯示樣式oneMsg.innerHTML = + strLine1 + + strLine2 + ; oneMsg.style.padding = 2px 2px 2px 2px;oneMsg.style.color = (dt.Rowsi.sender = username) ? blue : red;oneMsg.style.fontFamily = Courier New , 宋體;/ 附加到DOMdiv_recentMsg.appen
43、dChild(oneMsg); / 主進(jìn)程循環(huán)function mainLoop()/ 獲取新消息getNewMessage();/ 每隔1秒檢查一次setTimeout(mainLoop(), 1000);/ 顯示最近的消息getRecentMsg();/ 定時(shí)更新消息列表mainLoop();6 測(cè)試由于開(kāi)發(fā)占據(jù)了我大部分的精力和時(shí)間,平時(shí)所作的測(cè)試也就是一些手工的調(diào)試和邊界的黑盒測(cè)試,在這里只是列舉我測(cè)試的一些范圍,不做詳細(xì)描敘。6.1 測(cè)試內(nèi)容 1注冊(cè)功能測(cè)試; 2在線(xiàn)好友實(shí)時(shí)更新測(cè)試3發(fā)送消息功能測(cè)試;4查看近期消息功能測(cè)試;5接收消息功能測(cè)試。6.2 測(cè)試結(jié)果以上的測(cè)試案例是單獨(dú)進(jìn)
44、行測(cè)試的,還需要進(jìn)一步的交叉案例測(cè)試。通過(guò)以上簡(jiǎn)單測(cè)試說(shuō)明了設(shè)計(jì)方法的正確性,它已經(jīng)初步符合了即時(shí)通訊系統(tǒng)的基本要求即時(shí),具有良好的檢測(cè)性能和準(zhǔn)確的檢測(cè)結(jié)果。但系統(tǒng)構(gòu)架和代碼設(shè)計(jì)還需要進(jìn)一步優(yōu)化,以提高系統(tǒng)的運(yùn)行效率,降低所耗的系統(tǒng)資源,為用戶(hù)提供更好的服務(wù)。結(jié) 論本次對(duì)即時(shí)通訊的課題研究涉及到了即時(shí)通訊協(xié)議的定制;即時(shí)通訊服務(wù)模式的探討; web-msn系統(tǒng)建模、設(shè)計(jì)到實(shí)現(xiàn)的一系列過(guò)程,重點(diǎn)講敘了Ajax 新技術(shù)的使用等知識(shí),也介紹了相關(guān)的社會(huì)科學(xué)理論以及與即時(shí)通訊軟件的緊密結(jié)合,縱觀(guān)即時(shí)通訊事業(yè)的壯大和發(fā)展,即時(shí)通訊的服務(wù)功能將會(huì)越來(lái)越豐富和完善,并必將更加深入地滲透到我們的日常生活中來(lái),
45、及時(shí)的研究即時(shí)通訊技術(shù),無(wú)論是對(duì)我們的研究還是生活,都將帶來(lái)相當(dāng)大的影響。由于時(shí)間的限制以及本能能力所及,web-msn的各種功能還只是處于初步實(shí)現(xiàn)階段,在接下來(lái)的時(shí)間里,如果有機(jī)會(huì)的話(huà),我將進(jìn)一步的深入和拓展web-msn的功能。下一步web-msn的發(fā)展將會(huì)重點(diǎn)放在某一個(gè)領(lǐng)域,比如說(shuō)教育業(yè),然后將此領(lǐng)域的相關(guān)特色與web-msn的功能緊密結(jié)合,做成一個(gè)專(zhuān)業(yè)的即時(shí)通訊軟件。參考文獻(xiàn)1 劉曉華.精通.NET核心技術(shù)M. 北京:電子工業(yè)出版社,20XX。2 馬軍. 精通ASP.NET2.0網(wǎng)絡(luò)應(yīng)用系統(tǒng)開(kāi)發(fā)M.北京:人民郵電出版社,20XX。3 馬萬(wàn)寶. ASP.NET技術(shù)詳解與應(yīng)用實(shí)例M. 北京:兵器工業(yè)出版社,20XX。4 施偉偉,張蓓. 征服Ajax Web 2.0快速入門(mén)與項(xiàng)目實(shí)踐M. 北京:人民郵電出版社,20XX。5 夏慧軍,魏雪輝. 深入淺出AjaxM. 北京:電子工業(yè)出版社,20XX。6 方睿,刁仁宏,吳四九等. 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)原理及應(yīng)用M. 成都:四川大學(xué)出版社,20XX。7 龍帥. 深入淺出SQL SERVER數(shù)據(jù)庫(kù)開(kāi)發(fā)M. 北京:中國(guó)青年出版社,20XX。 附 錄圖1 登錄界面 圖2 注冊(cè)界面 圖2 登錄后主界面圖3 即時(shí)彈出信息窗口圖4 聊天窗口致 謝本文是在陳麟和刁仁宏
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村合作改造合同范例
- 借款續(xù)借補(bǔ)充合同范例
- 出口苗木采購(gòu)合同范例
- 債權(quán)轉(zhuǎn)讓寫(xiě)合同范例
- 共享拖掛式房車(chē)在旅游線(xiàn)路中的應(yīng)用研究
- 辦公窗簾定做安裝合同范本
- 辦公樓拆除施工方案
- 借款給別人合同范例
- 凈水工程合同范例
- 不銹鋼定制合同范例
- 冠心病臨床路徑
- 詐騙案件授課PPT課件
- 基于PLC的電梯控制系統(tǒng)設(shè)計(jì)
- 口腔科急救預(yù)案培訓(xùn)課件
- 弗洛姆異化理論
- 園林噴灌工程施工方案(精編版)
- 碳納米管_ppt課件
- 【課件】第2課如何鑒賞美術(shù)作品課件-高中美術(shù)人教版(2019)美術(shù)鑒賞
- [康熙字典9畫(huà)五行屬金的字加解釋] 康熙字典五行屬金的字
- 托盤(pán)操作評(píng)分表
- 關(guān)于老年癡呆癥及其智能陪護(hù)設(shè)備的調(diào)查報(bào)告
評(píng)論
0/150
提交評(píng)論