【问题标题】:Serialisation of EMF modelsEMF模型的序列化
【发布时间】:2017-12-21 01:50:32
【问题描述】:

我正在掌握 EMF,我想检查一下我脑海中的概念是否准确。

我知道可以在 Eclipse 中创建 EMF 模型,然后使用它来生成 Java 代码。

我进一步了解模型可以序列化到磁盘然后再返回,但我不明白这个的用途。

确定模型文件本身可以保存吗?序列化有明显的用例吗?

【问题讨论】:

  • 你以线性方式(磁盘)存储结构化对象(ECore 模型),所以你总是序列化,对吧?您是否有引起混淆的参考资料?

标签: eclipse serialization model eclipse-emf emf


【解决方案1】:

我认为,您在这里混淆了这两个术语:“元模型”和“模型”。

EMF 模型实际上是一个元模型:它是对可以保存数据的模型的描述。 EMF 模型/元模型可以用许多不同的格式表示。对于 EMF,我们通常使用 .ecore/.genmodel.xcore 文件。

从 EMF 模型/元模型中,您可以生成表示模型和模型上的操作的 Java 代码。从理论上看,EMF模型和Java代码是等价的,因为它们代表的是相同的信息。

使用生成的 Java 代码,您可以实例化对象以保存模型数据。然后可以将这些数据以多种不同格式保存到磁盘。 EMF 可以自动提供将模型数据序列化到 XML 磁盘并返回所需的代码。 (实际上,不涉及任何生成的代码 - 这一切都基于您在 ...Factory 类中的模型描述)。实现其他格式相当容易,例如 JSON 或数据库模式。


一个例子:

假设您使用 EMF 来描述自行车的模型(车轮、车把、车架、车座等)。从 EMF 模型中,您可以生成 Java 类,这些类可以根据对象及其之间的关系来描述相同的自行车。

您现在可以通过创建/构造和连接 Java 类的对象来在模型中实例化许多不同的自行车。

然后可以将这些自行车序列化为 XML 并返回,因此您可以将自行车保存到磁盘。


对于 MDA(模型驱动架构),我们实际上讨论了 4 个级别的模型:

  • M0 通常是物理工件。例如。自行车或纸质账单。
  • M1 是物理工件的表示 - 这是模型
  • M2 是模型的描述 - 元模型 - 在本例中是基于 EMF 的模型,用于描述模型的实体、关系和属性
  • M3 是模型描述的描述 - 元元模型 - 实际上也可以在 EMF 中表示。您在 .ecore 文件和 ...Package 类中找到的信息在 M3 模型中表示,因为它们描述了 M2 模型。

后者真的只对我们这些教MDA的人很重要...在您的正常工作中,您真的只需要考虑M0,M1和M2...

【讨论】:

    【解决方案2】:

    序列化是指持久化模型实例的内容(您的数据)。可以序列化成XML、JSON、数据库等。

    【讨论】:

      猜你喜欢
      • 2010-11-06
      • 2013-03-30
      • 2021-09-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 2015-05-30
      • 2016-05-09
      • 2019-02-24
      相关资源
      最近更新 更多