首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有支持泛型类型的XML模式的替代方案?

是否有支持泛型类型的XML模式的替代方案?
EN

Stack Overflow用户
提问于 2011-02-27 18:53:21
回答 4查看 811关注 0票数 2

你好,在模型驱动架构的实现过程中,我遇到了很多问题。信息模型有一个规范,它使用泛型类型和继承。它意味着可以跨多个平台(MS、*nix、OsX..)以各种语言实现。

问题是,XML模式被视为表示该信息模型的第一个工具。假设一切都与XML联系在一起。然而,XML schema不支持泛型类型,泛型类型对应于Java、C#等语言中的泛型。Java泛型实现中的类型擦除也是另一个大问题,但是使用支持泛型的建模形式,我可以找到解决这个问题的方法。

因此,我需要一个可计算的标准,它允许我使用泛型类型和继承来表达这个信息模型。使用XML模式,我不能表达泛型类型,所以从信息模型规范-- ~ --> XML模式--~->XML模式->XML模式->XML模式-~-->XML模式,导致许多问题。

Protocol buffers在许多方面都很有吸引力,因为它似乎允许快速的跨平台/语言通信,但我还没有机会了解它的建模功能。

我觉得被所有这些限制所困住了。目前,我不得不在xml模式之上使用其他形式的表示来跟踪泛型类型,这不是一个好的解决方案。

如有任何建议,我们将不胜感激

向Seref致敬

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-27 20:27:34

我觉得你可能对你的模型层要求太高了。

XML通常用于集成任务,因为您可以以半标准化的方式表示和序列化结构化数据。但是,对于每个子系统,您仍然必须解决在(取消)编组实时数据时出现的问题;几乎总是有一点阻抗不匹配。

因此,我认为您应该接受您的规范数据模型(表示为XML类型和事件)并不是与每个子系统的面向对象或关系模型一对一匹配,或者涵盖了它们的所有细节,如泛型的使用。连接器(SOAP web服务、文件解析器、ESB或您将要使用的任何基础设施)应该与您的规范模型相互转换。规范的数据模型应该是“领先的”,足够详细,以允许所有业务需求,并且足够通用,以便为具有不同内部表示的不同子系统留下一些回旋余地。

希望这能给你带来新的见解,并帮助你找到正确的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2011-02-27 19:08:58

如果您使用模型驱动的方法,为什么不想坚持使用关系表模型作为基础呢?在这种情况下,这听起来很合理。如果您有自己的RDMS不可知模型(在DDL中,如CREATE TABLE...),您可以利用任何语言的工具来处理它(生成源代码等)。我同意DDL中的继承是相当麻烦的,但它仍然是可能的(例如,参见this article)

票数 1
EN

Stack Overflow用户

发布于 2011-02-27 20:44:52

我认为您在将XML模式描述为“不支持泛型”时存在类别错误。自然地,XML schema并不映射到许多Java、C++或C#结构。它有一个非常不同的类型模型。缺少看起来像泛型或参数化类型的东西是一个相当次要的问题。

将XML schema映射到语言(JAX-B、xmlbeans、微软的.NET映射)的通用库拒绝处理XML schema中一些更面向文档的部分,然后相当随意地映射其余部分。缺少泛型不是XML模式的特征,而是这些映射层的特征。

例如,使用JAX-B,没有什么可以阻止您编写插件来实现泛型的一些约定。这对你的.NET没有帮助。

这里的根本困难在于,XML Schema从来都不是一个用于任意数据结构的跨编程语言类型系统。它的目的是描述和约束XML文档的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5132786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档