2013-03-20 75 views
0

我正在掌握EMF,我想检查一下我脑海中的一个概念是否准确。EMF模型的序列化

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

我进一步理解,该模型可以序列化到磁盘,然后再回来,但我不明白使用这个。

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

+0

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

回答

3

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

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的...

0

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