Virtual member manager 支持两种方式将 DataGraph 模型装入内存:动态装入和静态装入。每个方法都有各自的优点。
动态装入
动态装入指 DataGraph 模型通过 XSDEcoreBuilder 从 XSD 文件在运行时作为 ECore 模型装入到内存。
此方法的优点为:
- 易于扩展
- 与静态装入不同,动态装入不需要生成静态模型代码。定义所有模式定义,并从 XSD 文件装入。
- 允许更改 virtual member manager 内置模式
- 可通过 wimxmlextension.xml 文件将新属性类型添加到 virtual member manager 内置实体类型。
- 支持在运行时添加新模式
- 开发者可在运行时调用 createSchema
API 以创建新实体类型和属性类型。
此方法的缺点为:
- 装入速度较慢
- 装入 XSD 文件所花的时间长于装入静态模型代码的时间。每次启动 virtual member manager 时会执行装入过程。
- 无法使用本机类型
- 使用此方法时,客户无法强制将 DataObjects 类型转换为本机类型(如 PersonAccount 和组),无法对这些类型使用本机方法。例如,客户仅可使用 DataObject 的 setString(“givenname”,
“Smith”) 方法来设置指定名称,但无法使用 PersonAccount 的 setGivenname(“Smith”)。
- 运行时性能较慢
- 使用动态装入的 SDO 的性能慢于静态模型。
静态装入
静态装入指开发时通过 EMF (Eclipse Modeling Framework) 代码生成生成静态模型代码。模型代码为 SDO 的 EMF 实施。SDO 应用程序使用生成的模型代码的包。此方法节省了动态装入方式下从 XSD 文件装入模型所需要的时间。还允许用户强制将 DataObjects 类型转换为本机对象类型,以改善运行时性能。
此方法的优点为:
- 装入速度较快
- 与从 XSD 文件装入模型相比,从静态模型代码装入方式速度更快。这会缩短 virtual member manager 启动时间。
- 允许开发者使用本机类型
- 可强制将 DataObject 类型转换为本机类型(如 PersonAccount 和组),并可对这些类型使用本机方法。例如,可强制将 DataObject 类型转换为 PersonAccount,可使用方法“setGivenname”设置属性“givenname”。
- 运行时性能更高
- 使用本机类型和方法,SDO 的运行时性能高于动态装入方法。
此方法的缺点为:
- 扩展性较差
- 扩展模式需要通过 Eclipse 或 RAD 开发环境生成静态模型代码。
Virtual member manager 开发者需要具有 EMF、SDO 和 XML 模式知识进行扩展。
- 不利于更改为 virtual member manager 内置模式
- 如果需要将新属性类型添加到 virtual member manager 内置实体类型(如 PersonAccount 和组),必须直接修改 wimdomain.xsd 并重新生成 virtual member manager 静态模型代码。
- 不支持运行时添加新模式
- 由于生成的模型代码固定,无法在运行时扩展 virtual member manager 模式。