日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅入ICE组件编程

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅入ICE组件编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、ICE介紹

???????? ICE是ZeroC公司開發(fā)的一款高效的開源中間件平臺,全稱是Internet Communications Engine。

???????? 它的主要設計目標是:

???????? ? 提供適用于異種環(huán)境的面向對象中間件平臺。

???????? ? 提供一組完整的特性,支持廣泛的領域中的實際的分布式應用的開發(fā)。

?????? ? ? 避免不必要的復雜性,使平臺更易于學習和使用。

?????? ? ? 提供一種在網絡帶寬、內存使用和 CPU 開銷方面都很高效的實現(xiàn)。

?????? ? ? 提供一種具有內建安全性的實現(xiàn),使它適用于不安全的公共網絡。

???????? ICE支持多種編程語言:C++、Java、C#、VB、Python、Ruby,也就是說使用ICE時我們可以讓這些語言無縫溝通,不過由于ICE是用C++編寫的,不管用什么語言,你都需要先用C++編譯出一個ICE才行(或者下載已編譯的版本)。

???????? 跨語言的分布式系統(tǒng)首先要定義一個與編程語言無關的接口描述語法,用于分布于各處的服務器與客戶端之間對話。比如DCOM和CORBA使用IDL語法,SOAP使用WSDL語法,當然還有時下流行的JSON。ICE使用的是稱為Slice(Specificatoin Language for Ice)的語法,Slice語法和C++(或Java,C#)比較相近,只要會C++(或Java,C#)很容易就能寫Slice定義了。

二、配置ICE開發(fā)環(huán)境

???????? 首先,從http://www.zeroc.com/download.html 下載ICE,目前最新版本是Ice-3.5.1。下載頁面里除了ICE的源碼之外,也提供了VC或C++Builder的已編譯安裝包以及各Linux版本的RPM下載。

???????? 如果下載的是源碼版本,需要編譯的話,最好使用相同版本的編譯器。

1)、ICE需要一些第三方庫,在編譯ICE之前要先編譯第三方庫,清單如下(它們也能在ICE官網上下載):

Berkeley DB

expat

OpenSSL

bzip2

mcpp

2)、編譯完上面這些庫以后,把它們放到同一個目錄中,然后設置用戶環(huán)境變量。

???????? ICE_ROOT= D:\Program Files\ZeroC\Ice-3.5.1

3)、把上面編譯好或直接下載的已編譯版本的ice.lib和iceutil.lib(或Debug版本的iced.lib和 iceutild.lib)鏈接入項目即可。

三、ICE的“HelloWorld”

???????? 本文以網上用到比較多的printer經典代碼作為范例說明。

1)、定義接口文件demo.ice

[cpp]?view plaincopy
  • //**********************************************************************??
  • ??
  • //??
  • ??
  • //?Copyright?(c)?2014??
  • ??
  • //?xxxxx有限公司??
  • ??
  • //?2014.05.23??
  • ??
  • //?liuxuezong,?上海??
  • ??
  • //??
  • ??
  • //?AllRights?Reserved??
  • ??
  • //??
  • ??
  • //**********************************************************************??
  • ??
  • ???
  • ??
  • #ifndef?demo_ice??
  • ??
  • #define?demo_ice??
  • ??
  • //??
  • ??
  • //?version?1.0.0??
  • ??
  • //??
  • ??
  • ???
  • ??
  • module?Demo??
  • ??
  • {??
  • ??
  • ?????????interface?Printer??
  • ??
  • ?????????{??
  • ??
  • ??????????????void?printString(string?strMsg);??
  • ??
  • ?????????};??
  • ??
  • };??
  • ??
  • ???
  • ??
  • #endif??
  • ???????? 它定義一個Printer接口(interface),這個接口只有一個printString方法,輸入參數(shù)是一個字符串(string)。最后,這個接口位于Demo模塊(module)之下。

    2)、生成接口文件

    ???????? 使用slice2cpp程序依據(jù)這個Slice定義生成C++使用的頭文件和對應的代理代碼。

    >slice2cpp demo.ice

    ??? 如果沒提示錯誤,就會生成demo.h和demo.cpp,把這兩個文件加入到服務器端項目和客戶端項目后,客戶端就可以向服務器發(fā)送消息了。

    > slice2java demo.ice

    ??? 生成java相關代碼,文件較多,這里就不一一寫出了。

    > slice2cs demo.ice

    ??? 生成c#相關代碼只有一份:demo.cs。

    3)、Slice與C++的映射關系

    Slice

    C++

    #include

    #include

    #ifndef

    #ifndef

    #define

    #define

    #endif

    #endif

    module

    namespace

    bool

    bool

    byte

    Ice::Byte

    short

    Ice::Short

    int

    Ice::Int

    long

    Ice::Long

    float

    Ice::Float

    double

    Ice::Double

    string

    Ice::string

    enum

    enum(不支持指定數(shù)字)

    struct

    struct

    class

    class(所有方法都是純虛函數(shù))

    interface

    struct(所有方法都是純虛函數(shù),沒有成員變量)

    sequence<T>

    std::vector<T>

    dictionary<Key,Value>

    std::map<Key,Value>

    exception Err

    class Err:public Ice:UserException

    nonmutating方法限定符

    const方法

    idempotent方法限定符

    -

    out 參數(shù)限定符

    引用類型

    *

    對應類型的代理類

    ?? ? ? ? 參考這個表,可以知道上面的Slice定義對應的C++映射如下:

    namespace?Demo

    {

    ?????????struct?Printer

    ???????? {

    ???????????????????virtual?void?printString(string strMsg) = 0;

    ???????? };

    };

    4)、C++代碼實現(xiàn)

    第1步:新建一個控制臺項目democlient;

    第2步:將“./;$(ICE_ROOT)\include”添加到“c/c++”->“常規(guī)”->“附件包含目錄” 列表中;


    圖3-1 包含目錄設置

    第3步:將“$(ICE_ROOT)\lib” 添加到“鏈接器”->“常規(guī)“->“附件庫目錄”列表中;


    圖3-2 附加庫目錄設置

    第4步:將“iced.lib”和“iceutild.lib”(debug版本)添加到“鏈接器”->“輸入“-> “附加依賴項”列表中,鏈接入到項目中。


    圖3-3 導入靜態(tài)庫設置

    C++客戶端代碼democlient:

    [cpp]?view plaincopy
  • #include?<ice/ice.h>??
  • ??
  • #include?"demo.h"??
  • ??
  • ???
  • ??
  • using?namespace?std;??
  • ??
  • using?namespace?Demo;??
  • ??
  • ???
  • ??
  • int?main(int?argc,?char?*argv[])??
  • ??
  • {??
  • ??
  • ?????????Ice::CommunicatorPtr?ic;??
  • ??
  • ?????????try??
  • ??
  • ?????????{??
  • ??
  • ???????????????????//?初始化Ice運行庫??
  • ??
  • ???????????????????ic?=?Ice::initialize(argc,argv);??
  • ??
  • ???????????????????//?在10000端口取得?SimplePrinter代理對象??
  • ??
  • ???????????????????Ice::ObjectPrx?base?=ic->stringToProxy("SimplePrinter:default?-p10000");??
  • ??
  • ???????????????????//?把對象轉換成Printer?代理??
  • ??
  • ???????????????????PrinterPrx?printer?=??PrinterPrx::checkedCast(base);??
  • ??
  • ???????????????????if(!printer)??
  • ??
  • ???????????????????{??
  • ??
  • ????????????????????????????throw?"InvalidProxy!";??
  • ??
  • ???????????????????}??
  • ??
  • ???????????????????//?能夠用這個代碼調用printString方法??
  • ??
  • ???????????????????printer->printString("Hello?World!");??
  • ??
  • ?????????}??
  • ??
  • ?????????catch?(const?Ice::Exception?&e)??
  • ??
  • ?????????{??
  • ??
  • ?????????????cerr?<<?e?<<?endl;??
  • ??
  • ?????????}??
  • ??
  • ?????????catch?(const?char?*msg)??
  • ??
  • ?????????{??
  • ??
  • ??????????????cerr?<<?msg?<<?endl;??
  • ??
  • ?????????}??
  • ??
  • ?????????//?回收Ice運行庫所用的資源??
  • ??
  • ?????????if?(ic)??
  • ??
  • ?????????{??
  • ??
  • ???????????????????ic->destroy();??
  • ??
  • ?????????}??
  • ??
  • ?????????return0;??
  • ??
  • }??
  • ??????? 您也可以把服務器端部署到別的電腦上,客戶端代碼改成如下代碼,即可實現(xiàn)遠程調用。

    ????????Ice::ObjectPrx base =ic->stringToProxy("SimplePrinter:default -h 127.0.0.1 -p 10000")

    C++服務器代碼demoserver:

    [cpp]?view plaincopy
  • #include?"demo.h"??
  • ??
  • ???
  • ??
  • using?namespace?std;??
  • ??
  • using?namespace?Demo;??
  • ??
  • ???
  • ??
  • //?實現(xiàn)printString方法??
  • ??
  • struct?CPrinterImp?:?Printer??
  • ??
  • {??
  • ??
  • ?????????virtual?void?printString(const::std::string&?strMsg,??
  • ??
  • ???????????????????const::Ice::Current&?=?::Ice::Current())??
  • ??
  • ?????????{??
  • ??
  • ??????????????cout?<<?strMsg?<<?endl;????
  • ??
  • ?????????}??
  • ??
  • };??
  • ??
  • ???
  • ??
  • int?main(int?argc,?char?*argv[])??
  • ??
  • {??
  • ??
  • ?????????Ice::CommunicatorPtr?ic;??
  • ??
  • ???
  • ??
  • ?????????try??
  • ??
  • ?????????{??
  • ??
  • ???????????????????//?回收Ice運行庫所用的資源??
  • ??
  • ???????????????????ic?=?Ice::initialize(argc,argv);??
  • ??
  • ???????????????????//?建立ObjectAdapter,命名為SimplePrinterAdapter,使用默認協(xié)議一般是tcp并在10000端口監(jiān)聽。??
  • ??
  • ???????????????????Ice::ObjectAdapterPtr?adapter=?ic->createObjectAdapterWithEndpoints(??
  • ??
  • ????????????????????????????"SimplePrinterAdapter",?"default?-p?10000");??
  • ??
  • ???????????????????//?把我們實現(xiàn)的Printer加入ObjectAdapter,并命名為SimplePrinter??
  • ??
  • ???????????????????Ice::ObjectPtr?object?=?new?CPrinterImp;??
  • ??
  • ???????????????????adapter->add(object,ic->stringToIdentity("SimplePrinter"));??
  • ??
  • ???????????????????adapter->activate();??
  • ??
  • ???????????????????//?等待直到Communicator關閉??
  • ??
  • ???????????????????ic->waitForShutdown();??
  • ??
  • ?????????}??
  • ??
  • ?????????catch?(const?Ice::Exception?&e)??
  • ??
  • ?????????{??
  • ??
  • ???????????????????cerr?<<?e?<<endl;??
  • ??
  • ?????????}??
  • ??
  • ?????????catch?(const?char?*msg)??
  • ??
  • ?????????{??
  • ??
  • ???????????????????cerr?<<?msg?<<endl;??
  • ??
  • ?????????}??
  • ??
  • ?????????//?回收Ice運行庫所用的資源??
  • ??
  • ?????????if?(ic)??
  • ??
  • ?????????{??
  • ??
  • ???????????????????ic->destroy();??
  • ??
  • ?????????}??
  • ??
  • ?????????return0;??
  • ??
  • }??
  • ???????? 以上代碼編譯通過后,啟動服務端程序。每次調用客戶端后,服務器端會顯示一行

    ???????? “Hello World!”

    5)、java代碼實現(xiàn)


    圖3-4 設置ice.jar

    ??? 從iec3.5.1的lib文件中,把ice.jar添加到工程jar目錄中。

    java客戶端代碼democlient:

    democlient.java主程序:

    [java]?view plaincopy
  • public?class?democlient??
  • ??
  • {??
  • ??
  • ????public?static?void?main(String[]?args)??
  • ??
  • ????{??
  • ??
  • ????????int?status?=?0;??
  • ??
  • ????????Ice.Communicator?ic?=?null;??
  • ??
  • ????????try??
  • ??
  • ????????{??
  • ??
  • ????????????//?Initialize?ICE??
  • ??
  • ????????????ic?=?Ice.Util.initialize(args);??
  • ??
  • ?????????????
  • ??
  • ????????????//?Ice.ObjectPrxbase?=?ic.stringToProxy(??
  • ??
  • ????????????//"SimplePrinter:tcp?-h?127.0.0.1?-p?10000");???????????
  • ??
  • ????????????Ice.ObjectPrx?base?=?ic.stringToProxy(??
  • ??
  • ????????????????????"SimplePrinter:default-p?10000");??
  • ??
  • ?????????????
  • ??
  • ????????????Demo.PrinterPrx?printer?=?Demo.PrinterPrxHelper.checkedCast(base);??
  • ??
  • ?????????????
  • ??
  • ????????????if?(printer?==?null)??
  • ??
  • ????????????{??
  • ??
  • ????????????????thrownew?Error("Invalidproxy");??
  • ??
  • ????????????}??
  • ??
  • ?????????????
  • ??
  • ????????????printer.printString("Hello?World!");??
  • ??
  • ????????}????????
  • ??
  • ????????catch?(Ice.LocalException?ex)??
  • ??
  • ????????{??
  • ??
  • ????????????ex.printStackTrace();??
  • ??
  • ????????????status?=?1;??
  • ??
  • ????????}??
  • ??
  • ????????catch?(Exception?e)??
  • ??
  • ????????{??
  • ??
  • ????????????System.err.println(e.getMessage());??
  • ??
  • ????????????status?=?1;??
  • ??
  • ????????}??
  • ??
  • ????????if?(ic?!=?null)??
  • ??
  • ????????{??
  • ??
  • ????????????try??
  • ??
  • ????????????{??
  • ??
  • ????????????????ic.destroy();??
  • ??
  • ????????????}??
  • ??
  • ????????????catch?(Exception?e)??
  • ??
  • ????????????{??
  • ??
  • ????????????????System.err.println(e.getMessage());??
  • ??
  • ????????????????status?=?1;??
  • ??
  • ????????????}??
  • ??
  • ????????}??
  • ??
  • ????????System.exit(status);??
  • ??
  • ????}??
  • ??
  • }??

  • java服務端代碼demoserver:

    PrinterImp.java接口實現(xiàn):

    [java]?view plaincopy
  • public?class?PrinterImp?extends?Demo._PrinterDisp??
  • ??
  • {??
  • ??
  • ????private?static?final?long?serialVersionUID?=?1L;??
  • ??
  • ???
  • ??
  • ????public?void?printString(String?strMsg,?Ice.Current?current)??
  • ??
  • ????{??
  • ??
  • ?????????System.out.println(strMsg);??
  • ??
  • ????}??
  • ??
  • }??
  • demoserver.java主程序:

    [java]?view plaincopy
  • public?class?demoserver??
  • ??
  • {??
  • ??
  • ????public?static?void?main(String[]?args)??
  • ??
  • ????{??
  • ??
  • ????????int?status?=?0;??
  • ??
  • ????????Ice.Communicator?ic?=?null;??
  • ??
  • ????????try??
  • ??
  • ????????{??
  • ??
  • ????????????//?Initialize?ICE??
  • ??
  • ????????????ic?=?Ice.Util.initialize(args);??
  • ??
  • ?????????????
  • ??
  • ????????????//?Create?anobject?adapter,?which?listens?on?port?1000,?using?TCP/IP.??
  • ??
  • ????????????Ice.ObjectAdapter?adapter?=ic.createObjectAdapterWithEndpoints(??
  • ??
  • ????????????????????"SimplePrinterAdapter",?"default?-hlocalhost?-p?10000");??
  • ??
  • ?????????????
  • ??
  • ????????????//?Create?servant(implementation)?object.??
  • ??
  • ????????????Ice.Object?object?=?new?PrinterImp();??
  • ??
  • ?????????????
  • ??
  • ????????????//?Add?servant?tothe?object?adapter's?active?servant?map.??
  • ??
  • ????????????adapter.add(object,?Ice.Util.stringToIdentity("SimplePrinter"));??
  • ??
  • ?????????????
  • ??
  • ????????????//?Activate?theobject?adapter.??
  • ??
  • ????????????adapter.activate();??
  • ??
  • ?????????????
  • ??
  • ????????????//?Just?waituntil?we're?finished.??
  • ??
  • ????????????ic.waitForShutdown();????????????
  • ??
  • ????????}????????
  • ??
  • ????????catch?(Ice.LocalException?ex)??
  • ??
  • ????????{??
  • ??
  • ????????????ex.printStackTrace();??
  • ??
  • ????????????status?=?1;??
  • ??
  • ????????}??
  • ??
  • ????????catch?(Exception?e)??
  • ??
  • ????????{??
  • ??
  • ????????????System.err.println(e.getMessage());??
  • ??
  • ????????????status?=?1;??
  • ??
  • ????????}??
  • ??
  • ????????if?(ic?!=?null)??
  • ??
  • ????????{??
  • ??
  • ????????????try??
  • ??
  • ????????????{??
  • ??
  • ????????????????ic.destroy();??
  • ??
  • ????????????}??
  • ??
  • ????????????catch?(Exception?e)??
  • ??
  • ????????????{??
  • ??
  • ????????????????System.err.println(e.getMessage());??
  • ??
  • ????????????????status?=?1;??
  • ??
  • ????????????}??
  • ??
  • ????????}??
  • ??
  • ????????System.exit(status);??
  • ??
  • ????}??
  • ??
  • }??
  • ????????java服務端的程序需要綁定主機IP,否則上述語句如果改成這樣:Ice.ObjectAdapteradapter = ic.createObjectAdapterWithEndpoints(

    ???????????????????"SimplePrinterAdapter","default-p 10000");

    ?????????運行demoserver之后,會出現(xiàn)如下錯誤:

    Ice.SocketException

    ????error = 0

    ????atIceInternal.Network.doBind(Network.java:251)

    ????atIceInternal.TcpAcceptor.<init>(TcpAcceptor.java:119)

    ????atIceInternal.TcpEndpointI.acceptor(TcpEndpointI.java:414)

    ????atIceInternal.IncomingConnectionFactory.<init>(IncomingConnectionFactory.java:376)

    ????atIce.ObjectAdapterI.<init>(ObjectAdapterI.java:1028)

    ????atIceInternal.ObjectAdapterFactory.createObjectAdapter(ObjectAdapterFactory.java:160)

    ????atIce.CommunicatorI.createObjectAdapterWithEndpoints(CommunicatorI.java:89)

    ????atdemoserver.main(demoserver.java:12)

    Caused by:?java.net.SocketException: Address family not supported by protocol family: bind

    ????atsun.nio.ch.Net.bind(Native Method)

    ????atsun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:119)

    ????atsun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)

    ????atIceInternal.Network.doBind(Network.java:245)

    ????... 7 more

    6)、C#代碼實現(xiàn)


    圖3-5 添加引用庫ice

    democlient.cs主程序:

    [csharp]?view plaincopy
  • using?System;??
  • using?System.Collections.Generic;??
  • using?System.Linq;??
  • using?System.Text;??
  • ??
  • namespace?democlient??
  • {??
  • ????class?Program??
  • ????{??
  • ????????static?int?Main(string[]?args)??
  • ????????{??
  • ????????????int?status?=?0;??
  • ????????????Ice.Communicator?ic?=?null;??
  • ????????????try??
  • ????????????{??
  • ????????????????ic?=?Ice.Util.initialize(ref?args);??
  • ????????????????Ice.ObjectPrx?obj?=?ic.stringToProxy("SimplePrinter:default?-h?localhost?-p?10000");??
  • ????????????????Demo.PrinterPrx?printer?=?Demo.PrinterPrxHelper.checkedCast(obj);??
  • ????????????????if?(printer?==?null)??
  • ????????????????{??
  • ????????????????????throw?new?ApplicationException("Invalid?proxy");??
  • ????????????????}??
  • ??
  • ????????????????printer.printString("Hello?World!");??
  • ????????????}??????????????
  • ????????????catch?(Exception?e)??
  • ????????????{??
  • ????????????????Console.Error.WriteLine(e);??
  • ????????????????status?=?1;??
  • ????????????}??
  • ????????????if?(ic?!=?null)??
  • ????????????{??
  • ????????????????try??
  • ????????????????{??
  • ????????????????????ic.destroy();??
  • ????????????????}??
  • ????????????????catch(Exception?e)??
  • ????????????????{??
  • ????????????????????Console.Error.WriteLine(e);??
  • ????????????????????status?=?1;??
  • ????????????????}??
  • ????????????}??
  • ????????????return?status;??
  • ????????}??
  • ????}??
  • }??


  • demoserver.cs主程序:

    [csharp]?view plaincopy
  • using?System;??
  • ??
  • using?System.Collections.Generic;??
  • ??
  • using?System.Linq;??
  • ??
  • using?System.Text;??
  • ??
  • using?System.Reflection;??
  • ??
  • ???
  • ??
  • public?class?PrinterImpl?:?Demo.PrinterDisp_??
  • ??
  • {??
  • ??
  • ????public?override?void?printString(string?strMsg,?Ice.Current?current)??
  • ??
  • ????{??
  • ??
  • ????????Console.WriteLine(strMsg);??
  • ??
  • ????}??
  • ??
  • }??
  • ??
  • ???
  • ??
  • namespace?demoserver??
  • ??
  • {??
  • ??
  • ????class?Program??
  • ??
  • ????{??
  • ??
  • ????????public?static?int?Main(string[]args)??
  • ??
  • ????????{??
  • ??
  • ????????????intstatus?=?0;??
  • ??
  • ????????????Ice.Communicatoric?=?null;??
  • ??
  • ????????????try??
  • ??
  • ????????????{??
  • ??
  • ????????????????ic?=?Ice.Util.initialize(refargs);??
  • ??
  • ????????????????Ice.ObjectAdapteradapter?=??
  • ??
  • ????????????????????ic.createObjectAdapterWithEndpoints("SimplePrinterAdapter",?"default?-h?localhost?-p?10000");??
  • ??
  • ????????????????Ice.Objectobj?=?new?PrinterImpl();??
  • ??
  • ????????????????adapter.add(obj,ic.stringToIdentity("SimplePrinter"));??
  • ??
  • ????????????????adapter.activate();??
  • ??
  • ????????????????ic.waitForShutdown();??
  • ??
  • ????????????}??
  • ??
  • ????????????catch?(Exception?e)??
  • ??
  • ????????????{??
  • ??
  • ????????????????Console.Error.WriteLine(e);??
  • ??
  • ????????????????status?=?1;??
  • ??
  • ????????????}??
  • ??
  • ????????????if?(ic?!=?null)??
  • ??
  • ????????????{??
  • ??
  • ????????????????try??
  • ??
  • ????????????????{??
  • ??
  • ????????????????????ic.destroy();??
  • ??
  • ????????????????}??
  • ??
  • ????????????????catch?(Exception?e)??
  • ??
  • ????????????????{??
  • ??
  • ????????????????????Console.Error.WriteLine(e);??
  • ??
  • ????????????????????status?=?1;??
  • ??
  • ????????????????}??
  • ??
  • ????????????}??
  • ??
  • ????????????returnstatus;??
  • ??
  • ????????}??
  • ??
  • ????}??
  • ??
  • }??

  • 四、ICE使用小結

    ???????? 本文主要從printer經典的例子入手,綜合使用三種開發(fā)語言,驗證ICE在不同語言環(huán)境下的使用性如何。從ICE的開發(fā)流程上來看,與CORBA開發(fā)流程類似。兩者的接口文件定義基本相接近。如果您曾經深入接觸或開發(fā)過CORBA組件軟件,那么再入手ICE研究開發(fā)工作,將是一件令人愉快的事情,因為它是那么隨心所欲—Easy。

    ???????? 從企業(yè)今后部署的經濟方面考慮,相對于重量級CORBA中間件組件,ICE是開源的、免費的,并且版本還不斷升級。在運行性能與網絡接口處理方面,我們需要測試其穩(wěn)定性,魯棒性,健壯性等,研究它是否符合企業(yè)用戶的業(yè)務需求。

    1

    總結

    以上是生活随笔為你收集整理的浅入ICE组件编程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产一区二区三区麻豆 | 成人中文字幕+乱码+中文字幕 | 国产精品资源站 | 美女黄色免费网站 | 久久午夜精品视频 | 亚洲av无码一区二区三区网址 | 黄色一及毛片 | 国产亲伦免费视频播放 | 一区二区视频网站 | 国产精品久免费的黄网站 | 亚洲欧美色图在线 | 色天天色综合 | 亚洲成年人影院 | 亚洲天堂色 | 粉嫩久久99精品久久久久久夜 | 日韩av在线网 | 色一情一交一乱一区二区三区 | 精品一区中文字幕 | 美梦视频大全在线观看高清 | 在线视频免费观看 | 久久久久亚洲av成人人电影 | 日本aⅴ在线观看 | 免费黄色av | 日韩羞羞 | 蜜乳av网站| 91毛片观看 | 久久久久亚洲av成人网人人软件 | 精品二区在线 | 免费国产在线视频 | 波多野结衣精品视频 | 网站久久久| m3u8成人免费视频 | 免费操人视频 | 在线看片你懂的 | 亚洲国产婷婷 | 欧美一区二区在线观看视频 | 好吊色欧美一区二区三区视频 | 色草在线| 国产网站av | 国产第一精品 | 日日摸夜夜添夜夜添高潮喷水 | 欧美性受xxxx黑人xyx性爽 | 亚洲国产精品尤物yw在线观看 | 国内三级在线 | 成人a毛片 | 野花视频在线免费观看 | 超碰在线免费播放 | 国产xxxxxx| 欧美日韩亚洲国产 | 按摩ⅹxxx性hd中国 | 亚洲日本黄色 | 日本在线免费观看视频 | 性欧美熟妇videofreesex | 在线观看免费国产视频 | 成人一级片在线观看 | 国产精品久久免费视频 | 久久天天综合 | 竹菊影视日韩一区二区 | 午夜日韩| 在线爱情大片免费观看大全 | 91社区福利 | 特级西西人体444www | 久久久1| 精品三级电影 | 99精品网站 | 亚洲乱码精品久久久久.. | 三级理伦 | 久久鲁视频 | 亚洲精品综合久久 | 日韩成人av一区二区 | 成年人看的免费视频 | 99视频观看 | 欧美视频网站 | 特级淫片裸体免费看 | 蜜桃av影院| 欧美首页 | 男女午夜视频在线观看 | 亚洲欧美日韩国产 | 午夜影院免费 | 视频一区二区三区在线观看 | 黄色大片免费观看 | 亚洲精品乱码久久久久久日本蜜臀 | 欧美10p| 黄色小视频链接 | 欧美网 | 你懂的网站在线观看 | 韩国性猛交╳xxx乱大交 | 国产馆av| 97精品一区 | 亚洲不卡av一区二区 | 日本做爰全过程免费看 | 一区二区三区精彩视频 | 92久久精品一区二区 | 国产久久精品 | 亚洲深夜福利 | 色偷偷影院 | 亚洲字幕| 亚洲观看黄色网 | 午夜福利啪啪片 |