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

            飯中淹的避難所~~~~~

            偶爾來避難的地方~

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              94 隨筆 :: 0 文章 :: 257 評論 :: 0 Trackbacks

            【結構】

             這種架構模型,是一種由 APP/ SERVICE / SESSION 組合而成的架構模型,一般縮寫為 ASS。(這個縮寫比較有意思~~)

            APP 就是服務應用程序的一個代理,它接管應用程序的控制權(就是在MAIN或者WINMAIN里面直接進入一個APP的內部循環,直到程序結束才返回),并在內部進行初始化和結束的收尾工作,并管理所有的SERVICE。

            SERVICE 就是服務,它負責管理一個服務,和它下屬的所有SESSION(會話),在TCP協議下,它就是一個監聽器對象,在一個端口上提供服務。

            SESSION 就是會話,它負責維持一個和外部呼叫者之間的會話。在TCP協議下,它就是一個連接對象,用來和一個外部的用戶進行通信。

            從整體上看,是APP管理著一群SERVICE,然后SERVICE管理著一群SESSION 的這樣一種樹狀,金字塔狀,食物鏈狀的框架結構。


            【工作方式】

            當一個使用ASS架構的服務器應用程序啟動的時候,首先進行APP的初始化,在這里面,用戶(服務應用編寫者)可以(需要)將這個服務器應用所用到的所有服務開啟,并進行一些設定的讀取,和對象的創建。
            初始化完成之后,SERVICE都被啟動起來之后,APP進入一個服務器心跳的循環里,并驅動在它管轄之下的所有SERVICE的心跳。
            而此時,所有的SERVICE都在各自的服務上進行監聽,當獲得一個外部連入時,就創建一個SESSION,并管理起來。
            而SESSION從連入開始的時候被創建,一直生存到外部連入結束為止。

            【優點】

            分級式的架構方式,易于管理,方便擴展,且相當靈活。
            讓本來雜亂無章的服務器應用,變的井井有條起來。


            【歷史】

            這個架構最初源于我的一次服務器網絡底層的重構。因為項目里面的一個服務器應用需要在兩個端口上進行不同的服務監聽,而之前的網絡底層只能在一個應用里面創建一個監聽,應用受到了一定的限制,于是我設計了最初的分級模型,一直發展到今天,SESSION從最初的CLIENTSHADOW到后來的CONNECTION,最終定為SESSION,這個歷程也反映了我對“會話”這個概念的不斷重新認識。而SERVICE則一直是叫做SERVICE,因為它的含義足夠清晰。APP一直沒有找到合適的詞語,索性就用APP來稱呼算了。然后就出現了這個有趣的ASS縮寫。

            【產品】

            現在,我用這種模型構建了一套服務器引擎的組件,叫做“X Server Engine”。其實就是將APP, SERVICE, SESSION的主要部分和事件部分剝離開,互相使用C++的純虛接口進行通信。把網絡框架和網絡底層封裝在一個動態鏈接庫里面,只導出框架接口,從而實現應用代碼和底層代碼的分離。通過一些簡單的接口派生,就可以創建強大的服務器應用了。這套組件的代碼,會在合適的時候公開出來,現在里面還是一團糟啊= =。這個組件是分為三個平臺,WINNT( NT4.0以上IOCP支持),LINUX(EPOLL支持),FREEBSD(KQUEUE),每個平臺上使用效率最高的網絡底層,而外部接口則是完全一致,基本實現一處編寫,處處編譯^_^。


            【附圖】

                藍色線表示客戶端主動連接,通過Service的Port Listener在Service內建立起Session。
                紅色線表示Service內部的一個Session主動連接到外部的服務器。
                但是在Service內部,所有已經建立連接的Session都進行相同的處理。






            posted on 2008-04-03 00:27 飯中淹 閱讀(2155) 評論(3)  編輯 收藏 引用

            評論

            # re: 一種完善的面向對象的網絡架構模型 - ASS 2008-04-03 08:37 mm
            想看看,期待之  回復  更多評論
              

            # re: 一種完善的面向對象的網絡架構模型 - ASS 2008-04-03 08:49 Kevin Lynx
            早就想看XServerEngine了。

            Server(Service)
            / | \
            Session1 Session2 Session3

            完成理解,呵呵 .

              回復  更多評論
              

            # re: 一種完善的面向對象的網絡架構模型 - ASS 2008-04-07 12:01 cppexplore
            期待中......
            看來是一個更高一級的封裝,考慮的東西更多更復雜。公布出來一定拜讀。  回復  更多評論
              

            久久久精品2019免费观看| 蜜桃麻豆www久久国产精品| 精品九九久久国内精品| 久久人人爽人人爽AV片| 久久亚洲中文字幕精品一区| 国产精品久久久久久福利漫画| 国产巨作麻豆欧美亚洲综合久久| 7777精品久久久大香线蕉| 久久九九青青国产精品| 久久久久久久久久久久久久| 国产A级毛片久久久精品毛片| 久久人人爽人人爽人人AV| 久久婷婷五月综合成人D啪| 国产∨亚洲V天堂无码久久久| 久久青青色综合| 亚洲国产成人精品女人久久久 | 亚洲欧美日韩中文久久| 久久国产成人亚洲精品影院| 久久99精品久久久久子伦| 7777精品久久久大香线蕉| 中文字幕无码av激情不卡久久| 99久久精品费精品国产| 久久国产亚洲精品麻豆| 国产精品久久久久久影院| 一本久久a久久精品vr综合| 久久久久九九精品影院| 久久久精品人妻无码专区不卡| 国产精品九九久久免费视频| 国产精品久久久久久影院| 久久久精品2019免费观看| 久久99精品国产自在现线小黄鸭| 久久精品国产99国产精品亚洲| 亚洲国产精品成人久久蜜臀 | 中文字幕无码久久精品青草| 久久亚洲AV永久无码精品| 久久丝袜精品中文字幕| 亚洲精品无码专区久久同性男| 亚洲人AV永久一区二区三区久久| 久久久青草青青国产亚洲免观| 欧美亚洲日本久久精品| 一本综合久久国产二区|