青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eXile 的專欄

[T] ICE實(shí)例學(xué)習(xí):Let's Chat! 節(jié)譯 (1)

節(jié)譯,原文地址:http://www.zeroc.com/articles/index.html

需求

      1)一個(gè)典型的聊天室應(yīng)用,使用客戶器/服務(wù)器架構(gòu),客戶發(fā)送消息到中心服務(wù)器,然后,消息發(fā)送給其它客戶。
      2)盡量減少服務(wù)器管理,甚至可以不需要。
      3)通信必須安全,通過公共網(wǎng)絡(luò)時(shí)必須要保護(hù)個(gè)人隱私。
      4)當(dāng)客戶端和服務(wù)器有防火墻保護(hù)時(shí)也能正常運(yùn)行,客戶端不用修改它的網(wǎng)絡(luò)或者防火墻設(shè)置。
      5)客戶端可以在各種平臺(tái)上利用多種語言實(shí)現(xiàn),比如說利用Web瀏覽器作為客戶端。
      6)客戶端可能網(wǎng)絡(luò)帶寬有限,所以應(yīng)該盡量減少網(wǎng)絡(luò)流量。
      只支持單個(gè)聊天室。(多個(gè)聊天室只是代碼多了點(diǎn),并沒有增加任何難度)。

設(shè)計(jì)

      在本文中,將會(huì)演示多種客戶端的設(shè)計(jì)和實(shí)現(xiàn)。包括:
      1)C++命令行客戶端;
      2)JAVA SWing GUI客戶端;
      3).NET WPF客戶端;
      4)PHP網(wǎng)頁客戶端;
      5)Silverlight 網(wǎng)頁客戶端;
     
     注意,對于ICE3.3, PHP和Ruby只提供了客戶端的Run Time。我們在考慮當(dāng)連接的客戶如何從服務(wù)器獲得消息時(shí),必須要想到這一點(diǎn)。對于消息發(fā)布,有兩種通信模型:
     1)推模型:略
     2)拉模型:略
     推模型比較簡單,容易實(shí)現(xiàn),我們的Chat 客戶端中,C++,Java, .Net, Silverlight(0.3)都使用該模型。PHP客戶端使用拉模型。

推模型定義
     每個(gè)客戶端中提供一個(gè) ChatRoomCallback 類型的ICE對象到服務(wù)器。當(dāng)發(fā)生事件時(shí),服務(wù)器調(diào)用該對象的操作通知客戶。SLICE定義如下:
// Slice 
module Chat 

// Implemented by clients 
interface ChatRoomCallback 

    [
"ami"void init(Ice::StringSeq users); 
    [
"ami"void join(long timestamp, string name); 
    [
"ami"void leave(long timestamp, string name); 
    [
"ami"void send(long timestamp, string name, string message); 
}; 
};

     1)當(dāng)用戶首次連接到聊天室時(shí),服務(wù)器調(diào)用 init 操作.     users參數(shù)告訴用戶目前連接到聊天室的所有用戶信息。
     2)有用戶連接到聊天室時(shí),服務(wù)器調(diào)用 join 操作。
     3)有用戶斷開連接時(shí),服務(wù)器調(diào)用 leave 操作。
     4)有用戶發(fā)送消息時(shí),服務(wù)器調(diào)用 send 操作。
     注意設(shè)計(jì)使用異步事件。元數(shù)據(jù)指令 ["ami"] 標(biāo)明服務(wù)器異步調(diào)用回調(diào)操作。當(dāng)客戶端行為異常時(shí),這對服務(wù)器是一個(gè)保護(hù):客戶端可能長時(shí)間阻塞,服務(wù)器調(diào)用期間不會(huì)因此失去對線程的控制。

與防火墻協(xié)作
      略......

      Glacer2是ICE針對這種情況的預(yù)建的解決方案,它扮演一個(gè)服務(wù)器前端。Glacer2具有以下特征:
      1)支持會(huì)話概念,API支持認(rèn)證機(jī)制,可實(shí)現(xiàn)自定義的會(huì)話創(chuàng)建和認(rèn)證。
      2)單個(gè)Glacer2可進(jìn)行任意數(shù)量的服務(wù)器和客戶端轉(zhuǎn)發(fā)。服務(wù)器只要有一個(gè)端口接受外來連接,而不用管具體服務(wù)器個(gè)數(shù)。
     3)對于具有防火墻的客戶端,服務(wù)器也可調(diào)用其提供的回調(diào)。

     因?yàn)?Glacer2會(huì)話概念是面向連接的,只有當(dāng)客戶端同Glacer2的連接打開時(shí),更精確的說,同Glacer2保持一個(gè)激活的會(huì)話時(shí),服務(wù)器才可以對客戶進(jìn)行回調(diào)。換句話說,當(dāng)客戶端同Glacer2失去連接,Glacer2自動(dòng)銷毀會(huì)話。為了阻止客戶端到Glacer2的連接被意外關(guān)閉,客戶端必須要禁用ACM(Automic Connection Management, 自動(dòng)連接管理)。而且,Glacer2通常對長時(shí)間空閑的會(huì)話設(shè)置超時(shí)。當(dāng)聊天室長時(shí)間沒有動(dòng)作時(shí),為了防止Glacer2銷毀會(huì)話,客戶端必須周期性進(jìn)行激活,比如,調(diào)用 ice_ping, 來對Glacer2的會(huì)話超時(shí)進(jìn)行重置。

     Chat客戶端通過服務(wù)器提供的 ChatSession接口來和服務(wù)器通信。 ChatSession 從Glacer2::Session派生。
// Slice 
module Chat 

exception InvalidMessageException 

    
string reason; 
}; 
 
interface ChatSession extends Glacier2::Session 

    
void setCallback(ChatRoomCallback* cb); 
    [
"ami"long send(string message) throws InvalidMessageException; 
}; 
};

      這就是推模型,Chat客戶端調(diào)用ChatSession的send來發(fā)送消息,服務(wù)器調(diào)用每一個(gè)客戶的ChatRoomCallback的send操作進(jìn)行分發(fā)。

拉模型定義

TODO


posted on 2009-03-25 23:52 eXile 閱讀(2243) 評論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)開發(fā)ICE

導(dǎo)航

<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

統(tǒng)計(jì)

常用鏈接

留言簿(18)

隨筆分類

隨筆檔案

服務(wù)器編程

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老司机一区二区三区| 久久在线免费观看视频| 亚洲国产一二三| 在线观看精品一区| 亚洲激情视频在线观看| 一区二区免费在线视频| 亚洲淫片在线视频| 久久精品中文字幕一区二区三区| 欧美一级片一区| 免费成人高清视频| 亚洲国产天堂久久国产91| 欧美激情视频给我| 亚洲天堂黄色| 久久久国际精品| 欧美精品在线免费播放| 国产精品日韩欧美一区| 永久免费视频成人| 亚洲欧美第一页| 欧美第十八页| 亚洲欧美日韩一区二区三区在线观看| 久久爱另类一区二区小说| 欧美精品三级日韩久久| 国产一区二区三区精品久久久| 亚洲免费观看视频| 两个人的视频www国产精品| 亚洲另类自拍| 看欧美日韩国产| 国产日韩精品久久久| 夜夜爽av福利精品导航| 久久综合久色欧美综合狠狠| 99精品国产在热久久下载| 久久永久免费| 国产亚洲精品一区二555| 亚洲无线视频| 亚洲欧洲一区二区三区| 久久精品99无色码中文字幕| 国产精品麻豆成人av电影艾秋| 亚洲人成在线免费观看| 久久天天躁狠狠躁夜夜av| 一区二区免费在线观看| 欧美成人精品三级在线观看| 韩日成人在线| 久久激情五月丁香伊人| 中文无字幕一区二区三区| 免费中文字幕日韩欧美| 狠狠色综合网站久久久久久久| 新狼窝色av性久久久久久| 亚洲精品乱码久久久久| 美女黄毛**国产精品啪啪| 国产专区精品视频| 久久av一区二区三区| 亚洲四色影视在线观看| 欧美午夜电影在线| 在线一区观看| 99精品热6080yy久久| 欧美三级午夜理伦三级中视频| 亚洲精品国精品久久99热一| 欧美成人精品一区二区三区| 久久综合精品一区| 久久久夜精品| 性色一区二区三区| 国产色婷婷国产综合在线理论片a| 亚洲一区二区在线免费观看| 99re热精品| 国产精品国产成人国产三级| 亚洲影院一区| 欧美怡红院视频| 精品动漫一区二区| 欧美成在线观看| 欧美国产日韩在线| 夜夜嗨av一区二区三区网页| 一本色道久久88亚洲综合88| 国产精品每日更新| 久久精品首页| 美日韩精品免费| 一区二区电影免费在线观看| 亚洲午夜精品17c| 国产亚洲精品久久久久久| 蜜臀av一级做a爰片久久| 欧美成人高清| 午夜精品久久久久久久久久久久 | 亚洲国产mv| 欧美日韩四区| 久久精品视频播放| 欧美高清在线一区二区| 亚洲少妇在线| 久久九九久精品国产免费直播| 亚洲裸体俱乐部裸体舞表演av| 99视频一区二区| 国产在线国偷精品产拍免费yy| 亚洲国产精品福利| 国产精品任我爽爆在线播放| 免费日韩视频| 国产精品婷婷| 亚洲电影在线| 国产小视频国产精品| 亚洲日本成人| 激情久久久久久| 亚洲视频 欧洲视频| 亚洲人成亚洲人成在线观看 | 欧美美女福利视频| 久久九九精品99国产精品| 欧美理论电影在线观看| 久久精品亚洲一区二区| 欧美日韩精品免费| 欧美成人免费全部| 国产麻豆成人精品| 洋洋av久久久久久久一区| 在线观看亚洲视频| 亚洲欧美福利一区二区| 一区二区日韩伦理片| 久久香蕉国产线看观看av| 欧美亚洲三区| 欧美午夜精品一区| 亚洲激情偷拍| 亚洲电影在线免费观看| 欧美一区二区三区在线免费观看 | 美女在线一区二区| 亚洲丶国产丶欧美一区二区三区 | 91久久综合亚洲鲁鲁五月天| 欧美在线观看视频一区二区三区 | 亚洲精品永久免费| 久久久久久9| 久久青草久久| 国产一区在线视频| 午夜亚洲视频| 欧美一区二区性| 国产精品爽黄69| 99天天综合性| 一本久道久久综合狠狠爱| 欧美国产国产综合| 亚洲成色777777在线观看影院| 红桃视频一区| 久久久久久久久久久成人| 久久久水蜜桃| 影音欧美亚洲| 老巨人导航500精品| 欧美电影免费网站| 亚洲精品欧美| 欧美日韩精品| 亚洲制服av| 久久国产精品亚洲va麻豆| 国产日韩欧美精品在线| 欧美在线影院| 欧美电影免费观看高清完整版| 亚洲国产婷婷香蕉久久久久久99| 免费观看欧美在线视频的网站| 亚洲国产成人av好男人在线观看| 亚洲精品视频中文字幕| 欧美顶级艳妇交换群宴| 日韩午夜精品| 欧美在线观看视频| 激情综合激情| 欧美黄在线观看| 亚洲视频精选在线| 欧美一区二区视频网站| 国产一区二区你懂的| 久久久九九九九| 亚洲国产成人在线| 亚洲欧美福利一区二区| 国内精品久久久| 欧美成人国产va精品日本一级| 亚洲麻豆一区| 久久精品国产亚洲5555| 亚洲激情一区| 国产精品麻豆va在线播放| 久久经典综合| 亚洲精品国产精品久久清纯直播| 亚洲欧美国产日韩天堂区| 国内成人精品视频| 欧美人与性动交α欧美精品济南到 | 亚洲乱码国产乱码精品精98午夜| 欧美日韩精品在线播放| 性色一区二区| 亚洲三级观看| 久久资源av| 亚洲视频一二| 亚洲激情视频在线观看| 国产精品视频免费| 麻豆精品传媒视频| 亚洲激情视频在线| 欧美二区乱c少妇| 亚洲午夜一区| 91久久精品国产91久久性色| 欧美亚洲视频| 99精品国产在热久久下载| 国产一区在线看| 国产精品成人国产乱一区| 久久精品日产第一区二区| 日韩一级成人av| 嫩草成人www欧美| 欧美怡红院视频| 亚洲无线一线二线三线区别av| 一区二区在线免费观看| 国产精品女主播| 欧美日韩三区| 欧美日韩成人综合| 久久综合九色欧美综合狠狠| 亚洲综合首页| 亚洲一区二区视频在线观看|