• <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>

            socketref,再見(jiàn)!高德

            https://github.com/adoggie

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(54)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            TCE
            項(xiàng)目全稱Tiny Communication Engine,意味著小型的通信引擎




            RPC技術(shù):
                RPC是指遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call),這種技術(shù)被定義出來(lái)應(yīng)該有成長(zhǎng)的歷史時(shí)間。
                RPC技術(shù)意在消除網(wǎng)絡(luò)通信的細(xì)節(jié),讓開(kāi)發(fā)者只需關(guān)心具體的業(yè)務(wù)而不必考慮由于網(wǎng)絡(luò)、硬件、系統(tǒng)的異構(gòu)復(fù)雜環(huán)境。相關(guān)的RPC有DCOM,java的RMI,CORBA,VISIBROKER,ICE(zeroc.com)等等。
                xmlRPC是基于xml數(shù)據(jù)格式的RPC封裝,相關(guān)的使用項(xiàng)目也不老少,但這東東由于是xml格式,數(shù)據(jù)流量太大,不建議使用。

            使用RPC的原因:
                 傳統(tǒng)端到端的通信方式一般都是基于流的數(shù)據(jù)傳遞,應(yīng)用消息在發(fā)送端編碼并傳送到接收端解碼。 這是一個(gè)重復(fù)造輪子的過(guò)程,不同的應(yīng)用協(xié)議由于規(guī)格不同,消息到流的序列化和反序列化過(guò)程不可避免。這個(gè)過(guò)程是個(gè)容易出錯(cuò)的過(guò)程,應(yīng)用協(xié)議的改動(dòng)則必須再次修改編解碼代碼,這不該是提倡的,且顯得異常無(wú)奈和低端。
                流式的數(shù)據(jù)在接收之后必須進(jìn)行應(yīng)用類型的消息分揀,以便分派消息到不同的處理函數(shù),這個(gè)過(guò)程同樣也會(huì)被重復(fù)的編寫(xiě)。
                


            TCE是RPC的實(shí)現(xiàn):
                因?yàn)槭禽p量級(jí)的,所以很容易被修改、擴(kuò)展或者被重新定義。 
                目前已經(jīng)支持多種開(kāi)發(fā)語(yǔ)言和通信方式。

            TCE的功能特點(diǎn): 
                 1.多通信協(xié)議:   rpc的消息可以在多種協(xié)議上被交換,協(xié)議包括:socket,websocket,MQ,http。 socket應(yīng)用于最常見(jiàn)的端端通信,c,s兩端直接socket完成通信; websocket支持html5的javascript與服務(wù)器的通信; MQ 指集群系統(tǒng)之間消息隊(duì)列作為數(shù)據(jù)傳遞總線時(shí),Rpc消息作為MQ的消息包被傳遞交換。

                 2.基于接口級(jí)別的調(diào)用:  這種模式完全不同與流消息傳遞,用戶無(wú)需關(guān)心消息如何被序列化和反序列化,并且無(wú)需參與消息類型到處理業(yè)務(wù)函數(shù)的分揀,這一切都是自動(dòng)的,A只需調(diào)用B的一個(gè)函數(shù)接口即可

                 3.多語(yǔ)言支持: TCE目前實(shí)現(xiàn)的語(yǔ)言有c++,java,javascript,as3,python 支持在這些語(yǔ)言之間互相接口調(diào)用。

                 4.一致的通信服務(wù):   
                       tce內(nèi)置高性能的通信服務(wù)器,c++版本采用boost::asio,python版本采用gevent作為通信引擎

                 5. 多種調(diào)用模式:
                        normal-call (twoway) - client調(diào)用server接口,此刻線程被阻塞,直到server處理返回
                           oneway-call - client調(diào)用server接口之后即刻返回,這種適用于揮發(fā)性的調(diào)用請(qǐng)求類型,例如:心跳包  
                           timeout-call - client調(diào)用server接口,此刻線程被阻塞,直到server處理返回,如果超時(shí),線程會(huì)被解除阻塞
                           async-call - client調(diào)用server接口之后即刻返回,server處理返回之后將回調(diào)client的異步處理函數(shù)
                           reversed-call - NAT網(wǎng)絡(luò)模式下,client發(fā)起RPC調(diào)用時(shí)將建立與server的socket連接,并請(qǐng)求server端RPC接口;反向調(diào)用指server端憑借此連接調(diào)用client端的RPC接口

            接口定義語(yǔ)言(IDL):
                不同的Rpc的實(shí)現(xiàn)都有自己的定義規(guī)格,TCE的規(guī)格類似與ICE。
                文件命名:<interface>.idl 
                1. 數(shù)據(jù)類型: 
                  --name       size    c++                java             python             as3           javascript 
                    byte              1      int8                 byte             int                  byte
                    short             2      int16               short            int
                    int                 4      int32               int                int
                    float              4      float                float              float
                    long              8       int64              long              int
                    double           8      double             long              float
                    string            -       std::string       String           str
                    bool              1       bool                boolean         True/False
                    sequence                std::vector      Vector           []                 Array               Array
                    dictionary                std::map         HashMap       {}                HashMap          Hash
                    struct                     struct             class               class           class               function

                1. module:  系統(tǒng)模塊定義,同一個(gè)接口文件中可以包含多個(gè)module定義
                      module first{ ... }
                      module second{ ... }

                 2. struct :  數(shù)據(jù)結(jié)構(gòu)定義
                           struct Student{
                               int no;
                               string name;
                               int grade;
                            };
                   
                 3. sequence: 數(shù)組 
                     sequence<int> IdList;
                     sequence<string> StrList;

                  4. dictionary: 哈希結(jié)構(gòu)
                     dictionary<string,Student>   StudentList;

                  5. interface :  接口定義
                      interface GisServer{
                            string Authorize(string user,string passwd);
                            GpsData  getGpsData(string device_id);
                      };

                         
            posted on 2013-09-15 22:25 放屁阿狗 閱讀(2306) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            MM131亚洲国产美女久久| 香蕉99久久国产综合精品宅男自 | 99久久精品国产麻豆| 乱亲女H秽乱长久久久| 精品一区二区久久| 中文字幕久久精品| 99久久精品国产免看国产一区| 精品国产热久久久福利| 久久久久久久精品妇女99| 97久久久精品综合88久久| 色8激情欧美成人久久综合电| 亚洲中文字幕无码久久综合网| 好属妞这里只有精品久久| 三级三级久久三级久久| 国产 亚洲 欧美 另类 久久| 亚洲国产美女精品久久久久∴ | 欧美久久亚洲精品| 久久精品国产亚洲AV大全| 一本色道久久88综合日韩精品| 久久精品九九亚洲精品| 亚洲中文字幕久久精品无码喷水 | 免费精品国产日韩热久久| 91精品国产色综久久| 久久久久女人精品毛片| 久久婷婷五月综合国产尤物app| 久久精品国产清自在天天线| 人人狠狠综合久久亚洲88| 精品国际久久久久999波多野| 久久久久久久久久久精品尤物| 香蕉99久久国产综合精品宅男自 | 99久久99久久精品免费看蜜桃| 久久亚洲精品无码aⅴ大香 | 久久久久99这里有精品10 | 中文字幕精品久久| 久久嫩草影院免费看夜色| 国产成人精品久久一区二区三区av | 久久国产精品无码HDAV | 久久96国产精品久久久| 波多野结衣中文字幕久久| 777米奇久久最新地址| 97久久综合精品久久久综合|