ice的facet使用

1、一个ICE对象在服务器端可以有多个表现方式,这种表现方式可称为facet,每个facet其实是servant对象
   的一组功能集合的名称,在服务器端,操作对象的facet有如下API:
   local interface ObjectAdapter 
   {
       Object* addFacet(Object servant, Identity id, string facet);
       Object* addFacetWithUUID(Object servant, string facet);
       Object removeFacet(Identity id, string facet);
       Object findFacet(Identity id, string facet);
       FacetMap findAllFacets(Identity id);
       FacetMap removeAllFacets(Identity id);
   };
   上述方法和servant的普通操作方法基本一样(如果facet参数填写成空其行为和普通方法一致)
2、在客户端使用facet时,一般主要用在对象的向下转型方法中:
   checkCast(proxy, "facet");
   uncheckCast(proxy, "facet");
3、传入错误的facet名称和使用错误的代理类型来调用checkCast都会返回空的代理对象,往往为了区分是那种错误可以如下操作:
   Filesystem::FilePrx file = ...;
   Ice::ObjectPrx obj = Ice::ObjectPrx::checkedCast(file, "Stat");
   if (!obj) {
        // facet不存在
   } else {
       FilesystemExtensions::StatPrx stat = FilesystemExtensions::StatPrx::checkedCast(file);
       if (!stat) {
           // 错误的代理类型
       } else {
           // Use stat...
       }
   }
4、在代理对象上调用ice_getFacet()方法可以返回其所代表的facet名称
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值