亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于WCF的Silverlight繪圖聊天程序?qū)崿F(xiàn)

        2015-06-24 13:14:09鄒珺
        軟件導刊 2015年6期

        摘要:WCF技術能實現(xiàn)聊天功能。結(jié)合WCF服務配置以及Silverlight客戶端定義,調(diào)用WCF服務器端代理類,完成了繪圖功能和聊天記錄的發(fā)送。通過WCF的雙向通信機制實現(xiàn)了Silverlight繪圖聊天程序。

        關鍵詞:WCF;Silverlight;代理類;雙向通信;繪圖聊天

        DOIDOI:10.11907/rjdk.151124

        中圖分類號:TP3-0

        文獻標識碼:A 文章編號

        文章編號:16727800(2015)006005402

        作者簡介作者簡介:鄒珺(1981-),女,江蘇蘇州人,碩士,蘇州農(nóng)業(yè)職業(yè)技術學院講師,研究方向為.NET軟件開發(fā)。

        0 引言

        WCF(Windows Communication Foundation,Windows通信基礎)屬于.NET Framework框架中的通信層子框架,是微軟推出的用于開發(fā)面向服務架構(gòu)SOA應用程序的基礎框架,整合了各種不同的分布式開發(fā)技術,例如Web服務、.NET遠程處理及Enterprise Services[1]等。

        1 WCF技術概述

        1.1 WCF技術開發(fā)模型

        WCF作為基于SOA面向服務架構(gòu)的一個通信框架產(chǎn)品,主要用于創(chuàng)建應用程序服務,而一個WCF服務又包含稱為ABC的3個部分。

        A是Address的簡稱,用于指定服務地址。每個WCF服務都有一個唯一的地址,該地址定義了服務的引用地址和傳輸協(xié)議。

        B是Binding的簡稱,中文稱為綁定。因為可供通信的方式很多,比如可以是單向或雙向的通信,可以使用HTTP、TCP、P2P或IPC等。綁定提供了一些用于通信的封裝好的方式。

        C是Contract的簡稱,中文稱為契約,描述了服務所能提供的各種服務。

        WCF簡化了開發(fā)分布式應用程序的復雜性,讓開發(fā)人員不再過度關注復雜的通信協(xié)議及數(shù)據(jù)交換,將所有精力放在業(yè)務邏輯的實現(xiàn)上[2]。

        1.2 繪圖聊天程序預覽效果

        打開聊天程序,要求用戶輸入一個名字進行登錄,便于聊天室知道當前聊天人員的信息,單擊“登錄”按鈕后,打開聊天程序的主窗體。

        主窗體左側(cè)是繪圖面板,底部是供繪圖的工具,包括畫筆、畫刷和基本形狀工具。頂部標題欄下是位置區(qū),用戶可以設置線程、畫刷顏色和畫刷粗細等樣式,右側(cè)文本框用戶可以輸入聊天信息,當用戶單擊“發(fā)送聊天信息”按鈕后,用戶的聊天信息將在所有的客戶端顯示。

        用戶在繪圖區(qū)域繪圖時,所有使用該Silverlight聊天程序的客戶端都會實時顯示出繪圖筆記。當有新用戶登錄或進行繪圖操作后,聊天室底部的狀態(tài)欄面板上會顯示通知信息,可以知道當前是哪位用戶在繪圖板上繪制了圖形。

        2 WCF服務器功能設計

        2.1 定義WCF服務契約

        WCF服務將宿主到IIS中,創(chuàng)建一個標準的用于承載Silverlight的ASP.NET項目:右擊該項目名稱,選擇“添加”|、“新建項”命令,在彈出的“添加新項”窗口中,選擇WCF服務項,命名為DuplexDrawService.svc,VS會自動向項目中加入一個svc文件和一個IDuplexDrawService的契約定義文件。

        為了讓客戶端發(fā)送的消息能在多個客戶端窗口之間同步,使用WCF雙向通信綁定。雙向通信原理是:一般獲取數(shù)據(jù)使用的是客戶端調(diào)用服務端的方法來獲取數(shù)據(jù),而Duplex是將客戶端也當作服務器,客戶端上的方法一樣可以使用。

        每當客戶端通過HTTP協(xié)議連接到服務器端后,會向服務器注冊一個該客戶的名稱和回調(diào)接口到服務器端的字典中。當客戶端發(fā)送聊天內(nèi)容或者進行繪制時,服務器端將查詢已連入的客戶端,使用回調(diào)機制調(diào)用客戶端的更新方法將數(shù)據(jù)推送到Silverlight客戶端,達到在一個地方發(fā)送信息,所有客戶端都能保持同步的效果[3]。

        2.2 定義WCF回調(diào)契約

        IDuplexDrawCallback接口用于定義WCF服務的回調(diào)契約,該接口向服務器端發(fā)送更新通知。

        2.3 實現(xiàn)服務契約

        IDuplexDrawService接口用來向客戶端發(fā)布WCF服務,項目中的DuplexDrawService類提供IDuplexDrawService接口的實現(xiàn)。在類的聲明中,使用WCF服務為ServiceBehavior定義在客戶端調(diào)用服務器端的行為[4]。

        2.4 配置WCF服務器

        為了讓客戶端可以訪問,還需要定義WCF服務地址和綁定。

        (1)為了實現(xiàn)WCF的雙向綁定,需要引入System.ServiceModel.PollingDuplex.dll這個程序集,該程序集位于Silverlight SDK中。

        (2)需要在Web.config配置文件中添加對該程序集中定義的綁定擴展,用戶可以使用綁定擴展來創(chuàng)建用戶定義的綁定元素,并將其作為自定義綁定的一部分來使用。綁定擴展時實現(xiàn)抽象類BindingElement的類型[5]。

        (3)用戶可以使用綁定擴展bindingExtensions來創(chuàng)建定義的綁定,并將其作為終結(jié)點配置的一部分來使用。擴展綁定是一個實現(xiàn)抽象類Binding的類型。在指定了綁定元素和綁定擴展后,可以創(chuàng)建一個自定義的綁定類型。

        (4)配置中指定使用HTTP傳輸協(xié)議和二進制消息編碼,并指定了查詢的一些參數(shù)設置。在定義綁定后,接下來定義服務行為來指定一些細節(jié)信息。

        (5)定義服務ABC,指定地址、綁定和契約,讓客戶端可以使用特定的地址訪問到服務。

        (6)出于安全考慮,Silverlight不支持跨域訪問服務,需要在WCF的根目錄下放置一個XML策略文件,文件名為clientaccesspolicy.xml。

        通過上述定義,Silverlight客戶端就可以使用與其宿主ASP.NET文件路徑一致的方式訪問服務了。

        3 Silverlight客戶端功能設計

        3.1 添加對WCF服務的引用

        右擊Service References文件夾,從彈出的菜單中選擇“添加服務引用”命令,彈出添加服務引用對話框,單擊窗口上的“發(fā)現(xiàn)”|、“解決方案中的服務”按鈕,服務列表會列出在服務器端項目中已經(jīng)定義好的WCF服務。

        在服務的元數(shù)據(jù)中,對于定義在回調(diào)接口中的異步Notify()方法也提供了封裝。單擊確定按鈕后,會生成一個服務代理類位于Reference.cs文件中,這個代理類包含了WCF服務的同步或異步調(diào)用代碼,在客戶端只需要調(diào)用這些代碼就可以與WCF服務進行交互[6]。

        3.2 實現(xiàn)DuplexClientHelper服務代理類

        DuplexClientHelper使用PollingDuplexHttpBinding與服務器端進行通信,DuplexDrawServiceClient類提供了調(diào)用遠程服務器對象的代碼,它提供了對遠程服務器端操作契約方法的定義。DuplexClientHelper簡化了客戶端直接操作該代理類的復雜性,提供了一層封裝[7]。

        3.3 實現(xiàn)繪圖處理

        3.4 聊天記錄發(fā)送

        DrawingArea對象的AddObjects()方法中,如果ScreenObject類型是Text時,會根據(jù)文本內(nèi)容實例化一個TalkItem對象,添加到ObservableCollection這個集合中,這樣便實現(xiàn)了客戶發(fā)送聊天內(nèi)容時,所有客戶端都會同步顯示聊天信息的效果。

        用戶在聊天文本框中輸入聊天內(nèi)容、單擊“發(fā)送聊天信息”按鈕時,聊天記錄被添加到MessageCollection集合中,然后一個異步的DrawAsync向服務器端發(fā)出,服務器端將回調(diào)所有客戶端通道,發(fā)送聊天通知信息。

        4 結(jié)語

        通過使用Silverlight與WCF的雙向通信技術,實現(xiàn)了一個具有繪圖功能的聊天程序,其關鍵技術點在于WCF的雙向通信技術實現(xiàn)了服務器端向客戶端推送數(shù)據(jù)功能[8]。

        參考文獻:

        [1]譚淇.基于WCF服務框架與Silverlight的Web應用研究[J].計算機與現(xiàn)代化,2011(1):8990.

        [2]張學林,鐘志農(nóng),景寧,等.面向Silverlight的WCF服務優(yōu)化策略的設計與實現(xiàn)[J].微型機與應用,2011(20):1314.

        [3]黃森,劉豐.基于WCF的數(shù)據(jù)流傳輸方案研究與應用[J].計算機安全,2009(12):3638.

        [4]彭新,劉永偉,葉長春.基于Flex和.NET開發(fā)RIA[J].軟件導刊,2010(6):127129.

        [5]李文滔.基于WCF架構(gòu)的應用開發(fā)研究[J].計算機時代,2011(2):3436.

        [6]安磊,吳英俊,黃昕穎,等.基于Silverlight和WCF技術的實時數(shù)據(jù)圖形展示系統(tǒng)研究[J].浙江電力,2011(8):6569.

        [7]張若君,王力生.Silverlight與數(shù)據(jù)模型設計模式[J].科技傳播,2011(22):2125.

        [8]李愛民,劉晶,馬維綱.Silverlight相關技術研究[J].計算機技術與發(fā)展,2009(6):113115.

        責任編輯(責任編輯:杜能鋼)

        国产成人亚洲精品无码mp4| 亚洲中国精品精华液| 欲女在线一区二区三区| 成人影片麻豆国产影片免费观看| 曰韩无码av一区二区免费| 免费网站内射红桃视频| 国产成人亚洲综合无码品善网| 国产成人精品久久综合| 亚洲日本中文字幕天天更新| 亚洲国产精品特色大片观看完整版| 亚洲国产精品尤物yw在线观看| 亚洲视频高清| 欧美日韩精品| 亚洲乱码国产一区三区| 亚洲是图一区二区视频| 亚洲欧美日韩一区在线观看| 亚洲一区二区三区国产精品| 亚洲天堂男人的av天堂| 亚洲国产精品区在线观看| 日本不卡高字幕在线2019| 亚洲理论电影在线观看| 欧美 变态 另类 人妖| 2021国产精品一区二区在线 | 亚洲精品一品二品av| 日本免费a一区二区三区| 国内精品毛片av在线播放| 亚洲一区二区三区精品| 精品无人区无码乱码毛片国产| 免费人成网ww555kkk在线| 精品久久亚洲中文无码| 欧美xxxx新一区二区三区| 日本精品熟妇一区二区三区| 国产丝袜美腿在线视频| 国产一区二区视频免费在线观看| 久久精品国产亚洲av久| 欧美日韩国产码高清综合人成 | 亚洲亚洲网站三级片在线| 少妇熟女淫荡丰满| 丰满人妻无套内射视频| 亚洲成人av在线蜜桃| 亚洲 卡通 欧美 制服 中文|