我们的商店经常出现问题,我们最终会得到同一类/实体的3或4个不同的陈述。
java版本,xml版本,hibernate版本,json版本......你明白了。
显然这会造成维护问题。
模型驱动的体系结构可能不止于此,但我真正喜欢的是一个系统,它允许我以一种方式定义一个类或一个实体,然后生成各种表示。 (也许我没有使用正确的术语)
当然,这真的不是那么直接,因为我们假设我们有一个java对象,我们希望将其变成JSON以便通过网络发送 - 在成员之间可能没有确切的1-1对应关系JSON中的字段的java对象 - 可能有一些优化,或者其他什么。
我过去曾看过像AndroMDA和EMF这样的东西,发现它们缺乏或笨拙。这些天我不知道他们是如何叠加的,或者其他系统是什么。
对于MDA和/或元数据驱动编程,SO有什么看法?这些工具是否足够成熟以供认真考虑?
感谢。
答案 0 :(得分:6)
作为Naked Objects和Apache Isis的贡献者,我可以确认@ dnellis74的另一个答案,因为这些都解决了对同一事物进行多次表示的问题;使用这些框架,您可以编写一次域对象,然后将其作为持久层自动反映给用户。
当然,(我会这样说,不是吗?)我不同意@ dnellis74这些框架鲜为人知的事实意味着他们应该被解雇;你应该自己决定。
可能感兴趣的另一点;这两个框架都在实现Restful Objects spec的过程中,它旨在通过RESTful API自动公开您的域对象,并让您可以根据需要对其进行整理或集成。 .NET impl非常完整,Java impl有点落后,但即便如此,还是有check out的演示。
至于MDA,我从一开始就被OMG嘲讽时一直持怀疑态度,我在TheServerSide上写了一篇关于它的article。我想我说得对。
丹
答案 1 :(得分:2)
要解决您的核心问题,您可以为域对象定义Java类。然后,您可以使用JAXB和Hibernate注释来注释该类。通过这种方式,您可以使用各种表示形式对您的实体(Java类)进行单一定义,JAXB用于JSON和XML,Hibernate用于持久性。
答案 2 :(得分:1)
查看Naked Objects
http://nakedobjects.codeplex.com/
并且它是等效的apache
http://isis.apache.org/index.html
这两个框架几乎闻所未闻的事实应该回答你的问题恕我直言。我认为最终对相同对象的不一致表示表明你的过程存在缺陷,这不是你应该尝试用框架解决的问题。
答案 3 :(得分:1)
尽管这是一个老问题,但从今天的MDA角度来看,我还是要回答这个问题。
标题为“模型驱动的体系结构值得吗?工具的最新技术水平是什么?”的简短回答。是“是”。
更长的答案是“您需要将开发方法更改为基于MDA的开发,这需要一些投资,但这是值得的。”