《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于WCF和對等網絡的即時通信軟件的設計與開發
基于WCF和對等網絡的即時通信軟件的設計與開發
來源:微型機與應用2013年第22期
董袁泉
(沙洲職業工學院, 江蘇 張家港215600)
摘要: 介紹了Microsoft用于構建分布式面向服務架構的新一代框架WCF(Windows Communication Foundation)的體系結構與技術要素;同時分析了對等網絡(Peer-to-Peer network)的基本原理和網格化特性。在分析WCF和P2P網絡優點的基礎上開發了一個即時通信軟件,總結了使用.NET平臺開發P2P應用的基本步驟,闡述了對等網絡是開發P2P應用的理想平臺。
Abstract:
Key words :

摘  要: 介紹了Microsoft用于構建分布式面向服務架構的新一代框架WCF(Windows Communication Foundation)的體系結構與技術要素;同時分析了對等網絡(Peer-to-Peer network)的基本原理和網格化特性。在分析WCF和P2P網絡優點的基礎上開發了一個即時通信軟件,總結了使用.NET平臺開發P2P應用的基本步驟,闡述了對等網絡是開發P2P應用的理想平臺。
關鍵詞: WCF; SOA; 對等網絡; 網格化; 即時通信

    對等網絡P2P(Peer to Peer)也稱為對等連接,是一種新的通信模式。P2P網絡的一個重要目標就是讓所有的客戶端都能提供資源,包括帶寬、存儲空間和計算能力。因此,當有節點加入且對系統請求增多,整個系統的容量也增大。這是目前客戶機/服務器(C/S)結構不能實現的。
    P2P的應用開發是分布式網絡開發的一種典型應用,軟件開發難度較大,WCF(Windows Communication Foundation)作為微軟基于SOA所推出的.NET平臺下的新一代框架產品集成了現有技術的優點。本文將綜合利用對等網絡和WCF實現一個即時通信軟件,采用WCF快速、便捷地開發P2P應用。
1 WCF概述
    WCF整合了Com+、.Net Remoting、WebService等現有技術的優點,提供了一種構建安全可靠的分布式面向服務系統的統一的框架模型,使軟件開發人員在開發分布式應用時變得更加輕松[1]。
1.1 面向服務
    WCF是一套面向服務的框架。服務是指暴露在外的一系列功能的集合,面向服務則是指一套構建“面向服務程序”的抽象原則以及最優方法[2]?;赪CF的程序設計考慮更多的是提供和使用服務。
    WCF擁有一個非常靈活的分層體系結構,它的目標是在單個框架中提供編碼、托管、消息傳遞模式、網絡連接、安全性和互操作性,這有助于簡化分布式應用程序的開發[3]。
1.2 WCF的編程模型
    WCF服務是通過端點通信的。WCF服務的端點充當與其他應用程序通信的網關。它是發送或接收消息的位置,包含交換消息所需的所有信息。端點由地址、綁定以及契約三部分組成[4],如圖1所示。

    地址制定該服務所駐留的位置,它表示為URL形式。綁定描述了WCF服務如何與客戶端應用程序通信。契約是對WCF服務所提供功能的聲明。契約公開服務的接口、類、方法和變量,以使客戶端應用程序能夠訪問和使用它們。
2 P2P對等網絡
    在P2P對等網絡中,將由對等節點組成的集合稱為網格(mesh)。任何一個對等節點都可以通過指定終節點(Endpoint)的方法來加入到一個網格中。網格是彼此之間可以相互通信并由唯一的網格ID標識的對等節點的命名集合。網格中的活動節點發布其網格名稱,以便其他節點可以找到它們。
    解析程序服務可以獲取網格ID,然后返回與向該特定網格ID注冊的節點對應的地址列表。解析程序保持已注冊地址的列表,此列表是它通過讓網格中的每個節點向該服務注冊而創建的。
    對等解析程序(PNRP)負責將網格ID解析為網格中節點的終節點地址[5]。在打開一個對等節點后,它會使用對等解析程序將網格ID解析為網格中其他對等節點的地址列表。這會創建一個由互連節點組成的網格,從而允許通過網格傳播消息。
3系統的設計與實現
3.1系統總體設計

    P2P應用程序的設計與普通分布式應用程序不同,在設計時必須考慮到應用程序本身既是服務的提供方同時也是服務的調用方。軟件整體結構如圖2所示[6]。

    每個加入到P2P對等網絡節點的客戶端可以通過EndPoint來加載WCF的服務契約并發布出去,但是整個對等網絡中沒有中央服務器的存在,所以節點與節點之間相互發現和通信比較困難,P2P對等網絡通過稱為PNRP的名稱解析的服務來解決這樣的問題。
3.2 服務端程序的設計
    服務端主要的功能是創建一個CustomPeerResolverService類型的ServiceHost代理,啟用對等解析程序(PNRP),還負責提供服務主機的基址,該基址在配置文件(App.config)中進行配置。經過配置之后,服務便可以由客戶端的計算機在該基址訪問。具體代碼如下:
      using System.ServiceModel.PeerResolvers;
//添加對等名稱解析協議服務
       ……
     CustomPeerResolverService cprs;       
                 //聲明自定義對等解析程序服務的變量
       ServiceHost host;   //聲明服務代理類
       ……
     cprs=new CustomPeerResolverService();  //初始化變量
     host=new ServiceHost(cprs);
     在配置文件(App.config)定義一個終節點,使客戶端可以與服務進行通信。使用NetTcpBinding進行綁定。
      App.config配置如下:
     <endpoint address="net.tcp://localhost/P2PChatServer" binding="netTcpBinding"… ></endpoint>
      經過配置之后,服務便可以由客戶端在 net.tcp://localhost/P2PChatServer處訪問。
3.3 客戶端加入網格
     要實現P2P對等網絡中的節點相互通信,首先需要創建和注冊同級,其他同級需要查找和訪問已注冊的同級。
      需要特別注意的是網格中的每臺計算機既可以作為客戶端又可以作為服務器,那么設計所要實現的契約時,應將契約的回調契約指定為其自身。這樣無論是調用方還是被調用方都能夠實現相同的操作,使得每臺計算機既能充當客戶端又能成為服務端[6]。創建契約的代碼如下:
 [ServiceContract(CallbackContract=typeof(IChatService))]
                             //將回調契約定義為本身
 public interface IChatService
  {
    [OperationContract(IsOneWay=true)]
     void DoSomeWork;                           //實現相應的功能
     }
    使用WCF中的DuplexChannelFactory<T>泛型類創建一個雙向通道來實現雙向調用。使用該通道的CreateChannel()方法來創建通信通道的一個實例。整個對等名稱解析過程是由netPeerTcpBinding綁定封裝的,在創建通道的同時,會在網格中注冊節點,使得節點加入網格[6]。代碼如下:
     InstanceContext context=new InstanceContext(this);
                                            //上下文實例
    Factory=new DuplexChannelFactory<IChatChannel>(context,"ChatEndPoint");  

                        //創建雙工通信
  Channel =Factory.CreateChannel();                //創建通道
3.4 網格中的計算機獲取節點標識
    當網格內有新的節點加入或退出時必須發送一個消息,這樣新的節點能查找到網格內其他的節點。只有網格內所有的節點有一個唯一的標識,才能實現對特定節點服務的調用,實現網格中客戶端點對點的相互通信。因此在編寫客戶端服務契約時必須包含獲取網格節點的方法以及提供節點加入或退出網格的事件處理代碼。
    通過DuplexChannelFactory<T>創建的雙向通信能夠調用客戶端服務契約的方法,當有新的節點加入網格時通過調用通道實例中的Join()方法將節點的標識傳遞給網格內其他節點。
    由于在服務端App.config文件中定義了統一的基地址,所以對通道方法的調用是對網格內所有節點的調用,因此網格內其他節點就可以發現新加入的節點。具體實現的方法如下:
    delegate void UserJoined(stringname);//聲明加入網格代理
    static event UserJoined NewJoin;     //定義加入網格事件
    public void Join(stringmemberName)
     {
     if(NewJoin!=null)
     {
   NewJoin(memberName);
    }
     }
    …
   Channel.Join(this.userName)
   當有節點退出網格時,與加入網格時一樣聲明一個退出網格事件代理,然后調用通道實例中的Leave()方法,退出網格;具體實現代碼與加入網格相似。
    網格中節點之間消息的傳遞也可以聲明一個消息發送事件代理,在發送時可以加入自身的標識作為參數,以便其他人能夠識別。
4 系統的測試與運行
    系統的開發工具選擇Visual Studio 2010,程序編譯通過后,首先打開即時通信服務端軟件,然后單擊開始,服務啟動成功,如圖3所示。

 

 

     在兩臺客戶端計算機上分別運行即時通信客戶端軟件并且輸入用戶名,點擊Join按鈕后節點會在網格中注冊并獲取網格中其他節點的標識,此時兩臺計算機作為兩個節點成功加入到網格中。在圖4中,一臺計算機成功地接收到了另一臺計算機自身登錄名稱和它所發送的消息。

    本文介紹了如何使用WCF來開發P2P應用程序。P2P應用程序開發成本低并且擁有較好的并發處理能力,適用于小規模的網絡,維護容易;但是對等網絡同時也存在一些不足和缺點,如資源分享紊亂、管理較難、安全性較低等問題。雖然還存在著一些問題和不足,但P2P對等網絡依然是開發點對點應用的一個理想平臺。
參考文獻
[1] 閆冰.基于WCF的分布式應用開發[J].電腦知識與技術,2008,3(1):68-70.
[2] 孫耀.基于WCF的網格化信息管理系統的研究與實現[D]. 長春:東北師范大學,2009.
[3] 程湯培. 基于WCF的即時通信軟件的設計與實現[J].  電腦編程技巧與維護,2008(4):24-40.
[4] 陳茹. WCF框架下分布式系統的集成技術研究[D].大連:大連海事大學,2010.
[5] 羅小平.基于PNRP協議的PeerChannel共享存儲模型的研究與應用[D].成都:西南石油大學,2011.
[6] 王麗麗,戴迪,王成江.Windows對等網絡上P2P應用程序的設計與實現[J].計算機與信息技術,2009(3):36-40.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲每日在线| 亚洲激情在线观看| 国内精品久久久久国产盗摄免费观看完整版| 国内精品久久久久影院优| 亚洲黄页视频免费观看| 国产精自产拍久久久久久蜜| 欧美阿v一级看视频| 国产欧美韩国高清| 亚洲高清在线精品| 亚洲欧美综合国产精品一区| 狠狠色丁香婷综合久久| 黄色日韩网站| 久热精品视频在线观看| 亚洲一卡二卡三卡四卡五卡| 欧美国产日韩精品| 亚洲精品小视频在线观看| 久久免费的精品国产v∧| 亚洲一区二区三区四区视频| 久久精品一区四区| 欧美日韩a区| 亚洲国产欧洲综合997久久| 国产欧美精品一区二区色综合| 国产亚洲二区| 黄网站色欧美视频| 欧美不卡视频一区发布| 在线精品高清中文字幕| 久久手机免费观看| 狠狠色噜噜狠狠狠狠色吗综合| 国产日韩欧美成人| 欧美亚洲不卡| 蜜臀久久99精品久久久画质超高清| 亚洲欧洲日产国产综合网| 激情视频亚洲| 欧美成人在线影院| 亚洲女同精品视频| 久久av一区二区三区| 亚洲精品网址在线观看| 亚洲一区二区三区久久| 国产一区二区看久久| 一区二区三区 在线观看视频| 国产欧美日韩视频在线观看| 久久一区二区三区国产精品| 欧美极品在线播放| 午夜视黄欧洲亚洲| 欧美午夜一区二区| 久久伊人免费视频| 久久成人精品电影| 欧美一区二区性| 免费人成网站在线观看欧美高清| 免费在线观看精品| 亚洲黄页视频免费观看| 欧美一区二区三区精品电影| 欧美激情一区二区三区| 欧美伊人影院| 国产精品五区| 久久视频这里只有精品| 一本一本久久a久久精品综合麻豆| 久久精品中文字幕免费mv| 欧美午夜精品| 国产偷久久久精品专区| 久久久久久久999精品视频| 欧美国产一区二区三区激情无套| 免费人成精品欧美精品| 欧美日韩在线视频观看| 精品盗摄一区二区三区| 欧美丰满少妇xxxbbb| 99精品国产99久久久久久福利| 影音先锋另类| 欧美日韩亚洲另类| 99re视频这里只有精品| 欧美精选一区| 国产一区二区三区四区三区四| 99精品国产在热久久婷婷| 亚洲高清自拍| 国产揄拍国内精品对白| 最新日韩在线视频| 久久精品国产亚洲一区二区三区| 久久久久久久久久久久久9999| 久久免费观看视频| 亚洲深夜福利在线| 国产精品一区二区男女羞羞无遮挡| 麻豆九一精品爱看视频在线观看免费| 亚洲高清影视| 欧美日韩一级黄| 欧美日韩综合一区| 国产精品日本欧美一区二区三区| 国产综合久久久久影院| 欧美在线视频一区| 国产精品成人一区二区网站软件| 亚洲在线播放| 亚洲午夜激情在线| 亚洲精品美女在线| 久久精品久久99精品久久| 久久超碰97人人做人人爱| 日韩亚洲欧美在线观看| 黄色精品在线看| 亚洲欧美卡通另类91av| 亚洲欧美日韩精品久久奇米色影视| 亚洲视频电影图片偷拍一区| 亚洲国产欧美在线人成| 欧美日韩精品免费看| 在线免费观看欧美| 久久综合久色欧美综合狠狠| 亚洲精品日韩在线观看| 国产精品区一区二区三区| 久久成人精品一区二区三区| 欧美系列一区| 国产亚洲制服色| 亚洲欧美日韩一区二区在线| 国产精品色婷婷久久58| 久久成人国产精品| 蜜臀99久久精品久久久久久软件| 99视频一区| 国产精品综合不卡av| 久久成人羞羞网站| 亚洲啪啪91| 欧美精品啪啪| 欧美日韩视频免费播放| 欧美日韩国产综合网| 亚洲精品综合久久中文字幕| 亚洲欧洲精品一区二区三区| 一区二区三区欧美日韩| 亚洲精品在线观| 欧美亚洲动漫精品| 国产精品永久| 久久香蕉国产线看观看av| 欧美成人免费在线| 亚洲欧美日韩在线播放| 久久夜色精品国产欧美乱极品| 欧美日韩在线不卡| 99视频日韩| 久久亚洲不卡| 老色鬼久久亚洲一区二区| 久久久久久久综合色一本| 欧美午夜a级限制福利片| 模特精品裸拍一区| 国户精品久久久久久久久久久不卡| 国产欧美一区二区精品秋霞影院| 欧美日韩国产在线| 午夜精品一区二区三区四区| 国产精品日韩一区二区三区| 国产精品jvid在线观看蜜臀| 国产亚洲欧洲997久久综合| 欧美天堂在线观看| 亚洲欧美在线aaa| 欧美日韩中文字幕在线视频| 国产精品成人午夜| 久久精品人人做人人爽| 久久精品国产第一区二区三区| 国产精品综合久久久| 欧美午夜影院| 欧美日韩亚洲视频| 久久五月激情| 亚洲伦理在线免费看| 久久亚洲春色中文字幕久久久| 久久亚洲美女| 国产日韩视频一区二区三区| 夜夜嗨av一区二区三区四季av| 国产精品视频xxx| 国产精品福利影院| 亚洲丶国产丶欧美一区二区三区| 亚洲欧洲精品一区二区三区不卡| 国产精品美女久久| 免费成人高清在线视频| 亚洲欧美日韩国产一区二区三区| 久久久一区二区三区| 夜夜精品视频| 欧美成人综合网站| 久久午夜羞羞影院免费观看| 一区二区亚洲欧洲国产日韩| 国产精品国产三级国产aⅴ入口| 在线亚洲一区观看| 欧美高清在线一区| 欧美日韩激情网| 欧美激情网站在线观看| 99re66热这里只有精品4| 欧美激情自拍| 久久精品国产99国产精品澳门| 国精品一区二区| 亚洲男人影院| 国产一区二区三区无遮挡| 亚洲男人第一网站| 久久久人人人| 亚洲激情黄色| 一本久道久久综合中文字幕| 欧美黄色片免费观看| 欧美亚洲日本国产| 欧美日韩免费在线视频| 欧美日韩一区二区在线| 亚洲欧洲日本mm| 国产精品久久久久久av下载红粉| 亚洲欧美日韩成人高清在线一区| 欧美亚洲免费| 亚洲愉拍自拍另类高清精品| 久久综合免费视频影院| 欧美v国产在线一区二区三区| 裸体素人女欧美日韩| 美日韩精品视频免费看| 国产自产在线视频一区| 亚洲国产日韩欧美综合久久| 欧美日韩精品三区| 国精品一区二区三区| 国产三级精品三级| 狂野欧美性猛交xxxx巴西| 久久久精品国产一区二区三区| 欧美不卡激情三级在线观看| 国产精品久久久久久久久久免费看| 欧美日韩免费观看中文| 亚洲精品国产精品国自产在线| 国产精品青草综合久久久久99| 欧美日韩一区高清| 国产伦精品一区二区三区高清| 欧美日韩精品伦理作品在线免费观看| 亚洲精品之草原avav久久| 精东粉嫩av免费一区二区三区| 亚洲国产免费| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美福利网址| 国产一区二区按摩在线观看| 蜜臀va亚洲va欧美va天堂| 国产精品毛片| 影音国产精品| 久久久久久久欧美精品| 亚洲在线观看免费| 国产欧美精品日韩精品| 久久国产精品久久w女人spa| 一区二区三区自拍| 激情成人av| 久久av红桃一区二区小说| 狠狠色狠狠色综合日日五| 一本久久青青| 欧美日韩中国免费专区在线看| aaa亚洲精品一二三区| 久久九九有精品国产23| 久久九九全国免费精品观看| 亚洲欧美国产一区二区三区| 亚洲欧美一区二区视频| 极品少妇一区二区三区| 欧美性大战久久久久久久蜜臀| 激情五月综合色婷婷一区二区| 一区二区三区国产在线观看| 国产日韩在线看片| 午夜精品一区二区三区在线播放| 亚洲欧美一区二区三区极速播放| 亚洲欧美春色| 亚洲精品美女久久7777777| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲精品一区二区三区樱花| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲一卡二卡三卡四卡五卡| 日韩手机在线导航| 久久久久久91香蕉国产| 夜夜嗨av一区二区三区中文字幕| 久久综合狠狠综合久久综合88| 亚洲激情中文1区| 欧美日韩一视频区二区| 亚洲欧美日韩在线播放| 欧美特黄一区| 久久伊人一区二区| 亚洲精品激情| 欧美成人午夜激情| 亚洲人成绝费网站色www| 亚洲美女视频网| 免费欧美网站| 国产精品久久久久久久久久久久久| 国产一区日韩欧美| 欧美大片在线影院| 精品粉嫩aⅴ一区二区三区四区| 国产精品久久久久久久久免费| 亚洲国产精选| 国产视频一区在线观看一区免费| 亚洲一区二区在线播放| 国产日韩欧美91| 欧美日韩一区二区三区四区五区| 欧美乱人伦中文字幕在线| 国产色婷婷国产综合在线理论片a| 亚洲美女av网站| 欧美成人一区二区三区在线观看| 亚洲国产精品高清久久久| 欧美日韩精品二区第二页| 国内精品伊人久久久久av影院| 欧美一区二区在线观看| 欧美激情一区二区三区四区| 久久青青草综合| 国产精品资源| 毛片基地黄久久久久久天堂| 国产精品久久网站| 国产欧美精品在线| 亚洲色图制服丝袜| 亚洲国产精品精华液网站| 亚洲精品色婷婷福利天堂| 欧美日韩ab| 日韩视频在线观看一区二区| 欧美日韩国产在线观看| 黄色精品一区二区| 亚洲乱码国产乱码精品精98午夜| 国产精品国码视频| 中文无字幕一区二区三区| 久久久久久尹人网香蕉| 欧美.www| 欧美小视频在线观看| 亚洲日本乱码在线观看| 亚洲午夜精品一区二区| 欧美日本一区二区视频在线观看| 亚洲成人在线网站| 国产精品久线观看视频| 先锋资源久久| 亚洲东热激情| 在线视频成人| 一本色道久久88亚洲综合88| 久久精品综合一区| 久久精品人人做人人爽电影蜜月| 亚洲影视中文字幕| 国产精品www| 久色成人在线| 国产精品videossex久久发布| 久久久欧美一区二区| 亚洲精品久久久久中文字幕欢迎你| 午夜国产不卡在线观看视频| 欧美国产日韩在线观看| 欧美一区二区在线免费播放| 国产亚洲欧美一区二区| 亚洲欧美日韩专区| 亚洲午夜久久久久久久久电影网| 欧美高清一区二区| 欧美激情免费在线| 一区二区三区在线免费观看| 久久不见久久见免费视频1|