基于XML的验证框架跨语言

时间:2009-09-08 19:49:59

标签: c# java xml cross-language validationframework

我即将开始一个新项目,我们需要能够在客户端和服务器上重用基于(最好是XML)的验证。

我们会设置一个服务来向客户端提供XML验证配置数据。

以下并不意味着任何形式的煽动性。

Enterprise库确实支持验证要在XML中配置的对象,但java开发人员无法访问此XML解释的java reader版本。

还有Spring.Net验证,但我认为这可能与.net绑得太多了。 Spring.Net验证套件是否直接从java spring框架移植,即不更改xml配置?

是否还有其他可以在.Net和Java中使用的验证框架?

该项目将完全是SOA,验证是我必须弄清楚的最后一件事。

编辑:

为了澄清验证需要在接收客户端使用的语言中发生,即如果Web服务的客户端是Java,那么验证将被读入java并在java中验证,以便可以报告错误条件用户要修正的UI。同样,如果它是.net客户端,.net客户端将能够读取它并提供相同的功能。

我不想在xml中验证,xml将是一组规则,即Customer.Name最多50个字符,并且必须至少5个字符,并且是必填字段。

由于 皮特

3 个答案:

答案 0 :(得分:3)

如何在可以在jvm和.net中运行的脚本语言中尝试验证。

脚本语言非常适合这种逻辑,所以可能:

Ruby - http://www.ironruby.net/http://www.jruby.org/

或Perl。

这种方法允许使用完全相同的代码进行验证,然后从Java或.net中调用它。

使用jruby不会带来很大的性能开销,它可以与java非常紧密地集成。我对Ironruby的经验较少,但是从代码加载完毕后我已经阅读过并且正在运行,性能还可以,并且可以很好地集成到.net代码中 - 请参阅:http://www.ironruby.net/Documentation/.NET/Hosting

不要忘记我的回答,但不管你如何做到这一点,它将涉及引入一项新技术,包括所有相关的开销 - 开发环境等。更好的方法可能只是在.net和java中单独进行但是维护一个非常广泛的测试套件示例,以确保两个验证保持同步。

答案 1 :(得分:3)

看看DROOLS。 有.Net和Java版本的规则引擎。 Java Link.Net Link

我没有使用这些库,因此无法评论在这两种环境中如何“无缝地”使用这套规则。

答案 2 :(得分:0)

不确定您要完成哪种验证。如果您的业务对象将以XML格式序列化,那么除了架构验证之外,您还可以使用Schematron通过其他业务规则和检查来扩充它。

Schematron是ISO标准,它提供了一种编码XML Schema中无法实现的业务规则,限制和验证的方法。

  

Schematron基本不同   来自其他模式语言的概念   它不是基于语法而是基于语法   在解析中找到树模式   文献。这种方法允许很多   要表示的各种结构   这是不方便和困难的   在基于语法的模式语言中。如果   你知道XPath或XSLT表达式   语言,你可以开始使用了   Schematron立刻。