【问题标题】:Is model driven architecture worth it and what is the state of the art in the tooling?模型驱动架构值得吗?工具的最新技术是什么?
【发布时间】:2012-03-20 08:43:44
【问题描述】:

我们的商店经常出现一个问题,我们最终会遇到同一类/实体的 3 或 4 个不同表示。

java 版本、xml 版本、hibernate 版本、json 版本……你明白了。

显然这会产生维护问题。

模型驱动的架构可能不止于此,但我真正想要的是一个系统,它允许我以一种方式定义一个类或一个实体,然后生成各种表示。 (也许我没有使用正确的术语)

当然,这真的不是那么直截了当,因为假设我们有一个 java 对象,我们想将其转换为 JSON 以通过网络发送 - 成员之间可能没有精确的 1-1 对应关系JSON 中字段的 java 对象 - 可能有一些优化,或其他。

我过去看过像 AndroMDA 和 EMF 这样的东西,发现它们要么缺乏要么笨拙。我不知道这些天它们是如何堆积起来的,或者还有什么其他系统。

SO 对 MDA 和/或元数据驱动编程有何看法?这些工具是否已经成熟到可以认真考虑的程度?

谢谢。

【问题讨论】:

标签: java architecture metaprogramming mda


【解决方案1】:

作为Naked ObjectsApache Isis 的贡献者,我可以确认@dnellis74 的另一个答案,因为它们都解决了同一事物的多个表示的问题;使用这些框架,您只需编写一次域对象,然后它就会作为持久层自动反映给用户。

当然,(我会这么说,不是吗?)我不同意@dnellis74 的观点,即这些框架鲜为人知的事实意味着它们应该被立即解雇。你应该自己决定。

另一个可能感兴趣的点;这两个框架都在实现Restful Objects spec 的过程中,它旨在通过 RESTful API 自动公开您的域对象,并让您根据需要对其进行皮肤或集成。 .NET impl 非常完整,Java impl 有点滞后,但即便如此,您也可以check out 进行演示。

至于 MDA,当它第一次被 OMG 批评时,我从一开始就持怀疑态度,以至于我在 TheServerSide 上写了一篇关于它的article。我想我说得对。

【讨论】:

    【解决方案2】:

    为了解决您的核心问题,您可以为您的域对象定义一个 Java 类。然后,您可以使用 JAXB 和 Hibernate 注释对类进行注释。这样,您就有了可以以各种表示形式输出的实体(Java 类)的单一定义,用于 JSON 和 XML 的 JAXB,用于持久性的 Hibernate。

    【讨论】:

      【解决方案3】:

      查看裸对象

      http://nakedobjects.codeplex.com/

      它是 apache 等价物

      http://isis.apache.org/index.html

      这两个框架几乎闻所未闻的事实应该回答您的问题恕我直言。我认为以相同对象的不一致表示结束表明您的流程存在缺陷,这不是您应该尝试使用框架解决的问题。

      【讨论】:

      • 这个答案取决于一个不受支持的论点。
      【解决方案4】:

      尽管这是一个老问题,但我想从今天 MDA 的角度来回答它。

      标题为“模型驱动架构值得吗?工具的最新技术是什么?”中的问题的简短回答?是“是”。

      更长的答案是“您需要将开发方法更改为基于 MDA,这需要一些投资,但值得”。

      【讨论】:

        最近更新 更多