ICE的服务器对象实现

原创 2012年03月22日 22:57:10
1、需要增加一个类继承至生成的接口类,并实现接口类的虚方法。
2、创建实现类的对象
3、调用adpater的add方法将创建的对象绑定到adapter中,并传入一个全局唯一标示符,该唯一标示可以通过如下方法生成:
   adapter->add(hello, communicator()->stringToIdentity("hello"));
   adapter->addWithUUID(hello);
   Ice::Ideentity id; id.name="hello"; adapter->add(hello, id);
4、adapter的add和addWithUUID方法返回一个代理对象,可以将该代理对象返回给客户端让其调用代理的方法
5、在实现接口的操作方法时,在每个操作的最后一个参数都会被ice映射成const Current& current,可以通过该成员获取操作调用上下文信息
   Current的定义如下:
   module Ice 
   {
        local dictionary<string, string> Context;
        enum OperationMode { Normal, \Idempotent };
        local struct Current 
   {
            ObjectAdapter adapter;    // 服务器的对象适配器,可以通过它再调用getCommunicator得到通信器
           Connection con;           // 连接对象
            Identity id;              // 服务对象标示
            string facet;             // 
            string operation;         // 操作的名称
            OperationMode mode;       // 操作模式
            Context ctx;              // 操作上下文属性
            int requestId;            // 请求ID
        };

    };

6、服务器端接收到请求后会自动的分派请求给正确的服务对象,因为在请求中携带了对象标示。在分派给服务对象前,可以设置拦截器,具体操作如下:
   adapter->add(hello, communicator()->stringToIdentity("hello"));
   该处不添加hello这个servant,取而代之的是设置一个DispatchInterceptor
   class MyDipatchInterceptor : public Ice::DispatchInterceptor
   {
   public:
       MyDipatchInterceptor(const MyServantIPtr& servant) : _servant(servant)
  {
  
  }
  
       virtual DispatchStatus dispatch(Request& request)
       {
            return _servant->dispatch(request);
       }
private:
  const MyServantIPtr& _servant;
   };
   adapter->add(new MyDipatchInterceptor(hello), communicator()->stringToIdentity("hello"));

ICE集群──负载均衡及容错

Zero ICE我们已经掌握其基本运行原理。下面我们主要介绍一下ICe的多端口邦定的问题。ICE使用TCP/IP 和UDP协议,以及基于TCP/IP之上的SSL协议。SSL协议可以充分保障Server...
  • neubuffer
  • neubuffer
  • 2013年11月23日 14:27
  • 2303

ICE通信中客户与服务器的结构

参考《Ice分布式程序设计》马维达 译 一、客户与服务器的结构     Ice 客户与服务器内部的逻辑结构如下图所示:     客户与服务器都由这样一些代码混合而成:应用代码、库代码、根据S...
  • lihuayong
  • lihuayong
  • 2013年07月08日 22:42
  • 1774

ICE分布服务器部署

ICE分布式部署
  • bruce_wang_janet
  • bruce_wang_janet
  • 2011年03月13日 23:57
  • 7818

(4)ICE适配器带来的好处

为什么需要适配器在讲解ice servant的章节中说到,服务端要想真正把服务提供给客户,就要把ice servant和ice object联系起来,负责建立这种联系的东西就叫做ice适配器(adap...
  • chanshimudingxi
  • chanshimudingxi
  • 2016年03月19日 20:06
  • 659

ice服务器实现技术

1.       渐进的初始化 如果我们使用servant定位器,locate返回的servant只能用于当前请求,也就是说Ice run time不会把这个servant增加到Active S...
  • bestone0213
  • bestone0213
  • 2015年03月19日 11:57
  • 507

ice服务器框架压力测试数据

ice服务器框架压力测试数据 标签: 服务器测试框架socket工作linux 2011-07-12 15:50 3819人阅读 评论(5) 收藏 举报  分类:   i...
  • boshuzhang
  • boshuzhang
  • 2016年03月09日 11:19
  • 1140

ICE实现服务器客户端

本文将结合实际项目,做一个基于ice的实际项目实例应用,该实例完成客户端调用服务端接口完成消息发送,计算的功能。 1,创建java项目ICEServer,导入ice.jar. 2,在项目下...
  • chary8088
  • chary8088
  • 2013年12月22日 15:23
  • 6545

ICE 分布式中间件开发VS 分布式开发之ACE

ICE(Internet Communications Engine)是ZeroC 提供的一款高性能的中间件,基于ICE 可以实现电信级的解决方案。前面我们提到过在设计网站架构的时候可以使用ICE 实...
  • educast
  • educast
  • 2013年11月11日 11:41
  • 1995

在ICE客户端中如何定位服务器端的位置(即如何寻找代理)

最近开始学习ICE,头有点大,900多页的文档看了五百多页还不知CLIENT如何定位SERVER的位置,郁闷的很...昨天毛了直接看文档的最后几页..我晕原来在这里给阐述了...差不多想撞墙 以下是...
  • neubuffer
  • neubuffer
  • 2013年11月23日 14:25
  • 1059

Ice笔记---Ice run time详述(一)

1.Ice Run Time 概述    按照个人暂时的理解,Icerun Time具体是指Ice封装好了大部分的API,通过这些API实现分布式应用程序运行时的各种功能。    首先,其中一个重...
  • moxiaomomo
  • moxiaomomo
  • 2011年09月09日 16:22
  • 4631
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ICE的服务器对象实现
举报原因:
原因补充:

(最多只允许输入30个字)