快速业务通道

EMF介绍系列(一、EMF与MDA) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

EMF介绍系列(一、EMF与MDA)

时间:2011-04-30 博客园 bjzhanghao

接触Eclipse一段时间的朋友应该都听说过EMF这个名字,EMF是Eclipse Modeling Framework的缩写,它是Eclipse的一个重要的子项目,如果翻译成中文就是“Eclipse 建模框架”。其实只从这个名字还真是难以确定它的作用是什么,我认为要完全掌握 EMF应该对模型驱动开发(MDA)有一定的了解,而EMF可以看作是Eclipse上的MDA一个实现(代 码生成是MDA 的重要组成部分之一),它能够生成在Eclipse上执行的代码。可惜我对MDA没 有系统研究过,对EMF的应用大多是为了减少模型修改带来的影响,所以也希望EMF能带我进 入MDA的世界。

MDA讲究的是把模型和应用系统实现分开,模型是最重要的部分,可以说有了清楚的模型 ,就完成了一半的工作。模型是由元模型(Meta Model)定义的,例如UML里“类 ”和“属性”这些概念是在UML的元模型里定义的,而元模型又是由“ 元元模型”来定义,后者多是自描述的,也就是能够自己定义自己,所以很少见到 “元元元模型”的概念。在MOF规范里,元元模型处于M3层,元模型处于M2层,往 下的M1层是模型,而M0层是实例。EMF定义了一套Ecore元模型,该模型是EMOF(MOF的一个子 集, MOF是Meta-Object Facility的缩写)的一个实现,这是一个自描述的模型,可以认为 它处于MOF中的M2层,即与UML元模型相同的位置。用Ecore元模型可以定义 ecore模型,也就 是.ecore文件,这个模型处于M1层,而ecore模型的实例处于M0层。关于MOF的更多概念请参 考MOF规范和相关文档, MDA的各种概念是相当多的,研究它的人也很多,我认为EMF算是比 较务实的一派。如果以后有机会深入研究Ecore元模型,我也会把心得写在这里供大家参考。

EMF自发布以来一直受到Eclipse社区的热情拥护,目前很多Eclipse的子项目都是基于它 开发的,可见EMF确实能给开发者带来好处。随着EMF的成长,出现了越来越多的文档,在 eclipse.org/emf上就可以找到不少,最全面和权威的当属这本Eclipse Modeling Framework A Developers Guide,完整的讲解了EMF,虽然针对的版本较早,但绝大部分内容还是适用的 ;作为入门读物,网站上Documents里列出的一些教程也是不错的选择;EMF的新闻组更是一 个很好的交流场所,Ed Merks(EMF设计师之一)和其它几位开发人员可以说是有问必答,感 谢他们的认真态度。

通过在一些项目里使用EMF,我也逐渐感觉了到它起到的作用,特别是当模型里各种元素 和关系比较多时,EMF的代码生成功能会节省不少工作量,对于我们开发人员来讲,这不就是 最大的好处吗。其实用EMF构造一个应用的步骤很简单:1、构造模型,2、生成代码,前者可 以通过UML类图、Java接口、 XML Schema等多种方式定义,后者可以选择只生成模型部分的 代码,也可以同时生成编辑器部分的代码,对这个编辑器做一些定制就可以得到符合需求的 应用程序。

类图可以帮助我们直观的了解应用系统里各对象的关系,但在开发过程中,类图里的定义 很可能被修改,如果这一修改没有及时反映回类图,类图就会逐渐变得不准确而失去作用。 但是保持代码和类图的一致是一件很烦琐的工作,有时由于项目管理的需要,类图又必须保 证能够反映系统的真实结构。比较好的解决方法是让代码由类图直接生成,模型需要修改时 也在类图上做改动,并且重新生成代码,这正是EMF的专长。

说了这么多,你可能还是没弄明白EMF到底能为我们带来哪些好处,是怎样为我们节省工 作量的,从下个帖子开始我们将一步步了解怎样使用EMF构造应用程序。因为是边用边写,所 以这个系列的帖子都不会太长,相信后面部分会以心得和技巧等内容为主。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号