ICE安装及使用示例

ICE是什么


ZeroC ICE 是指ZeroC公司的ICE(Internet Communications Engine)中间件平台。

Ice 应用适合于异构平台环境中使用:客户和服务器可以采用不同的编程语言,可以运行在不同的操作系统和机器架构上,并且可以使用多种网络技术进行通信。无论部署环境如何,这些应用的源码都是可移植的。 
其采用C/S 模式结构,支持同步调用方式和异步调用方式,异步派发调用方式。支持跨语言的对象调用。多种语言之间采用共同的Slice(Specification Language for Ice)进行沟通。支持ice到C,JAVA,C#,VB,Python,Ruby,PHP等多种语言的映射。

ICE使我们专注于应用逻辑的开发,它来处理所有底层的网络接口编程,这样我们就不用去考虑这样的细节:打开网络连接、网络数据传输的序列化与反序列化、连接失败的尝试次数等。


--------------------------------------------------------------------------------------------------------------------------------------------------------

ICE怎么安装

在编译ice时,会提示缺少哪些必要工具,根据提示依次安装即可。


1.安装gcc,g++
yum install gcc
yum install gcc-c++


2.安装设置mcpp
yum install mcpp.x86_64
ln -s  /usr/lib64/libmcpp.so.0.3.0 /usr/lib/libmcpp.so


3.安装bzip
yum install bzip2-devel.x86_64


4.安装openssh
yum install openssl-devel.x86_64


5.安装expat
yum install  expat-devel.x86_64


6.安装Berkeley DB
yum install db4-devel.x86_64


7.安装ice
源码下载:http://download.zeroc.com/Ice/3.5/Ice-3.5.1.tar.gz
主目录:make
进入cpp:make install


--------------------------------------------------------------------------------------------------------------------------------------------------------

ICE 测试demo


demo.ice:定义服务器和客户端的公共接口

module Demo{  
	interface test{  
 		string   execute(string mth,string cmd);  
	};  
};


client.cpp:客户端程序

#include   
#include   
#include   
using namespace std;  
using namespace Demo;  
int main(void)
{  
    try 
    {
        Ice::CommunicatorPtr ic; 
        testPrx testServer;
        Ice::ObjectPrx base;
        ic = Ice::initialize();  
        base = ic->stringToProxy("TestAdapter:default -p 10000");  
        testServer = testPrx::checkedCast(base);  
        string mystr = testServer->execute("My first cpp "," ice demo");  
        printf("result:%s\n",mystr.c_str());
    }
    catch (const Ice::Exception& ex) {  
        cerr << ex << endl;  
    }
} 

server.cpp:服务端程序

#include   
#include   
using namespace std;  
using namespace Demo;  
class Server:public test  
{  
public:  
  ::std::string execute (const string & mth, const string & str,const Ice::Current &);  
public:
    Server ();  
};  
Server::Server ()  
{  
   
};  
std::string Server::execute (const string & mth, const string & str,const Ice::Current &)  
{  
  cout << mth + str << endl;  
  return mth + str;  
}  
   
int main ()  
{   
    int status=0;
    Ice::CommunicatorPtr ic;  
    try  
    {  
        ic = Ice::initialize();  
        Ice::ObjectAdapterPtr adapter = ic->createObjectAdapterWithEndpoints ("TestAdapter","default -p 10000");  
        Ice::ObjectPtr object = new Server;  
        adapter->add (object, ic->stringToIdentity ("TestAdapter"));  
        adapter->activate ();  
        ic->waitForShutdown ();
    } 
    catch (const Ice::Exception & e)
    {  
        cerr << e << endl;
        status = 1;  
    } 
    catch (const char *msg)
    {  
        cerr << msg << endl;
        status = 1;
    }  
    if(ic)
    {  
        try
        {
            ic->destroy();  
        }  
        catch (const Ice::Exception & e)  
        {  
            cerr<< e < 
 

参考
http://blog.csdn.net/fenglibing/article/details/6372444
http://masterkey.iteye.com/blog/183307

作者:skycrazyer 发表于2014-11-26 10:17:31 原文链接
阅读:121 评论:0 查看评论

你可能感兴趣的:(ice)