Data Model指的是由DSF服务检索的数据的自然结构,创建一个debugger的用户接口的一个巨大挑战是:目标上可用的数据量远远大于实际提供给用户的数量。因此,调试服务需要将数据分解为具有适当粒度的块来实现最大的性能和可用性

  • IDMContext
    IDMContext表示数据模型中数据块的句柄。这个接口是数据模型API的一个最小但最核心的特性。
    什么是 data model context:

    • 他是分层的。context有其他的context作为父context,分层context是一个给定的总体数据模型的系统。
    • 他扩展了org.eclipse.core.runtime.IAdaptable接口,这允许装饰器(decorators),可重定目标的动作(action)与一个context相关联
    • 他与单个的DSF session关联。 IDMContext.getSessionID()返回一个给定的context的sessionID,这允许所有客户端获取session上的handle(句柄),executor需要访问的来自context的dsf服务。
    • 他是线程安全的,这允许在查看器(viewer)、缓存(cathe)和其他可能实现自己线程模型的客户端中存储和比较context对象。
    • 他是轻量级的 最好不变的,这允许客户端存储context,context可能会在发起它们的服务的生命周期之外持续存在。如果context包含对大量数据的引用,或者它可能会阻止对这些数据进行垃圾收集
      data model context不是什么:
    • 他不是一个服务的引用,context不应该直接返回对服务的引用,因为客户端应该使用适当的osgi api来获取DSF服务的引用
    • 他不是持久的,因为一个context返回一个contextid,因此他在单个dsf session生命周期内有效
      注意:IDMContext对象可用于从服务检索任何类型的数据对象。虽然定义了IDMData标记接口,但它的存在是历史的,使用也是可选的
      2.Context Hierarchy(层次结构)
      IDMContext接口最强大的特性就是他的层次结构,IDMContext.getParents()方法返回一个给定的context的直接祖先,context的直接祖先允许客户端遍历一个context全部的层次结构,计时器案例是context层次结构最好的诠释,在计时器案例中有三个context被使用:
    • Timer 没有父context
    • Trigger 没有父context
    • Alarm 需要timer和tigger作为父context
      下面的代码片段显示了这些父级在AlarmService中的使用方式:
org.eclipse.cdt.examples.dsf.timers.AlarmService.isAlarmTriggered()209:     public boolean isAlarmTriggered(AlarmDMContext alarmCtx) {210:         // Extract the timer and trigger contexts.  They should always be part
211:         // of the alarm.
212:         TimerService.TimerDMContext timerCtx = DMContexts.getAncestorOfType(
213:             alarmCtx, TimerService.TimerDMContext.class);
214:         TriggerDMContext triggerCtx = DMContexts.getAncestorOfType(
215:             alarmCtx, TriggerDMContext.class);217:         assert triggerCtx != null && timerCtx != null;219:         // Find the trigger and check whether the timers value has surpassed it.
220:         if (fTriggers.containsKey(triggerCtx)) {221:             int timerValue = getServicesTracker().getService(TimerService.class).
222:                 getTimerValue(timerCtx);
223:
224:             return timerValue >= fTriggers.get(triggerCtx);
225:         }
226:
227:         return false;
228:     }

3.DMContext
搜索context层次结构可能会很繁琐,DMContexts工具类包含一些静态方法来简化此任务:

  • getAncestorOfType()-在给定context的层次结构中搜索特定类型的context。

  • isAncestorOf()-检查一个参数context是否在另一个的层次结构中。

  • toList()-将给定context层次结构中的所有context转换为列表。

DSF data model相关推荐

  1. DSF view Model

    View Model是指理想的用户可呈现的数据结构,这与data Model形成了对比,data Model指的是自然的数据结构,尽管两者最终往往是相同的,用户表示的需求经常会发生变化,因此view ...

  2. An eventually consistent data model for Erlang (and Riak)

    CAP理论指出:一个分布式系统不可能同时满足一致性(Consistency).可用性(Availibility)和分区容忍性(Partition Tolerance)这三个需求,最多只能同时满足其中的 ...

  3. vs2010下使用ADO.NET Entity Data Model

    使用vs2010中的mvc3创建项目,同时想使用ADO.NET Entity Data Model来做数据库访问,可是创建项目后中不到 ADO.NET Entity Data Model. 一下是解决 ...

  4. ADO.NET Entity Data Model入门实例

    ADO.NET Entity Data Model入门实例 快速开发一个网站,最繁琐的地方可能要算数据库访问和ORM了,还好.net中这个很强大,可以省去好多体力劳动. 这里就给个快速使用ADO.NE ...

  5. 四、物理数据模型PDM(Physical Data Model )

    一.     PDM 介绍 物理数据模型(Physical Data Model)PDM,提供了系统初始设计所需要的基础元素,以及相关元素之间的关系:数据库的物理设计阶段必须在此基础上进行详细的后台设 ...

  6. SAP Cloud SDK‘s Virtual Data Model

    官网链接 SAP S/4HANA Cloud 和 On-Premise 公开的大部分服务都是 OData 服务. OData 是一种 RESTful API 协议,具有两个关键特性: 每个服务都由元数 ...

  7. Entity Data Model (EDM) 深入分析, Part 3

    EntityClient 实体框架(Entity Framework)在ADO.NET 3.5 提供程序的基础上引入新的 ADO.NET 提供程序 EntityClient.Entity-Client ...

  8. 大数据入门9:半结构化数据模型(Semi-structured Data Model)

    文章目录 半结构化数据模型(Semi-structured Data Model) 1. 几种数据模型 2. 半结构化模型特征 3. XML和JSON 4. 树状数据结构(Tree Data Stru ...

  9. 图解图库JanusGraph系列-一文知晓“图数据“底层存储结构(JanusGraph data model)

    图解图库JanusGraph系列-一文知晓"图数据"底层存储结构(JanusGraph data model) 大家好,我是洋仔,JanusGraph图解系列文章,实时更新 图数据 ...

最新文章

  1. windows driver 分配内存
  2. $.post请求的参数在后台代码中得到为null_996难得休息,小伙打开steam网页看了一款游戏,输入密码后却习惯性按了F12研究起了JS代码...
  3. 使用JestClient操作ElasticSearch
  4. ltrim函数_常用基础函数
  5. 长链接转短链接java_长链接生成短链接Java源码(调用百度接口)
  6. 如何设计一个安全的登录流程
  7. 1.2)深度学习笔记------神经网络的编程基础
  8. 高数复习9.13 函数与极限
  9. 《HTML5与CSS3实战指南》——第2章 HTML5样式的标记2.1 The HTML5 Herald简介
  10. 一个完全摆脱findViewById的自动绑定库
  11. 下列有关html文件结构的说法错误的是,计算机教师招聘考试_网络部分选择题+答案(12页)-原创力文档...
  12. java内部类_Java内部类
  13. 2d shader unity 阴影_Shader从入门到跑路(11):多Pass渲染
  14. 诺顿企业版Symantec AntiVirus病毒库更新慢的解决办法
  15. cophenet matlab,Matlab聚类分析[转]
  16. 利用Clover、QTTabBar,像浏览器一样使用你的资源管理器,效率办公必备!
  17. S50VB100-ASEMI电机专用整流桥S50VB100
  18. 关于大疆mini一代如何手动拍摄合成全景图
  19. oracle 11g jdk设置,java-如何从oracle 11g jdbc 7/14 jdk 1.7中的读取调...
  20. 服务器raid5阵列硬盘故障的解决办法

热门文章

  1. 显示器基础介绍、频率问题
  2. 拔山盖世(BSGS)算法
  3. unity photon中技能效果网络同步
  4. 按关键字搜索易贝商品 API
  5. VisionMobile HTML5对移动行业意味什么
  6. switchhosts使用指南
  7. 酷炫的数据可视化大屏来了!满足你99%大屏需求
  8. android百度离线地图,Android SDK
  9. C语言让程序自己获得管理员权限
  10. 抖音广告多少种,这些你知道吗?