EMF模型的序列化

问题描述 投票:0回答:2

我正在接触EMF,我想检查一下我头脑中的概念是否准确。

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

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

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

eclipse serialization model eclipse-emf emf
2个回答
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,数据库等。

© www.soinside.com 2019 - 2024. All rights reserved.