版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、基于ajax的網(wǎng)絡聊天室的設計與實現(xiàn)摘 要如何更好地與他人溝通是人們普遍關心的問題。人們通過網(wǎng)站可以展示產(chǎn)品,了解與用戶和合作伙伴的最新發(fā)展,交流和溝通,建立聯(lián)系和開展電子商務。在線聊天系統(tǒng)作為一個網(wǎng)站的重要組成部分,為人與人之間的交流和交往提供了一個平臺。傳統(tǒng)的互聯(lián)網(wǎng)聊天室,以顯示在線用戶和用戶信息的實時傳送,需要定期刷新頁面。刷新頁面,不僅要占用一定的系統(tǒng)資源和網(wǎng)絡帶寬,也會出現(xiàn)“白屏”現(xiàn)象,這對良好的用戶體驗是非常不利的。 ajax是一個新的web應用,使用ajax技術的發(fā)展不僅解決了頁面刷新帶來的白屏問題,也減少了對服務器和網(wǎng)絡傳輸?shù)呢撦d。本系統(tǒng)采用了a ajax技術,數(shù)據(jù)庫服務器端采
2、用了sql server 2008作為數(shù)據(jù)庫的開發(fā),用c#語言編寫的無刷新的網(wǎng)絡聊天室。關鍵詞:ajax;網(wǎng)絡聊天室;無刷新;異步交互design and implementation of ajax-based chat roomabstracthow to communicate better with others is the general interest. through the website can show the products, the latest developments, exchange and communication with users and par
3、tners to establish contacts and e-commerce. online chat system constitute an important part of the site, to provide a platform for exchanges and contacts between people.traditional internet chat rooms in order to display online users and user messages sent in real time, the need to regularly refresh
4、 the page. page refresh not only to take up some system resources and network bandwidth, but there is also a black and white phenomenon is very detrimental to a good user experience. ajax is a new web application, the chat room system using ajax technology development not only solved the page refres
5、hes bring black and white issues, but also reduce the load on the server and network transmission.the system uses the a ajax technology, database server-side sql server 2008 as database development, written in c # refresh network chat rooms.key words: ajax;internet chat rooms;nofresh;asynchronous in
6、teraction目錄摘 要iabstractii1 緒論11.1 系統(tǒng)現(xiàn)狀11.2 國內(nèi)外主要研究成果11.3 課題的主要內(nèi)容及章節(jié)安排32系統(tǒng)開發(fā)環(huán)境和關鍵技術32.1 系統(tǒng)的開發(fā)環(huán)境42.2 關鍵技術42.2.1 a技術42.2.2 ajax技術62.2.2 a ajax技術112.2.3 數(shù)據(jù)庫技術112.2.4 c#語言123系統(tǒng)分析與設計123.1 系統(tǒng)分析133.1.1 聊天室功能需求分析133.1.2 聊天室功能性能分析133.2 系統(tǒng)運行環(huán)境133.3 系統(tǒng)設計133.3.1 系統(tǒng)結構133.3.2 實體及數(shù)據(jù)庫實現(xiàn)153.3.3 后臺功能模塊153.3.4 流程圖153.3
7、.5 客戶端與服務器端的相關設計164 系統(tǒng)實現(xiàn)184.1 聊天界面184.2 登錄界面184.3 前臺界面195 系統(tǒng)測試205.1 測試意義205.2 測試目標205.3測試方法205.4 測試用例20結 論22致 謝241 緒論1.1 系統(tǒng)現(xiàn)狀 在人們的生活中,信息技術的飛速發(fā)展正在發(fā)生深刻變化。人與人之間的對話是不再局限于面對面,網(wǎng)上聊天室提供了信息交流的另一個地方。傳統(tǒng)的聊天室,以顯示在線用戶和用戶信息的實時傳送,需要定期刷新頁面。刷新頁面,不僅要占用一定的系統(tǒng)資源和網(wǎng)絡帶寬,也會出現(xiàn)“白屏”的現(xiàn)象,這對良好的用戶體驗是非常不利的。而使用ajax技術開發(fā)的聊天室,不僅可以解決頁面刷新
8、帶來白屏的問題,也減少了對服務器和網(wǎng)絡傳輸?shù)呢撦d。隨著互聯(lián)網(wǎng)應用的普及,web應用以其良好的擴展性、易于部署、維護方便等優(yōu)點逐漸成為軟件開發(fā)的主流。早期的web應用采用的是同步交互過程【1】,即用戶首先向web服務器提交一個請求或行為呼叫,服務器接收到客戶請求后執(zhí)行相應處理操作,最后向用戶返回處理結果。服務器在處理請求時【2】【3】,用戶處于等待狀態(tài),有時如果超過了服務器響應時間,甚至返回“頁面不可用”等提示。另外,當我們只想改變頁面的部分數(shù)據(jù)時,用戶的請求會導致服務器重新返回整個頁面內(nèi)容,包括那些沒有改變的數(shù)據(jù),這不但增加了網(wǎng)絡傳輸?shù)臄?shù)據(jù)量,還影響了客戶端的響應時間,為什么我們不能“按需”獲
9、取數(shù)據(jù)呢?ajax技術可以很好的解決上述web應用中存在的問題。ajax技術是web2.0的核心之一,本質上是一種ria(richillternet application)技術。ria是指具有高度互動性和豐富用戶體驗的網(wǎng)絡應用程序,它既具有消息確認、無刷新頁面之下提供快捷的界面響應、拖放式等桌面應用程序的特點,同時又具有部署簡單、跨平臺等web應用程序的特點。ajax技術提供了客戶端與服務器異步通信的能力【6】,從而使用戶從請求一響應一再請求【3】的循環(huán)中解脫出來,同時降低了網(wǎng)絡傳輸?shù)臄?shù)據(jù)量,提高了客戶端的響應速度,改善了用戶使用體驗,使得web應用可以接近甚至達到類似“桌面應用”的效果。而
10、ajax有上述優(yōu)勢,例如google suggest,gmail,google map等等交互程序中都使用了異步通訊技術。不知不覺中,ajax應用程序占據(jù)了整個網(wǎng)絡的每一個角落??v觀所有的應用程序,更好的用戶體驗是其的共同目標,在瀏覽器中實現(xiàn)桌面用戶界面體驗是web開發(fā)的一種趨勢。ajax技術從谷歌到ibm,甲骨文,雅虎,bea系統(tǒng)公司,紅帽,novell公司獲得業(yè)界眾多的it巨頭的支持,其快速發(fā)展是值得期待的。技術創(chuàng)新和標準化是ajax技術發(fā)展的必由之路,而w3c已成立了工作小組,專門從事ajax的規(guī)范發(fā)展工作。1.2 國內(nèi)外主要研究成果ajax技術的精髓是用異步交互替代了傳統(tǒng)的同步交互,所
11、以當用戶操作時間大于服務器響應時間的時候,使用ajax的效果非常明顯。而當程序性能的瓶頸在于服務器響應時間的時候,ajax無法解決程序運行緩慢的問題。因此,ajax是更適合在網(wǎng)絡上的互動頻繁輕量級的應用程序。在ajax開發(fā)的應用程序中,google公司成功將ajax技術應用到他們的商業(yè)產(chǎn)品。google地圖和google suggest都應用了這項技術。當用戶使用谷歌地圖查看地圖(包括地圖的縮放和平移地圖),并沒有提交任何請求到服務器,你就可以瀏覽到地圖的各個部分。在這里,它是ajax技術的應用,使得地圖是不刷新的方式,但每個顯示原始數(shù)據(jù)的基礎上以增量方式顯示。在這種方式下,用戶覺得就像是在自
12、己的計算機上查看本地的地圖。微軟也在積極開發(fā)ajax應用程序:它將ajax技術應用到的msn space上面。當用戶使用msn space提交回復評論時,瀏覽器會暫時停頓,然后刷新顯示用戶提交的評論,這是應用了ajax的原理。目前,ajax應用最普遍的領域是gis-map方面。gis的區(qū)域搜索強調(diào)快速響應,ajax 的特點正好符合這種要求。在應用ajax技術開發(fā)過程當中,處于核心位置的ajax引擎實際上是一些復雜的javascript程序【7】。 隨著網(wǎng)絡應用和界面表現(xiàn)的復雜化,使用面向過程的javascript 語言描述表現(xiàn)邏輯將會變得很困難。同時, javascript的兼容性和調(diào)試都會成
13、為使用ajax技術的一個障礙。為了解決這些問題,開發(fā)人員已經(jīng)開發(fā)出了一些基于ajax技術的框架,方便了開發(fā)人員使用,有利于ajax 技術的進一步推廣。當然,任何技術都是有局限性的,ajax也不例外。ajax更新頁面無需刷新重載【9】【10】,這也使傳統(tǒng)的一些用戶交互行為變得不可用,如后退、前進和刷新等。另外,移動設備(如手機、pda等)現(xiàn)在還不能很好的支持ajax,ajax 對流媒體的支持也沒有java applet和flash這樣成熟的技術好。 因此,一些輔助的平臺和插件的開發(fā)也將是ajax技術應用當中重要的一部分。ajax把大量的運算從服務器轉移到了客戶端瀏覽器,這意味著瀏覽器將承受更大的
14、負擔,而不再是簡單的文檔顯示功能【8】。聊天室作為一個能夠吸引人氣的欄目,在現(xiàn)代網(wǎng)絡應用中隨處可見。它的作用是給不同的用戶提供一個交流信息的場所。用戶在聊天室中可以發(fā)布信息,就如同所有用戶都在一個個真正室內(nèi)聊天一樣。 傳統(tǒng)的聊天室程序一般設置在客戶端的網(wǎng)頁自動刷新。刷新在這樣的數(shù)據(jù)會帶來一些缺點,例如:每次刷新服務器應該重新獲取數(shù)據(jù)【14】,大大提高了服務器上的負載,此刷新過程正在進行,這將是非常嚴重的影響服務器的性能;每次刷新過程中會產(chǎn)生大量無用數(shù)據(jù),不斷刷新頁面,用戶在客戶端方面,將導致屏幕閃爍。解決屏幕閃動最重要的一條原則就是,將改動的地方顯示到客戶端,而那些不需要改動的地方則盡量不要讓
15、用戶感覺到變化。一個更好的解決辦法是使用ajax技術的無刷新聊天室應用【16】?,F(xiàn)在的聊天室通過四個主要功能模塊實現(xiàn)了聊天室中用戶登錄、注銷、環(huán)境設置、發(fā)送消息、讀取消息和查看在線用戶列表等。聊天室系統(tǒng)為用戶提供了聊天場所,操作員可對后臺網(wǎng)站的風格、廣告鏈接等進行設置;用戶可以根據(jù)個人的習慣選擇字體、文字顏色和表情等;前臺聊天室具有私聊的功能,私聊的內(nèi)容僅供私聊雙方查看;聊天者可自己手動清除聊天內(nèi)容。操作員可通過客戶端處理模塊獲取界面元素從而得到聊天內(nèi)容或與服務器交互更新客戶端頁面響應用戶事件。服務器端響應模塊可提供聊天室界面元素信息獲得提交數(shù)據(jù)或數(shù)據(jù)合法性的驗證。1) 基于cgi2) 基于j
16、avascript3) 基于activex 4) 基于asp的實現(xiàn)方案等在此列舉了這四種方案的獨到之處,場合選用,及各自所存在的缺點。php(personal home page)是英文“超級文本預處理語言”(php:hyper text preprocessor)的縮寫,是rasmus lerdorf推出的一種跨平臺無縫運行服務器端的html嵌入式腳本語言,它混合了c,java,perl語言,主要用于web服務器端的計算以及文字、文本處理。其最強大和最重要的特征是數(shù)據(jù)庫集成層,可完成一個含有數(shù)據(jù)庫的網(wǎng)功能的網(wǎng)頁。mysql是一個小型關系型數(shù)據(jù)庫管理系統(tǒng),其擁有體積小、速度快、總體擁有成本低,
17、開放源碼,支持多種操作系統(tǒng),支持多線程,充分利用cpu,優(yōu)化sql提高查詢速度提供tcp/ip、odbc和jdbc等多種數(shù)據(jù)庫連接途徑的優(yōu)點。就是把每個連上同一網(wǎng)頁的用戶傳送的發(fā)言數(shù)據(jù)儲存起來,然后將所有的發(fā)言數(shù)據(jù)傳給每一用戶。也就是說,用數(shù)據(jù)庫匯集每個人的發(fā)言,并將數(shù)據(jù)庫中的數(shù)據(jù)傳給每一個人就實現(xiàn)了聊天室的功能。為了優(yōu)化聊天室的后臺數(shù)據(jù)庫聊天室系統(tǒng)需要五個數(shù)據(jù)表:1) 聊天信息表 (chatinfo)2) 用戶信息表 (userinfo)3) 網(wǎng)站風格信息表 (stylfo)4) 廣告信息表 (advinfo)5) 廣告鏈接表 (advlink)1.3 課題的主要內(nèi)容及章節(jié)安排現(xiàn)在,多渠道的
18、信息源、網(wǎng)絡化的數(shù)據(jù)分布、快捷醫(yī)用的交互操作、智能化的分析決策等特點越來越成為衡量優(yōu)良聊天軟件的關鍵,因此,該網(wǎng)絡聊天室是基于c#語言運行于vs平臺上,利用的技術主要是a,使用配置文件作為數(shù)據(jù)管理。為實現(xiàn)和方便客戶端間通信,在客戶端進行了人性化的界面設計,用戶可以注冊號碼,登陸界面,具有私聊消息功能。第1章對本次課題的背景及意義、課題現(xiàn)狀、課題內(nèi)容與目標進行了深入的闡述。第 2 章介紹了系統(tǒng)的開發(fā)環(huán)境和關鍵技術,例如a技術,數(shù)據(jù)庫開發(fā),c#等等。第 3 章是系統(tǒng)分析與設計。將對系統(tǒng)進行需求分析,對組成系統(tǒng)的功能模塊進行劃分,對每個模塊將要實現(xiàn)的功能進行闡述和說明。對系統(tǒng)的結構進行設計,設計共享
19、數(shù)據(jù)結構。第4章是系統(tǒng)實現(xiàn),分別介紹了服務器端和客戶端每個功能的執(zhí)行過程,畫出主要模塊的流程圖。第 5 章介紹系統(tǒng)測試。最后,對本設計進行歸納總結,全面闡述本次設計中的體會。2 系統(tǒng)開發(fā)環(huán)境和關鍵技術2.1 系統(tǒng)的開發(fā)環(huán)境vs2010開發(fā)工具(如圖1.1)以及microsoft sql server 2008(如圖1.2)圖1.1 vs2010開發(fā)工具圖1.2 sql server 20082.2 關鍵技術2.2.1 a技術asp.net的前身asp技術,是在iis 2.0上首次推出,當時與 ado 1.0 一起推出,在iis 3.0發(fā)揚光大,成為服務器端應用程序的熱門開發(fā)工具,微軟還特別為它
20、量身打造了visual interdev開發(fā)工具,在1994年到2000年之間,asp技術已經(jīng)成為微軟推展windows nt 4.0平臺的關鍵技術之一,數(shù)以萬計的asp網(wǎng)站也是這個時候開始如雨后春筍般的出現(xiàn)在網(wǎng)絡上。它的簡單以及高度可定制化的能力,也是它能迅速崛起的原因之一。不過asp的缺點也逐漸的浮現(xiàn)出來: 意大利面型的程序開發(fā)方法,讓維護的難度提高很多,尤其是大型的asp應用程序。 直譯式的vbscript或jscript語言,讓效能有些許的受限。 延展性因為其基礎架構擴充性不足而受限,雖然有com元件可用,但開發(fā)一些特殊功能(像文件上傳)時,沒有來自內(nèi)置的支持,需要尋求第三方軟件商開發(fā)
21、的元件。 1997年時,微軟開始針對asp的缺點(尤其是意大利面型的程序開發(fā)方法)準備開始一個新項目來開發(fā),當時asp.net的主要領導人scott guthrie剛從杜克大學畢業(yè),他和iis團隊的mark anders經(jīng)理一起合作兩個月,開發(fā)出了下一代asp技術的原型,這個原型在1997年的圣誕節(jié)時被發(fā)展出來,并給予一個名稱:xsp,這個原型產(chǎn)品使用的是java語言。不過它馬上就被納入當時還在開發(fā)中的clr平臺,scott guthrie事后也認為將這個技術移植到當時的clr平臺,確實有很大的風險(huge risk),但當時的xsp團隊卻是以clr開發(fā)應用的第一個團隊。 為了將xsp移植到
22、clr中,xsp團隊將xsp的內(nèi)核程序全部以c#語言重新撰寫(在內(nèi)部的項目代號是 project cool,但是當時對公開場合是保密的),并且改名為asp+,作為asp技術的后繼者,并且也會提供一個簡單的移轉方法給asp開發(fā)人員。asp+首次的beta版本以及應用在pdc 2000中亮相,由bill gates主講keynote(即關鍵技術的概覽),由富士通公司展示使用cobol語言撰寫asp+應用程序,并且宣布它可以使用visual basic.net、c#、perl與python語言(后兩者由activestate公司開發(fā)的互通工具支持)來開發(fā)。 在2000年第二季時,微軟正式推動.net
23、策略,asp+也順理成章的改名asp.net,經(jīng)過四年的開發(fā),第一個版本的asp.net在2002年1月5日亮相(和.net framework 1.0),scott guthrie也成為asp.net的產(chǎn)品經(jīng)理(到現(xiàn)在已經(jīng)開發(fā)了數(shù)個微軟產(chǎn)品,像asp.net ajax和microsoft silverlight)。目前最新版本的 asp.net 4.0 及 .net framework 4.0 已經(jīng)在vs2010平臺內(nèi)應用。a開發(fā)模式的優(yōu)點世界級的工具支持 a架構師可以用microsoft公司最新的產(chǎn)品visual s開發(fā)環(huán)境進行開發(fā),這些僅是a強大化軟件支持的一小部分。強大性和適應性因為a
24、sp.net是基于通用語言的編譯運行的程序,所以它的強大性和適應性,可以使它運行在web應用軟件開發(fā)者的幾乎全部的平臺上。通用語言的基本庫,消息機制,數(shù)據(jù)接口的處理都能無縫的整合到asp.net的web應用中。asp.net同時也是language-independent(語言獨立化)的,所以,你可以選擇一種最適合你的語言來編寫你的程序,或者把你的程序用很多種語言來寫,現(xiàn)在已經(jīng)支持的有c#(c+和java的結合體),vb,jscript , c+、f+。將來,這樣的多種程序語言協(xié)同工作的能力保護您現(xiàn)在的基于com+開發(fā)的程序,能夠完整的移植向asp.net。簡單性和易學性asp.net使運行一
25、些很平常的任務如表單的提交客戶端的身份驗證、分布系統(tǒng)和網(wǎng)站配置變得非常簡單。高效可管理性asp.net使用一種字符基礎的,分級的配置系統(tǒng),虛擬服務器環(huán)境和應用程序的設置更加簡單。因為配置信息都保存在簡單文本中,新的設置有可能都不需要啟動本地的管理員工具就可以實現(xiàn)。這種被稱為zero local administration的哲學觀念使a的基于應用的開發(fā)更加具體和快捷。一個asp.net的應用程序在一臺服務器系統(tǒng)的安裝只需要簡單的拷貝一些必須的文件,不需要系統(tǒng)的重新啟動,一切就是這么簡單。多處理器環(huán)境的可靠性 asp.net已經(jīng)被刻意設計成為一種可以用于多處理器的開發(fā)工具,它在多處理器的環(huán)境下用
26、特殊的無縫連接技術,將很大的提高運行速度。即使你現(xiàn)在的asp.net應用軟件是為一個處理器開發(fā)的,將來多處理器運行時不需要任何改變都能提高他們的效能,但現(xiàn)在的asp卻做不到這一點。自定義性和可擴展性 asp.net設計時考慮了讓網(wǎng)站開發(fā)人員可以在自己的代碼中自己定義plug-in的模塊。這與原來的包含關系不同,asp.net可以加入自己定義的任何組件。網(wǎng)站程序的開發(fā)從來沒有這么簡單過。安全性基于windows認證技術和每應用程序配置,你可以確保你的原程序是絕對安全的。 asp.net 的語法在很大程度上與 asp 兼容,同時它還提供一種新的編程模型和結構,可生成伸縮性和穩(wěn)定性更好的應用程序,并
27、提供更好的安全保護??梢酝ㄟ^在現(xiàn)有 asp 應用程序中逐漸添加 asp.net 功能,隨時增強 asp 應用程序的功能。 asp.net 是一個已編譯的、基于 .net 的環(huán)境,把基于通用語言的程序在服務器上運行。將程序在服務器端首次運行時進行編譯,比asp即時解釋程序速度上要快很多.而且是可以用任何與 .net 兼容的語言(包括 visual basic .net、c# 和 jscript .net.)創(chuàng)作應用程序。另外,任何 asp.net 應用程序都可以使用整個 .net framework。開發(fā)人員可以方便地獲得這些技術的優(yōu)點,其中包括托管的公共語言運行庫環(huán)境、類型安全、繼承等等。 a
28、sp.net 可以無縫地與 html 編輯器和其他編程工具(包括 microsoft visual studio .net)一起工作。這不僅使得 web 開發(fā)更加方便,而且還能提供這些工具必須提供的所有優(yōu)點,包括開發(fā)人員可以用來將服務器控件拖放到 web 頁的 gui 和完全集成的調(diào)試支持。2.2.2 ajax技術ajax 指異步 javascript 及 xml(asynchronous javascript and xml)。 web應用的交互如flickr,backpack和google在這方面已經(jīng)有質的飛躍。這個術語源自描述從基于web的應用到基于數(shù)據(jù)的應用的轉換。在基于數(shù)據(jù)的應用中,
29、用戶需求的數(shù)據(jù)如聯(lián)系人列表,可以從獨立于實際網(wǎng)頁的服務端取得并且可以被動態(tài)地寫入網(wǎng)頁中,給緩慢的web應用體驗著色使之像桌面應用一樣。 ajax的核心【17【19】是javascript對象xmlhttprequest。該對象在internet explorer 5中首次引入,它是一種支持異步請求的技術。簡而言之,xmlhttprequest使您可以使用javascript向服務器提出請求并處理響應,而不阻塞用戶。在基于ajax的應用中,并不是所有技術全部用到,但是xmlhttprequest對象卻是實現(xiàn)ajax技術的最核心技術。xmlhttprequest對象負責將用戶信息以異步通信的方式發(fā)
30、送給服務器端,并接收服務器端返回的響應信息和數(shù)據(jù)。javascript本身并不能向服務器發(fā)送請求,可以有兩種方法:一種是通過xmlhttprequest對象發(fā)送請求,另一種是使用widows.open()方法重新打開一個頁面向服務器提交請求。不同的是,前者是異步交互方式,后者是同步交互方式。與傳統(tǒng)的web模型相比,ajax的運行是建立在異步交互的基礎上的,異步交互的基本思想是盡量減少等待的時間?;赼jax的web應用開發(fā)模型(如圖1所示),只傳輸和更新需要的數(shù)據(jù),而不用刷新整個頁面,也就是通過網(wǎng)絡傳輸?shù)牟皇怯脩粽嬲枰臄?shù)據(jù),這樣的工作模型不僅加快了用戶請求的響應速度,還避免了刷新頁面帶來的
31、屏幕閃爍。ajax 不是一種新的編程語言,而是一種用于創(chuàng)建更好更快以及交互性更強的 web 應用程序的技術。 通過 ajax,您的 javascript 可使用 javascript 的 xmlhttprequest 對象來直接與服務器進行通信。通過這個對象,您的 javascript 可在不重載頁面的情況與 web 服務器交換數(shù)據(jù)。 ajax 在瀏覽器與 web 服務器之間使用異步數(shù)據(jù)傳輸(http 請求),這樣就可使網(wǎng)頁從服務器請求少量的信息,而不是整個頁面。 ajax 可使因特網(wǎng)應用程序更小、更快,更友好。 ajax 是一種獨立于 web 服務器軟件的瀏覽器技術。ajax 基于下列 we
32、b 標準: javascript xml html css 在 ajax 中使用的 web 標準已被良好定義,并被所有的主流瀏覽器支持。ajax 應用程序獨立于瀏覽器和平臺。 web 應用程序較桌面應用程序有諸多優(yōu)勢;它們能夠涉及廣大的用戶,它們更易安裝及維護,也更易開發(fā)。 不過,因特網(wǎng)應用程序并不像傳統(tǒng)的桌面應用程序那樣完善且友。通過 ajax,因特網(wǎng)應用程序可以變得更完善,更友好。該技術在1998年前后得到了應用。允許客戶端腳本發(fā)送http請求(xmlhttp)的第一個組件由outlook web access小組寫成。該組件原屬于微軟exchange server,并且迅速地成為了int
33、ernet explorer 4.0的一部分。部分觀察家認為,outlook web access是第一個應用了ajax技術的成功的商業(yè)應用程序,并成為包括oddpost的網(wǎng)絡郵件產(chǎn)品在內(nèi)的許多產(chǎn)品的領頭羊。但是,2005年初,許多事件使得ajax被大眾所接受。google在它著名的交互應用程序中使用了異步通訊,如google討論組、google地圖、google搜索建議、gmail等。ajax這個詞由ajax: a new approach to web applications一文所創(chuàng),該文的迅速流傳提高了人們使用該項技術的意識。另外,對mozilla/gecko的支持使得該技術走向成熟,
34、變得更為易用。 ajax前景非常樂觀,可以提高系統(tǒng)性能,優(yōu)化用戶界面。ajax現(xiàn)有直接框架ajaxpro,可以引入ajaxpro.2.dll文件,可以直接在前臺頁面js調(diào)用后臺頁面的方法。但此框架與form驗證有沖突。另外微軟也引入了ajax組件,需要添加ajaxcontroltoolkit.dll文件,可以在控件列表中出現(xiàn)相關控件。隨著ajax迅速地引人注目起來,我想開發(fā)人員對這種技術的期待也迅速地增加。就像任何新技術,ajax的興旺也需要一整個開發(fā)工具/編程語言及相關技術系統(tǒng)來支撐。 主要包含的技術:基 web標準(standards-based presentation)xhtml+cs
35、s的表示; 使用 dom(document object model)進行動態(tài)顯示及交互; 使用 xml 和 xslt 進行數(shù)據(jù)交換及相關操作; 使用 xmlhttprequest 進行異步數(shù)據(jù)查詢、檢索; 使用 javascript 將所有的東西綁定在一起。 類似于dhtml或lamp,ajax不是指一種單一的技術,而是有機地利用了一系列相關的技術。事實上,一些基于ajax的“派生/合成”式(derivative/composite)的技術正在出現(xiàn),如“aflax”。 ajax的應用使用支持以上技術的web瀏覽器作為運行平臺。這些瀏覽器目前包括: google chrome、mozilla、
36、firefox、internet explorer、opera、konqueror及safari。但是opera不支持xsl格式對象,也不支持xslt。 javascript如名字所示,ajax的概念中最重要而最易被忽視的是它也是一種javascript編程語言。javascript是一種粘合劑使ajax應用的各部分集成在一起。在大部分時間,javascript通常被服務端開發(fā)人員認為是一種企業(yè)級應用不需要使用的東西應該盡力避免。這種觀點來自以前編寫javascript代碼的經(jīng)歷:繁雜而又易出錯的語言。類似的,它也被認為將應用邏輯任意地散布在服務端和客戶端中,這使得問題很難被發(fā)現(xiàn)而且代碼很難重
37、用。在ajax中javascript主要被用來傳遞用戶界面上的數(shù)據(jù)到服務端并返回結果。xmlhttprequest對象用來響應通過http傳遞的數(shù)據(jù),一旦數(shù)據(jù)返回到客戶端就可以立刻使用dom將數(shù)據(jù)放到網(wǎng)面上。 xmlhttprequestxmlhttprequest對象在大部分瀏覽器上已經(jīng)實現(xiàn)而且擁有一個簡單的接口允許數(shù)據(jù)從客戶端傳遞到服務端,但并不會打斷用戶當前的操作。使用xmlhttprequest傳送的數(shù)據(jù)可以是任何格式,雖然從名字上建議是xml格式的數(shù)據(jù)。 開發(fā)人員應該已經(jīng)熟悉了許多其他xml相關的技術。xpath可以訪問xml文檔中的數(shù)據(jù),但理解xml dom是必須的。類似的,xsl
38、t是最簡單而快速的從xml數(shù)據(jù)生成html或xml的方式。許多開發(fā)人員已經(jīng)熟悉xpath和xslt,因此ajax選擇xml作為數(shù)據(jù)交換格式是有意義的。xslt可以被用在客戶端和服務端,它能夠減少大量的用javascript編寫的應用邏輯。 css簡介為了正確的瀏覽ajax應用,css是一種ajax開發(fā)人員所需要的重要武器。css提供了從內(nèi)容中分離應用樣式和設計的機制。雖然css在ajax應用中扮演至關重要的角色,但它也是構建跨瀏覽器應用的一大阻礙,因為不同的瀏覽器廠商支持各種不同的css級別。 服務器端不像在客戶端,在服務端ajax應用還是使用建立在如java,.net和php語言基礎上機制;
39、并沒有改變這個領域中的主要方式。 既然如此,我們對ruby on rails框架的興趣也就迅速增加了。在一年多以前,ruby on rails已經(jīng)吸引了大量開發(fā)人員基于其強大功能來構建web和ajax應用。雖然目前還有很多快速應用開發(fā)工具存在,ruby on rails看起來已經(jīng)儲備了簡化構建ajax應用的能力。 調(diào)試問題在實際構建ajax應用中,你需要的不只是文本編輯器。既然javascript是非編譯的,它可以容易地編寫和運行在瀏覽器中。然而,許多工具提供了有用的擴展如語法高亮和智能完成。 不同的ide提供了對javascript支持的不同等級。來自jetbrains的intellij i
40、dea是一個用來javascript開發(fā)的更好的ide,雖然許多開發(fā)人員也喜歡microsofts visual studio產(chǎn)品(允諾會在最新的版本中改善對ajax的支持)。eclipse包含了兩個免費的javascript編輯器插件和一個商業(yè)的來自activestat的komodo ide。 另一個javascript和ajax開發(fā)中的問題是調(diào)試困難。不同的瀏覽器提供不同的通常是隱藏的運行時錯誤信息,而javascript的缺陷如雙重變量賦值(通常是由于缺少數(shù)據(jù)類型)使得調(diào)試更加困難。在ajax的開發(fā)中,調(diào)試就更復雜了,因為其需要標識究竟是客戶端還是服務端產(chǎn)生的錯誤。在過去,javascr
41、ipt調(diào)試的方法是刪除所有代碼然后一行行的增加直到錯誤出現(xiàn)?,F(xiàn)在,更多開發(fā)人員回到為ie準備的microsoft script debugger和為mozilla瀏覽器準備的venkman。 瀏覽器兼容性javascript編程的最大問題來自不同的瀏覽器對各種技術和標準的支持。構建一個運行在不同瀏覽器(如ie和火狐)是一個困難的任務。因此幾種ajax javascript框架或者生成基于服務端邏輯或標記庫的javascript,或者提供符合跨瀏覽器ajax開發(fā)的客戶端javascript庫。 這些框架給開發(fā)人員更多的空間使得他們不需要擔心跨瀏覽器的問題。雖然這些框架提升了開發(fā)人員構建應用的能力
42、,但由于廠商已經(jīng)開發(fā)了更細節(jié)的用戶界面的打包組件解決方案,因此在ajax組件市場中需要考慮一些其他因素。例如提供通用用戶界面的組件如組合框和數(shù)據(jù)柵格的幾個廠商,都可以被用來在應用中創(chuàng)建良好的通過類似電子數(shù)據(jù)表方式來查看和編輯數(shù)據(jù)的體驗。但這些組件不僅是封裝了組件的用戶界面而且包括與服務端數(shù)據(jù)的通訊方式,這些組件通常使用基于標記方式來實現(xiàn)如或jsf控件。ajax優(yōu)點傳統(tǒng)的web應用允許用戶填寫表單(form),當提交表單時就向web服務器發(fā)送一個請求。服務器接收并處理傳來的表單,然後返回一個新的網(wǎng)頁。這個做法浪費了許多帶寬,因為在前後兩個頁面中的大部分html代碼往往是相同的。由于每次應用的交互
43、都需要向服務器發(fā)送請求,應用的響應時間就依賴于服務器的響應時間。這導致了用戶界面的響應比本地應用慢得多。 與此不同,ajax應用可以僅向服務器發(fā)送并取回必需的數(shù)據(jù),它使用soap或其它一些基于xml的web service接口,并在客戶端采用javascript處理來自服務器的響應。因此在服務器和瀏覽器之間交換的數(shù)據(jù)大量減少,結果我們就能看到響應更快的應用。同時很多的處理工作可以在發(fā)出請求的客戶端機器上完成,所以web服務器的處理時間也減少了。 使用ajax的最大優(yōu)點【4】【5】,就是能在不更新整個頁面的前提下維護數(shù)據(jù)。這使得web應用程序更為迅捷地回應用戶動作,并避免了在網(wǎng)絡上發(fā)送那些沒有改
44、變過的信息。 ajax不需要任何瀏覽器插件,但需要用戶允許javascript在瀏覽器上執(zhí)行。就像dhtml應用程序那樣,ajax應用程序必須在眾多不同的瀏覽器和平臺上經(jīng)過嚴格的測試。隨著ajax的成熟,一些簡化ajax使用方法的程序庫也相繼問世。同樣,也出現(xiàn)了另一種輔助程序設計的技術,為那些不支持javascript的用戶提供替代功能。ajax缺點對應用ajax最主要的批評就是,它可能破壞瀏覽器后退按鈕的正常行為。在動態(tài)更新頁面的情況下,用戶無法回到前一個頁面狀態(tài),這是因為瀏覽器僅能記下歷史記錄中的靜態(tài)頁面。一個被完整讀入的頁面與一個已經(jīng)被動態(tài)修改過的頁面之間的差別非常微妙;用戶通常都希望單
45、擊后退按鈕,就能夠取消他們的前一次操作,但是在ajax應用程序中,卻無法這樣做。不過開發(fā)者已想出了種種辦法來解決這個問題,當中大多數(shù)都是在用戶單擊后退按鈕訪問歷史記錄時,通過建立或使用一個隱藏的iframe來重現(xiàn)頁面上的變更。(例如,當用戶在google maps中單擊后退時,它在一個隱藏的iframe中進行搜索,然后將搜索結果反映到ajax元素上,以便將應用程序狀態(tài)恢復到當時的狀態(tài)。) 一個相關的觀點認為,使用動態(tài)頁面更新使得用戶難于將某個特定的狀態(tài)保存到收藏夾中。該問題的解決方案也已出現(xiàn),大部分都使用url片斷標識符(通常被稱為錨點,即url中#后面的部分)來保持跟蹤,允許用戶回到指定的某
46、個應用程序狀態(tài)。(許多瀏覽器允許javascript動態(tài)更新錨點,這使得ajax應用程序能夠在更新顯示內(nèi)容的同時更新錨點。)這些解決方案也同時解決了許多關于不支持后退按鈕的爭論。 進行ajax開發(fā)時,網(wǎng)絡延遲即用戶發(fā)出請求到服務器發(fā)出響應之間的間隔需要慎重考慮。不給予用戶明確的回應 ,沒有恰當?shù)念A讀數(shù)據(jù) ,或者對xmlhttprequest的不恰當處理,都會使用戶感到延遲,這是用戶不欲看到的,也是他們無法理解的。通常的解決方案是,使用一個可視化的組件來告訴用戶系統(tǒng)正在進行后臺操作并且正在讀取數(shù)據(jù)和內(nèi)容。 一些手持設備(如手機、pda等)現(xiàn)在還不能很好的支持ajax; 用javascript作的
47、ajax引擎,javascript的兼容性和debug都是讓人頭痛的事; ajax的無刷新重載,由于頁面的變化沒有刷新重載那么明顯,所以容易給用戶帶來困擾用戶不太清楚現(xiàn)在的數(shù)據(jù)是新的還是已經(jīng)更新過的;現(xiàn)有的解決有:在相關位置提示、數(shù)據(jù)更新的區(qū)域設計得比較明顯、數(shù)據(jù)更新后給用戶提示等; 對串流媒體的支持沒有flash、java applet好2.2.2 a ajax技術atlas是一個新的web技術開發(fā)包,它集成了一套非常大的客戶端腳本庫使得與功能豐富的、基于服務器開發(fā)平臺的 asp.net2.0結合在一起,”atlas”能讓你開發(fā)的web應用能夠通過直接調(diào)用web服務器來更新一個web頁面的數(shù)
48、據(jù)不需要在頁面往返傳送(也就是不需要多次刷新頁面)。使用”atlas”,你能最大地利用asp.net和服務器端代碼在瀏覽器中來做許多工作,使得有更加豐富的用戶體驗。 asp.net 在2007年初推出了其第一個正式版本,并將atlas更名為asp.net ajax,對應服務器端和客戶端分別對應有asp.net服務器端編程模型和asp.net客戶端編程模型,前者包含asp.net 2.0 ajax extensions和后者包含microsoft ajax libray。 asp.net ajax是一個完整的開發(fā)框架,其服務器端編程模型相對于客戶端編程模型較為簡單,而且容易與現(xiàn)有的asp.net
49、程序相結合,通常實現(xiàn)復雜的功能只需要在頁面中拖幾個控件,而不必了解深層次的工作原理,除此之外服務器端編程的asp.net ajax control toolkit含有大量的獨立ajax控件和對asp.net原有服務器控件的ajax功能擴展,實現(xiàn)起來也非常簡單。但是魚與熊掌不可兼得,服務器端編程相對于客戶端編程在執(zhí)行效率和可控性上有較大差距。2.2.3 數(shù)據(jù)庫技術sql server是一個關系型數(shù)據(jù)庫引擎,只要一套系統(tǒng)就既能支持小型數(shù)據(jù)庫,也能支持企業(yè)級大型數(shù)據(jù)庫。數(shù)據(jù)庫系統(tǒng)的管理工作包括許多富于挑戰(zhàn)性的任務,特別是運行性能的管理工作。它采用了多線程技術,支持存儲過程,采用基于成本的優(yōu)化技術,在
50、核心層實現(xiàn)數(shù)據(jù)完整性約束,并具有很強的安全保密性。它的工作主要是負責高速計算,數(shù)據(jù)管理,安全性及事務管理。sql server2008在sql server7.0的基礎上新增了許多的功能,使得用戶能更方便、更快捷的管理數(shù)據(jù)庫和開發(fā)應用程序。sql server2008最常用的是企業(yè)管理器。通過企業(yè)管理器可以方便的可視化的建立起數(shù)據(jù)庫系統(tǒng),從而可以在對sql不是很精通的情況下,一樣建立起一個良好的數(shù)據(jù)庫來。企業(yè)管理器是一個集成化的數(shù)據(jù)庫操作環(huán)境,幾乎所有的數(shù)據(jù)庫操作都可以在這里里面完成。它是sql server 2008的主要管理工具,提供了一個遵從微軟管理控制臺的用戶界面,使用戶可以進行如下的
51、操作:定義運行sql server的服務器組。將個別服務器注冊到組中。為每個已注冊的服務器配置所有sql server選項。在每個已注冊的服務器中創(chuàng)建并管理所有sql server數(shù)據(jù)庫、對象、登錄、用戶和權限。在每個已注冊的服務器上定義并執(zhí)行所有sql server管理任務。通過調(diào)用sql查詢分析器,交互的設計并測試sql語句、批處理和腳本。調(diào)用為sql server定義的各種向導。結構化查詢語言sql(structured query language)是一種介于關系代數(shù)與關系演算之間的語言,其功能包括查詢、操縱、定義和控制4個方面,是一種通過的、功能極強的關系數(shù)據(jù)庫語言。目前已成為關系數(shù)
52、據(jù)庫的標準語言。常用的功能包括數(shù)據(jù)定義、查詢、數(shù)據(jù)更新和視圖。要在良好的sql server方案中實現(xiàn)最優(yōu)的性能,最關鍵的是要有1個很好的數(shù)據(jù)庫設計方案。在實際工作中,許多sql server方案往往是由于數(shù)據(jù)庫設計得不好導致性能很差。所以,要實現(xiàn)良好的數(shù)據(jù)庫設計就必須考慮這些問題。2.2.4 c#語言c#是微軟(microsoft)為net framework量身訂做的程序語言,微軟公司在2000年6月發(fā)布的一種新的編程語言。c#擁有c/c+的強大功能以及visual basic簡易使用的特性,是第一個組件導向(component-oriented)的程序語言,和c+與java一樣為對象導向
53、(object-oriented)程序語言。它將軟件開發(fā)中的邏輯分成4大部分:商業(yè)外觀層(businessfacade),商業(yè)規(guī)則層(businessrules),數(shù)據(jù)訪問層(dataaccess),model層。正是由于c#面向對象的卓越設計,使它成為構建各類組件的理想之選無論是高級的商業(yè)對象還是系統(tǒng)級的應用程序。使用簡單的c#語言結構,這些組件可以方便的轉化為xml網(wǎng)絡服務,從而使它們可以由任何語言在任何操作系統(tǒng)上通過internet進行調(diào)用。 最重要的是,c#使得c+程序員可以高效的開發(fā)程序,而絕不損失c/c+原有的強大的功能。因為這種繼承關系,c#與c/c+具有極大的相似性,熟悉類似語
54、言的開發(fā)者可以很快的轉向c#。3 系統(tǒng)分析與設計3.1 系統(tǒng)分析3.1.1 聊天室功能需求分析用戶登錄聊天室;用戶可以設置自己的名字;用戶可以發(fā)布信息;用戶可以查看其他所有人發(fā)布的信息;能夠公開聊天、私下聊天等等;用戶可以選擇表情在信息中發(fā)布;可以查看在線人員名單3.1.2 聊天室功能性能分析普通用戶能夠登錄的聊天室進行文本的聊天,能夠方便的實現(xiàn)公共交談、選擇顏色、添加表情、進行私聊等,新用戶注冊時能夠保證用戶昵稱的唯一性??梢杂胊jax實現(xiàn)無刷新操作。3.2 系統(tǒng)運行環(huán)境系統(tǒng)采用了visual studio.net設計,故可以運行在所有支持.net虛擬機的系統(tǒng)中。開發(fā)工具:vs2010+sq
55、l2008 開發(fā)語言:c#3.3 系統(tǒng)設計3.3.1 系統(tǒng)結構ajax聊天室的三層結構如圖3.1所示:數(shù)據(jù)庫前臺界面前臺功能模塊請求控制器后臺功能模塊圖3.1 ajax聊天室三層結構聊天室首頁(default.aspx)聊天室主界面(chatroom.aspx)后臺處理(server.aspx)公共文件style.cssajaxfunction.js獲取用戶列表執(zhí)行管理操作獲取聊天信息圖3.2 聊天室具體實現(xiàn)模塊其中數(shù)據(jù)庫負責存儲用戶和留言數(shù)據(jù)。程序服務端程序包括請求控制器和后臺功能模塊兩部分。請求控制器負責處理前臺程序發(fā)過來的請求并調(diào)用后臺功能模塊進行處理,然后返回處理結果。后臺功能模塊提供
56、了尸體封裝和邏輯處理。聊天室的前臺部分包括前臺界面和前臺功能模塊,前臺界面提供了用戶數(shù)據(jù)的輸入輸出接口。前臺功能模塊定義了實現(xiàn)聊天室各功能的腳本代碼,其被用戶事件驅動并與后臺的請求控制器進行交互。3.3.2 實體及數(shù)據(jù)庫實現(xiàn)按照需求,確定了用戶及消息兩個實體,其包含的屬性及實體間的關系如圖3.3所示:userinfopk id username chatlastinfochatinfopk username user_from user_to content ; color send time圖3.3 設計實體與數(shù)據(jù)庫3.3.3 后臺功能模塊后臺功能模塊提供實體的封裝和相關的邏輯處理,按照需求該模塊由數(shù)據(jù)操作類(db),用戶類(user),消息類組成(message)。3.3.4 流程圖只有充分地了解了聊天程序的工作流程,才能對整個系統(tǒng)的理解更加深刻,聊天程序的工作流程如圖3.4所示。登錄聊天室初始化聊天室數(shù)據(jù)存儲離開聊天室交換數(shù)據(jù)圖3.4 聊天室設計流程圖3.3.5 客戶端與服務器端的相關設計聊天系統(tǒng)以用戶為應用對象,經(jīng)過各方面需求分析,該系統(tǒng)主要由服務器端和客戶端以及請求服
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年全球玻璃棉行業(yè)供需趨勢及未來發(fā)展策略分析報告
- 2024-2030年全球及中國超聲波驅鼠器行業(yè)銷售動態(tài)及競爭趨勢預測報告
- 2024-2030年全球及中國肺模擬器行業(yè)發(fā)展前景及投資趨勢預測報告
- 2024-2030年全球及中國生物樣品袋行業(yè)運營動態(tài)及投資前景預測報告
- 2024-2030年全球及中國橡膠內(nèi)襯消防軟管行業(yè)產(chǎn)銷形勢及供應情況預測報告
- 2024-2030年全球及中國捆扎分配器行業(yè)競爭態(tài)勢及發(fā)展前景預測報告
- 2024-2030年全球及中國尺寸測量工具行業(yè)銷售動態(tài)及競爭前景預測報告
- 2024-2030年全球及中國商用臺下式洗杯機行業(yè)需求態(tài)勢及競爭格局分析報告
- 2024-2030年全球及中國助睡眠噴霧行業(yè)營銷動態(tài)及盈利前景預測報告
- 2024-2030年全球及中國PVC游戲墊行業(yè)競爭態(tài)勢及銷售渠道策略報告
- 低血糖暈厥應急演練預案
- Unit 1 Making friends Part B(說課稿)-2024-2025學年人教PEP版(2024)英語三年級上冊
- 《涉江采芙蓉》 課件高中語文統(tǒng)編版必修上冊
- 2024年事業(yè)單位考試職業(yè)能力傾向測驗試題與參考答案
- 保定學院《自然語言處理》2022-2023學年第一學期期末試卷
- 2024年水稻種項目可行性研究報告
- 供應商質量管理培訓課程
- 阿膠的課件教學課件
- 登高作業(yè)安全
- 口腔營銷技能培訓課件
- 2024年高考真題-政治(江蘇卷) 含答案
評論
0/150
提交評論