模型驱动的架构是否值得,工具的最新技术是什么?

我们的商店中有一个反复出现的问题,我们最终得到同一类/实体的3或4个不同的表示。

一个java版本,一个xml版本,一个hibernate版本,一个json版本……你明白了。

显然这会产生维护问题。

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

当然,这真的不是那么直接,因为我们假设我们有一个java对象,我们希望将其变成JSON以通过网络发送 – 在java对象中的成员之间可能没有确切的1-1对应关系到JSON中的字段 – 可能会有一些优化,或者其他什么。

我过去曾看过像AndroMDA和EMF这样的东西,发现它们缺乏或笨拙。 我不知道他们这些天如何叠加,或者有什么其他系统。

SO对MDA和/或元数据驱动编程的看法是什么? 这些工具是否足够成熟以供认真考虑?

谢谢。

看看Naked Objects

http://nakedobjects.codeplex.com/

而它是等同的apache

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

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

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

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

另一点可能是有意义的; 这两个框架都在实现Restful Objects规范的过程中,该规范旨在通过RESTful API自动公开您的域对象,并让您可以根据需要对其进行外观或集成。 .NET impl非常完整,Java impl有点滞后,但即便如此,还是有一个可以查看的演示。

至于MDA,当我第一次被OMG嘲讽时,我从一开始就持怀疑态度,只要我在TheServerSide上写了一篇关于它的文章 。 我想我说得对。

要解决您的核心问题,您可以为域对象定义Java类。 然后,您可以使用JAXB和Hibernate注释来注释该类。 通过这种方式,您可以使用各种表示forms对您的实体(Java类)进行单一定义,JAXB用于JSON和XML,Hibernate用于持久性。