当前位置: 首页 > news >正文

ICE的proxy使用

1、在ICE的客户端获取代理的方式如下:
   A、Ice::ObjectPrx p = communicator->stirngToProxy("MyProxy:tcp -h 10.0.0.1 -p 12345");

  注:MyProxy:tcp -h 10.0.0.1 -p 12345   远程服务单元名称:协议 -h 主机 -p 端口号
   B、Ice::ObjectPrx p = communicator->propertyToProxy("MyProxy"); 
      在配置文件中配置MyProxy=MyProxy:tcp -h 10.0.0.1 -p 12345
   C、Ice::ObjectPrx p = myproxy.ice_oneway();
   D、MyProxyPrx p = myservant->op();   (slice: MyProxy * op())
2、每个proxy对象都需要绑定一个远地的端点信息,其字符串的端点格式如下:
   identity -f facet -t -o -O -d -D -s @ adapter_id : endpoints
   
   其中endpoints的语法如下:
   tcp -h host -p port -t timeout -z
   udp -v major.minor -e major.minor -h host -p port -z --ttl TTL --interface INTF
   ssl -h host -p port -t timeout -z
   opaque -t type -v value
3、注意在proxy上有一些工厂方法能够clone出来一个新的proxy,但是新的proxy会根据工厂方法过滤掉一些端点信息
   ice_secure  只使用ssl端点信息
   ice_batchDatagram、ice_datagram 只使用udp端点信息
   ice_oneway、ice_twoway、ice_batchOneway 使用tcp和ssl端点信息
4、可以设置ICE的proxy的默认属性,例如:Ice.Default.Secure = 0
   也可以强制ICE的proxy的属性,例如:Ice.Override.Secure = 1
5、proxy的消息调用过程中,除了可以传递参数外,还可以传递上下文信息,客户端代码例如:
   Ice::Context ctx;
   ctx["Property1"] = "value1";
   ctx["Property2"] = "value2";
   
   MyProxy->op(ctx);
   由于上下文信息仅仅能够传递字符串信息,无强制类型限制,在请求的编码和解码上也存在一定的效率问题,因此不是
   非得使用上下文,尽量不要使用
   
   服务器端代码如下:
   void MyServerI::op(const Ice::Current& c)
   {
      Ice::Context::const_iterator l = c.ctx.find("Property1");
 if (l != c.ctx.end() && l->second == "value1")
 {
 
 }
 
 l = c.ctx.find("Property2");
 if (l != c.ctx.end() && l->second == "value2")
 {
 
 }
   }
6、 使用communicator的隐式上下文传递,通过如下方法获取communicator上的隐式上下文:
   Ice::ImplicitContextPtr Ice::CommunicatorI::getImplicitContext() const
   
   然后通过隐式上下文的接口设置communicator上的隐式上下文,这样导致基于该communicator的所有代理请求都会携带设置的上下文
   local interface ImplicitContext
   {
       Context getContext();
       void setContext(Context newContext);
       string get(string key);
       string put(string key, string value);
       string remove(string key);
       bool containsKey(string key);
   };
7、proxy上的超时设置,可以通过如下方法指定proxy上的请求超时时间
   A、Ice::ObjectPrx MyTimeOutProxy = MyProxy.ice_timeout(10000);   10秒超时
   B、通过代理的端点指定:ident:tcp -h somehost -t 5000:ssl -h somehost -t 5000
   C、通过配置属性设置:Ice.Override.ConnectTimeOut、Ice.Override.TimeOut

相关文章:

  • Composite UI Application Block (CAB) 详解
  • 什么是实例化,实例化、声明、初始化的区别
  • GoDiagram
  • windows时间服务器搭建
  • 局域网远程控制工具之VNC
  • c#的Assembly.Load.CreateInstance(反射)和.config的使用
  • C#Assembly详解
  • this与super
  • android inflater 用法
  • android简介
  • 智能手机及操作系统
  • Android SDK是什么
  • windows命令行设置IP与DNS
  • 数据统计分析常用指标
  • Okhttp3基本使用
  • 【技术性】Search知识
  • bearychat的java client
  • co.js - 让异步代码同步化
  • Flannel解读
  • golang中接口赋值与方法集
  • go语言学习初探(一)
  • PHP 7 修改了什么呢 -- 2
  • Redis中的lru算法实现
  • SpringBoot几种定时任务的实现方式
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 测试如何在敏捷团队中工作?
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 技术发展面试
  • 首页查询功能的一次实现过程
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ​一些不规范的GTID使用场景
  • "无招胜有招"nbsp;史上最全的互…
  • #考研#计算机文化知识1(局域网及网络互联)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (03)光刻——半导体电路的绘制
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (汇总)os模块以及shutil模块对文件的操作
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .net wcf memory gates checking failed
  • .NET业务框架的构建
  • ::前边啥也没有
  • @Autowired多个相同类型bean装配问题
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [BJDCTF 2020]easy_md5
  • [BT]BUUCTF刷题第4天(3.22)