




已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1 基于WebServices簡易網(wǎng)絡(luò)聊天工具的設(shè)計與實現(xiàn) 東南大學(xué)成賢學(xué)院計算機工程系 2 學(xué)習(xí)目標(biāo) 掌握完整項目開發(fā)的流程 掌握動態(tài)網(wǎng)站分層設(shè)計模式 掌握LINQtoSQL類的使用 掌握傳遞二進制文件的Web方法 掌握Web服務(wù)中用戶狀態(tài)的管理 3 內(nèi)容摘要 本次課程實現(xiàn)一個類似QQ的網(wǎng)絡(luò)聊天軟件的功能 服務(wù)端采用WebServices提供技術(shù)支持 客戶端采用Windows窗體 為用戶提供網(wǎng)絡(luò)聊天的簡單功能 4 系統(tǒng)測試 5 需求分析 1 聊天工具主要為用戶服務(wù) 所以必須有好友管理模塊 包含 添加好友 刪除好友 需要自己開發(fā) 等 并且還要有好友關(guān)系 我是你的好友不一定你也是我的好友 好友關(guān)系具有單向性 2 發(fā)送聊天信息 3 發(fā)送文件 這里限制文件大小10KB 6 具體功能 1 用戶注冊 用戶想要登陸系統(tǒng)必須先注冊 2 用戶登陸 登陸成功后才能添加好友聊天 3 添加好友 登陸成功后需要添加其他在線用戶為好友 條件是 必須是在線用戶 不能已經(jīng)是好友還要添加 4 好友驗證 當(dāng)接收到添加好友的請求時 進行選擇是否同意 同意則該好友出現(xiàn)在自己的好友列表 拒絕則請求添加好友失敗 5 發(fā)送消息 登陸用戶必須向自己的好友才能發(fā)送信息 6 發(fā)送文件 登陸用戶可以向好友發(fā)送小于10KB的文件 好友是否接收可以選擇 7 系統(tǒng)功能圖 8 系統(tǒng)結(jié)構(gòu)設(shè)計 應(yīng)用程序架構(gòu)采用C S結(jié)構(gòu) 服務(wù)端采用WebServices作為服務(wù)的技術(shù)支持 客戶端采用WindowsForm實現(xiàn) 開發(fā)工具選擇VisualStudio2010旗艦版 數(shù)據(jù)庫使用SQLServer2008 服務(wù)端采用兩層結(jié)構(gòu) 即DAL和BLL 數(shù)據(jù)訪問層使用LINQtoSQL類來實現(xiàn) 大大簡化該層的設(shè)計工作量 業(yè)務(wù)邏輯層使用LINQ來操作數(shù)據(jù)對象 9 數(shù)據(jù)庫設(shè)計 10 項目具體實施 一 創(chuàng)建數(shù)據(jù)庫表 根據(jù)數(shù)據(jù)庫設(shè)計創(chuàng)建數(shù)據(jù)庫 11 12 二 服務(wù)端設(shè)計 13 1 新建Web服務(wù)項目 打開VS2010 文件 新建 項目 ASP NETWeb應(yīng)用程序 選擇 NETFramework4 0框架 項目名 WebServiceApp 如圖所示 14 15 2 新建兩個類庫 16 Web DAL處理與數(shù)據(jù)庫交互的操作 17 同理 創(chuàng)建Web BLL處理網(wǎng)站業(yè)務(wù)邏輯 成功后效果如圖所示 18 3 數(shù)據(jù)訪問層的設(shè)計選中Web DAL 右鍵 添加新項 LINQtoSQL類 19 添加成功后如圖所示 20 選中VS2010服務(wù)器資源管理器 21 右鍵 數(shù)據(jù)連接 添加連接 22 選中數(shù)據(jù)源 23 添加連接 服務(wù)器名 敲入小數(shù)點 表示是本地數(shù)據(jù)庫服務(wù)器 連接或輸入一個數(shù)據(jù)庫名 選中創(chuàng)建的ws message 最后點擊 測試連接 如圖 24 展開數(shù)據(jù)庫 將三個表用鼠標(biāo)拖到DataMessage dbml中 25 在DataMessag dbml頁面空白處右鍵 屬性將序列化模式改成單向 防止數(shù)據(jù)表之間無限循環(huán)引用 26 同時 在屬性窗口 分別修改四個關(guān)聯(lián)關(guān)系的父屬性 將訪問權(quán)限均改為Internal 同樣也是避免無限循環(huán)引用 數(shù)據(jù)訪問層設(shè)計完成 27 4 構(gòu)建業(yè)務(wù)邏輯層右鍵Web BLL 新建類MessageManager cs 這個類包含網(wǎng)站業(yè)務(wù)邏輯所有函數(shù) 如圖所示 28 添加判斷用戶是否存在函數(shù) 該函數(shù)判斷登陸框里的用戶名是否是Users表中的注冊用戶 存在為True 否則false 代碼出現(xiàn)錯誤 解決方法如下頁圖示 29 為Web BLL添加Web DAL的引用 因為Web BLL需要用到數(shù)據(jù)訪問層的函數(shù) 30 添加成功后 在MessageManager cs導(dǎo)入命名空間 問題得到解決 如圖所示 31 執(zhí)行用戶注冊功能函數(shù) 該函數(shù)在Users表中插入一條記錄 成功為true 否則為false 代碼出現(xiàn)錯誤 還是缺少引用 繼續(xù)添加如下頁圖 32 為Web BLL添加System Data Ling引用問題得到解決 33 用戶登陸函數(shù) 該函數(shù)返回合規(guī)的users表一條記錄 34 添加好友 該函數(shù)首先判斷Friends表UserName是否有FriendName的記錄 如果沒有 則將Messages表一條記錄的Sender和Receiver賦值給Friends表一條記錄的UserName和FriendName 然后在這兩個表分別插入這一條記錄 否則什么也不做 35 同意好友 該函數(shù)判斷是否存在Messages表的一條記錄 使得Sender和Receiver分別等于Friend表的FriendName和UserName 如果存在將IsPass設(shè)置為true 并將這條記錄插入到Messages表中 36 拒絕好友請求 該函數(shù)將Friends表符合條件的好友關(guān)系刪除 更新消息記錄 37 發(fā)送消息 該函數(shù)根據(jù)Classify的取值不同執(zhí)行不同的動作 38 Copy信息列表 該函數(shù)返回一個消息列表 實際上是當(dāng)前信息列表的副本 39 獲取信息列表 該函數(shù)保存形參nickname的消息記錄 40 獲取指定用戶好友列表 至此 MessageManager cs文件設(shè)計完成 41 創(chuàng)建業(yè)務(wù)邏輯對應(yīng)的WebServices方法 為了將這些方法在網(wǎng)絡(luò)中暴露出來 能夠被其他客戶端應(yīng)用程序引用 必須將這些方法映射到Web服務(wù)的方法中 在WebServiceApp項目中添加一個Web服務(wù)網(wǎng)頁 重命名為WSMessage asmx 如下圖 42 43 給服務(wù)端添加引用 導(dǎo)入命名空間 44 Web服務(wù)添加代碼后出現(xiàn)錯誤 如圖 45 返回Web BLL類庫的MessageManager cs 將類聲明為public 問題解決 46 注冊用戶 47 驗證登陸 48 添加好友 49 處理好友請求 50 發(fā)送消息 51 發(fā)送文件 52 監(jiān)聽消息 該函數(shù)獲取當(dāng)前登陸用戶Message表中的一條消息記錄 53 獲取好友列表 至此 Web服務(wù)設(shè)計完成 54 服務(wù)器端測試 Register函數(shù)測試 55 56 HaveUser函數(shù)測試 57 Login函數(shù)測試 剛剛注冊用戶tom 密碼是1 說明MessageManager cs代碼有漏洞 自己修正 至此 服務(wù)端設(shè)計完成 58 因為其他函數(shù)都需要客戶端信息傳遞后才能看到效果 所以在服務(wù)端測試不了其有效性 只有等到客戶端做好后才能測試 59 客戶端設(shè)計 再打開一個VS 文件 新建 項目 Windows窗體應(yīng)用程序 60 新建四個窗體 如圖所示 61 在項目首先添加Web服務(wù)引用 如圖 62 點擊 高級 63 點擊 添加Web引用 64 復(fù)制服務(wù)器的網(wǎng)址 65 點擊綠色右箭頭前往 將Web服務(wù)引用名更改為WebServiceMessage 點擊添加引用 66 窗體設(shè)計 1 添加好友窗體FormFindFriend文本框ID txtUsername發(fā)送請求按鈕ID btnRequest用戶名 label控件 67 在FormFindFriend cs 設(shè)計 頁面 按下F7 轉(zhuǎn)到后臺代碼頁面 創(chuàng)建WSMessageWeb服務(wù)的實例對象及屬性 68 發(fā)送請求按鈕的Click事件 注意 代碼正確 但是出現(xiàn)紅色波浪線 很可能是將代碼粘貼進來的 重新敲一遍即可 代碼最好通過雙擊按鈕添加而不要直接復(fù)制 69 2 注冊窗體 用戶名ID txtNickname密碼ID txtPassword重復(fù)密碼ID txtRePassword注冊ID btnSubmit 70 注冊按鈕的Click事件 71 3 登陸窗體 用戶名ID txtUsername密碼ID txtPassword注冊按鈕ID btnRegister登陸按鈕ID btnLogin 72 在后臺代碼頁FormLogin cs定義FormMessage類實例對象master 并創(chuàng)建對應(yīng)的屬性Master 73 注冊按鈕Click事件 74 登陸按鈕Click事件 75 CookieContainer紅色波浪線解決方法 usingSystem Net 下面的兩條紅色波浪線之后解決 4 添加新類執(zhí)行字符串和二進制數(shù)組轉(zhuǎn)換功能的靜態(tài)方法類ConvertStringAndBytes cs 代碼如下 76 77 關(guān)閉FormLogin窗體執(zhí)行的動作 在窗體屬性的事件里 指定關(guān)閉時的事件處理 78 5 聊天窗體 btnRefresh btnSearch btnSendFile btnSend txtMessage多行文本框 txtMessages多行文本框 Listbox控件 79 在FormMessage cs中創(chuàng)建Web服務(wù)代理對象和兩個屬性 添加以上代碼后 登陸注冊按鈕的WsMessage紅色波浪線得到解決 80 FormMessage構(gòu)造函數(shù) 第一個紅色波浪線去掉見下頁 this timerMonitor Start 在后面處理 81 添加初始化好友列表函數(shù) 82 刷新按鈕的Click事件添加好友按鈕的Click事件 83 發(fā)送按鈕的Click事件 加入添加消息列表函數(shù) 紅色波浪線消失 84 發(fā)送文件按鈕的Click事件 usingSystem IO 解決FileInfo語法錯誤 SendFile語法錯誤下頁解決 85 添加發(fā)送文件函數(shù) 86 關(guān)閉窗體 記得在FormMessage窗體屬性事件里 指定窗體關(guān)閉事件函數(shù)FormMessage FormClosed 87 定位FormMessage cs 設(shè)計 點擊VS菜單欄的視圖 工具箱 所有Windows窗體 雙擊timer控件 Name 重命名timerMonitor 雙擊時間控件 彈出其函數(shù) 添加以下代碼 解決this timerMonitor Start 紅色波浪線 88 獲取信息 好友請求 89 獲取好友請求響應(yīng) 90 獲取文件 91 設(shè)置接收的文件的文件名 92 FormMessage是主窗體 將本項目的Program cs文件修改如下 93 在本頁面點擊 發(fā)送 按鈕可以發(fā)言 也可以點擊回車發(fā)言 設(shè)置如下 在FormMessage cs 設(shè)計 頁面 右鍵空白頁 選擇屬性 設(shè)置為 94 在事件窗體 左圖是 屬性 右圖是 事件 對應(yīng)閃電圖標(biāo) 95 特別注意 打開FormMessage designer cs文件 展開WindowsFormDesignergeneratedcode 96 保證要有灰顯的一行 如果沒有 則添加好友消息不能捕捉 97 系統(tǒng)測試 98 在項目Message bin Debug下有Message exe 雙擊運行即可打開新的客戶端 當(dāng)項目修改后需要重新生成 這樣Message exe就被更新了 99 100 tom加jerry為好友 如圖 101 102 103 104 105 106 107 發(fā)送文件 108 返回 109 項目小結(jié) 1 初步了解開發(fā)完整項目的流程 2 通過項目體會到Web服務(wù)到底能做什么 3 初步接觸LINQtoSQL作為數(shù)據(jù)訪問層 從而減小編寫DAL的難度 4 初步認識動態(tài)網(wǎng)站開發(fā)的三層結(jié)構(gòu) 因為這里的客戶端是窗體程序 所以還不太明顯5 項目還存在很多功能上的局限性 110 項目功能局限性 1 不能直觀查到在線用戶 必須到后臺數(shù)據(jù)庫才能看到 2 好友添加后就不
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 縣級疾病預(yù)防控制機構(gòu)慢病預(yù)防控制工作規(guī)范
- 2025年甲基六氫苯酐項目發(fā)展計劃
- 2025年加工羽毛(絨)項目建議書
- 2025年高性能傳輸線纜項目合作計劃書
- 2025年電視制式轉(zhuǎn)換器項目發(fā)展計劃
- 2025年動態(tài)心電圖監(jiān)測系統(tǒng)設(shè)備合作協(xié)議書
- 2025年汽車內(nèi)外飾件項目發(fā)展計劃
- 2025年文化產(chǎn)業(yè)專項資金申請報告:文化產(chǎn)業(yè)發(fā)展專項資金分配機制研究
- 智能投顧平臺風(fēng)控合規(guī)運營風(fēng)險管理策略與合規(guī)執(zhí)行風(fēng)險預(yù)警系統(tǒng)應(yīng)用報告
- 制造業(yè)數(shù)字化轉(zhuǎn)型數(shù)據(jù)治理在2025年的創(chuàng)新路徑與挑戰(zhàn)應(yīng)對策略分析
- 四年級上冊 口算題 1000題
- 九上道法知識點梳理(全冊)-九年級道德與法治上冊必備知識梳理總結(jié)(部編版)
- YB/T 5202.1-2003不定形耐火材料試樣制備方法第1部分:耐火澆注料
- GB/T 700-2006碳素結(jié)構(gòu)鋼
- GB/T 41419-2022數(shù)字化試衣虛擬人體用術(shù)語和定義
- GB/T 24218.1-2009紡織品非織造布試驗方法第1部分:單位面積質(zhì)量的測定
- GB/T 1633-2000熱塑性塑料維卡軟化溫度(VST)的測定
- 《病毒學(xué)》(研究生)全冊配套完整課件
- 第十七章其他熔化焊接與熱切割作業(yè)課件
- 腧穴總論 2特定穴課件
- 數(shù)顯壓力表說明書
評論
0/150
提交評論