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

posts - 2,  comments - 25,  trackbacks - 0
 

ICE Service使用方法簡介

最近研究了一下網絡通信中間件ICE的使用,粗通其皮毛,按照官方手冊依葫蘆畫瓢寫了一個程序員都喜聞樂見的“Hello World”程序,服務端和客戶端均用C++開發,通訊協議使用默認的TCP。感覺ICE的大致好處有以下兩點:

1.       平臺無關性。無論客戶端或者服務端均可用現在流行的開發語言(C++ /JAVA/C#/php)進行開發,并且屏蔽語言差異性。現在比較流行的方式是客戶端用C#開發,與用C++開發的服務端直接通訊。

2.         通訊協議多樣性。現在可選擇TCPUDPHTTP進行通訊,如果對安全要求較高,可選擇SSL對傳輸的數據進行加密。

另外ICE還提供一些擴展組件,實現網絡通訊的負載均衡(ICEGrid,通訊節點統一管理(ICEBOX),程序自動更新(ICEPatch)等,方便應用擴展。

如果使用過ICE的人都知道,在實現服務端或者客戶端的時候通常都要寫一些“公式化”的代碼,負責Ice通信器初始化、異常捕獲,以及應用終止后的銷毀。如下所示:

 1int status=0;
 2
 3     Ice::CommunicatorPtr ic;
 4
 5     try
 6
 7     {
 8
 9         ic = Ice::initialize(argc,argv);
10
11         Ice::ObjectAdapterPtr adapter = 
12
13         ic->createObjectAdapterWithEndpoints("SayHelloAdapter","tcp -h 127.0.0.1 -p 10000");
14
15         Ice::ObjectPtr object = new HelloICEI;
16
17        adapter->add(object,ic->stringToIdentity("SimpleHello"));
18
19        adapter->activate();
20
21         ic->waitForShutdown();
22
23     }

24
25     catch (const Ice::Exception & e)
26
27     {
28
29         cerr << e << endl;
30
31         status = 1;
32
33     }
 
34
35     catch (const char * msg) 
36
37     {
38
39         cerr << msg << endl;
40
41         status = 1;
42
43     }

44
45     if ( ic ) 
46
47     {
48
49         try 
50
51         {
52
53              ic->destroy();//關閉ICE
54
55         }

56
57         catch (const Ice::Exception & e)
58
59         {
60
61              cerr << e << endl;
62
63              status = 1;
64
65         }

66
67}

68
69



如果每次都要寫這么多的話,第一浪費時間和精力,第二不能將注意力集中到業務邏輯上。還有一點就是對代碼的整潔和易讀方面做的不夠好(本人略微有些代碼“潔癖”)。

閱讀官方手冊,發現ICE提供兩個工具類封裝了這些“公式化”邏輯,分別是“Application”和“Service”。

Ice::Application本身是一個抽象類,其run()函數為純虛函數,因此必須被繼承后使用。

Ice::Application 是一個單體(singleton)類,會創建單個通信器。如果你要使用多個通信器,不能使用Ice::Application來定義多個App。而至多定義一個App的實例。

其它通信器需要使用Ice::initialize()手工生成。

一般而言,Ice::Application 類對于Ice 客戶和服務器來說已經非常方便,但在有些情況下,應用可能需要作為Unix 看守(daemon)或Win32 服務運行在系統一級。對于這樣的情況,Ice 提供了Ice::Service。一個可與Ice::Application 相比的單體類,但它還封裝了低級的、 針對特定平臺的初始化和關閉步驟――系統服務常常需要使用這樣的步驟。

下面介紹Ice::Service的使用方法,僅介紹開發步驟,后面附上具體例子下載。

1. 需要在服務端中引用Ice/Service.h頭文件。本人曾在此浪費了2個小時。

2. 新建一個類繼承Ice::Service,并實現其中的三個虛函數。代碼如下:

 

 1class MyService : public Ice::Service
 2
 3{
 4
 5protected:
 6
 7virtual bool start(intchar *[],int&);
 8
 9virtual bool stop();
10
11virtual void interrupt();
12
13private:
14
15Ice::ObjectAdapterPtr m_adapter;
16
17}
;
18
19void MyService::interrupt()
20
21{
22
23std::cout << "Receive signal " << std::endl;
24
25Ice::Service::interrupt();
26
27}

28
29bool MyService::stop()
30
31{
32
33std::cout << "Stop running " << std::endl;
34
35return true;
36
37}

38
39bool MyService::start(int argc, char * argv[],int& status)
40
41{
42
43std::string endpoint = "tcp -h localhost -p 10000";
44
45m_adapter = communicator()->createObjectAdapterWi thEndpoints("SimpleHelloAdapter", endpoint);
46
47Ice::ObjectPtr object = new HelloICEI;
48
49m_adapter->add(object,communicator()->stringToIdentity("SimpleHello"));
50
51m_adapter->activate();
52
53return true;
54
55}

56
57


  3.   在main函數中啟動服務。此處需要注意對于服務來說最常見的有安裝服務、卸載服務、啟動服務、停止服務四個操作。這四個操作分別通過啟動參數來控制。以Win32平臺為例:

--service NAME

作為名叫NAME 的Windows 服務啟動。在傳給start 成員函數的參數向量中,這個選項會被移除。

但是,在應用作為Windows 服務運行之前,它必須先被安裝,因此,Ice::Service 類還支持另外一些的命令行選項,用于執行管理活動:

--install NAME [--display DISP] [--executable EXEC][ARG ...]

安裝NAME 服務。如果指定了--display 選項,就把DISP 用作服務的顯示名,否則就使用NAME。如果指定了--executable 選項,就把EXEC 用作服務的可執行路徑名,否則就使用可執行文件的路徑名來調用--install。其他任何參數都會不加改變地傳給Service::start 成員函數。注意,在啟動時傳給服務的參數集中,這個命令會自動增加命令行參數--service NAME,因此,你不需要顯式地指定這些選項。

--uninstall NAME

移除NAME 服務。如果服務目前是活動的,在反安裝之前,必須先使它停止。

--start NAME [ARG ...]

啟動NAME 服務。其他任何參數都會不加改變地傳給Service::start 成員函數。    

--stop NAME

停止NAME 服務。如果指定的管理命令不止一個,或者在使用--service 的同時還使用了管理命令,就會發生錯誤。在執行了管理命令之后,程序會立即終止。Ice::Service 類支持Windows 服務控制代碼SERVICE_CONTROL_INTERROGATE 和SERVICE_CONTROL_STOP。在收到SERVICE_CONTROL_STOP 時,Ice::Service 會調用shutdown 成員函數。

在Visual Studio中設置啟動參數—install MyService,可在系統服務中注冊名為“MyService”的服務。



啟動服務端程序可以在系統服務列表中看到MyService已經作為服務注冊進去了。



4. 至此ICE的服務端即可作為系統服務的形式存在與客戶端進行通訊了。

示例代碼下載 

posted on 2011-07-10 13:10 三夏健 閱讀(2036) 評論(3)  編輯 收藏 引用 所屬分類: ICE

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久亚洲| 午夜欧美大尺度福利影院在线看 | 欧美日韩亚洲网| 欧美日韩一区精品| 欧美视频网址| 国产乱肥老妇国产一区二| 国产亚洲欧美aaaa| 亚洲夫妻自拍| 制服丝袜亚洲播放| 欧美在线黄色| 美女日韩在线中文字幕| 国产亚洲精品一区二区| 新狼窝色av性久久久久久| 欧美一区二区三区四区在线观看地址 | 欧美在线中文字幕| 免费不卡在线观看| 欧美视频在线观看 亚洲欧| 国产麻豆成人精品| 亚洲人成网站影音先锋播放| 亚洲午夜精品网| 久久夜色精品| 亚洲少妇一区| 欧美不卡视频| 国产一区亚洲| 亚洲先锋成人| 欧美gay视频| 亚洲视频在线看| 免费欧美日韩| 国产亚洲精品久久久久动| 亚洲精品欧洲精品| 久久综合五月| 亚洲女人小视频在线观看| 玖玖综合伊人| 国产亚洲精品福利| 亚洲在线视频一区| 最新日韩中文字幕| 久久久久久久久久久一区 | 国产精品久久久久久久电影| 影音先锋欧美精品| 欧美主播一区二区三区美女 久久精品人 | 欧美在线播放视频| 国产精品欧美激情| 99精品视频免费在线观看| 玖玖在线精品| 欧美一区二区三区久久精品茉莉花| 欧美女同视频| 亚洲剧情一区二区| 欧美高清在线视频观看不卡| 久久精品99国产精品日本| 国产精品一区在线观看| 亚洲视频电影图片偷拍一区| 亚洲国产专区| 免费短视频成人日韩| 精品999在线观看| 久久久久国产精品一区三寸| 午夜精品久久久久久99热软件| 国产精品久久久久77777| 亚洲精品影视| 亚洲在线免费| 国产精品一区二区三区成人| 亚洲视频在线观看三级| 亚洲精品孕妇| 欧美午夜不卡在线观看免费| 一区二区三区产品免费精品久久75 | 久久久久久夜| 久久精品亚洲国产奇米99| 国产主播在线一区| 久久只有精品| 免费在线视频一区| 日韩午夜激情电影| 夜夜嗨av色综合久久久综合网| 欧美精品激情| 亚洲小说欧美另类社区| 亚洲综合国产精品| 狠狠色综合色区| 欧美激情亚洲视频| 欧美视频中文字幕在线| 欧美在线观看视频一区二区三区| 性欧美1819性猛交| 亚洲国产日韩欧美在线动漫| 亚洲欧洲日本国产| 国产精品麻豆va在线播放| 久久米奇亚洲| 欧美精品在线免费播放| 午夜在线观看欧美| 久久男女视频| 亚洲午夜一区二区| 久久久久久国产精品一区| 亚洲精品国产拍免费91在线| 一区二区三区视频在线| 伊人成综合网伊人222| 亚洲精品视频中文字幕| 国产三级精品在线不卡| 亚洲国产一区二区三区青草影视| 欧美午夜精品久久久| 久久综合伊人77777尤物| 欧美日韩视频一区二区| 久久尤物视频| 国产精品日日做人人爱| 亚洲精品1区| 韩国亚洲精品| 亚洲一级在线观看| 一本色道久久| 免费欧美日韩| 久久精品夜色噜噜亚洲a∨| 欧美高清在线一区二区| 久久精品理论片| 国产精品白丝av嫩草影院| 欧美成年人视频网站欧美| 国产精品自拍在线| 亚洲免费激情| 亚洲精品欧美日韩| 久久国产精品毛片| 午夜亚洲福利在线老司机| 欧美精品在线视频| 亚洲第一中文字幕在线观看| 国产香蕉97碰碰久久人人| 亚洲日本欧美日韩高观看| 亚洲高清免费视频| 国产日本亚洲高清| 在线亚洲精品| 一区二区激情| 欧美精品激情| 亚洲人成绝费网站色www| 亚洲高清不卡在线| 久久天天躁夜夜躁狠狠躁2022 | 欧美国产精品人人做人人爱| 国产免费成人| 亚洲免费视频成人| 亚洲影院色无极综合| 欧美午夜无遮挡| 亚洲午夜免费福利视频| 亚洲欧美日韩成人高清在线一区| 欧美人妖另类| 一本色道久久综合精品竹菊| 亚洲香蕉网站| 国产女人精品视频| 欧美在线三级| 免费观看日韩av| 亚洲国产精品一区二区第四页av| 久久精品国产综合精品| 美女在线一区二区| 亚洲区一区二区三区| 欧美国产日产韩国视频| 亚洲国产日韩欧美综合久久| 日韩午夜在线| 国产精品久久久久久户外露出 | 亚洲日本电影在线| 欧美日韩国产bt| 亚洲午夜av| 久久蜜桃精品| 日韩视频欧美视频| 国产精品久久久久久久久免费| 亚洲一区三区在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 久久久久久综合| 亚洲高清一二三区| 亚洲一区日本| 国内揄拍国内精品少妇国语| 久久综合九色综合欧美就去吻| 亚洲大片在线| 销魂美女一区二区三区视频在线| 国产精品综合久久久| 久久久久久久久久码影片| 亚洲欧洲三级电影| 欧美一区二区三区免费视频| 激情综合久久| 欧美日韩国产二区| 欧美综合国产精品久久丁香| 亚洲国产高清aⅴ视频| 亚洲欧美日韩精品久久久| 亚洲风情在线资源站| 国产精品试看| 欧美成人精品激情在线观看 | 欧美黄色一级视频| 午夜欧美电影在线观看| 亚洲经典三级| 久久综合色婷婷| 国产亚洲综合精品| 亚洲日韩欧美视频一区| 久久精品123| 亚洲一区美女视频在线观看免费| 国产在线日韩| 国产精品网站视频| 欧美激情视频一区二区三区免费| 亚洲男人的天堂在线| 亚洲国产免费看| 快播亚洲色图| 久久高清国产| 午夜精品久久久久| 一区二区三区高清不卡| 亚洲电影专区| 狠狠色狠狠色综合系列| 国产精品狼人久久影院观看方式| 嫩模写真一区二区三区三州| 欧美在线免费看| 欧美一区观看| 午夜欧美视频| 亚洲欧美一区二区三区在线| 一区二区毛片|