我们有一个Web服务,它接收XML字符串作为输入。服务执行(或应该执行)的第一件事是根据预定义和约定的XML模式验证收到的XML字符串。
存储和访问此架构的最佳方法是什么?
我不认为选项(2)和(3)是最好的,因为架构可能会改变,然后我们需要更改代码。然后,如果XML结构发生变化,我们还是需要更改代码才能正确解析XML。
谢谢!
答案 0 :(得分:2)
我会详细介绍你的选项并提供一些输入。
1。)与Web服务位于同一位置的物理.xsd文件?
这是一个好主意,可能是您最好的选择。给它一个URI / URL意味着外面的人可以轻松访问它,而且你可以轻松地对每个XSD进行版本化并为每个XSD提供一个新的URL。
2.。)Web服务的代码文件中的常量字符串?
维护起来听起来并不好玩。一般来说,我喜欢将我的界面与我的实现分开,并且我的配置与其他任何东西都是分开的。使用此选项,您可以将这些内容组合在一起。我不推荐这个。
3.。)项目资源文件中的字符串值?
4.。)在网络配置的某个地方?
我不会推荐其中任何一项,因为你更难将它与项目的其他部分分开。这看起来很尴尬。不过,这并不是一个糟糕的主意。
5.。)在数据库中?
我曾经不推荐这个,因为我认为它会弄乱你的<xsd:include />
元素无法指向其他文件,从而限制你只使用最简单的模式,但我是set straight in this StackOverflow question我学到的URI与URL不同。数据库是存储XML模式的合法位置,尽管我个人喜欢将它们存储在文件系统中。
最后,我会说选择1。
答案 1 :(得分:0)
如果您的代码经过仔细编写并忽略了它不知道的属性和元素,那么XML架构的正确设计扩展将不需要重新编写代码。 这意味着选项2和3不是最佳方式。
将模式包含在Web配置中可能有点困难 - 因为它可能涉及XML中的XML,这可能但维护起来可能有点麻烦。
在大多数项目中,数据库包含数据,但没有配置设置。
因此,大多数项目最自然的位置是选项1.
但是YMMV,最好的建议是把它放在项目中其他相似类型的配置信息的位置,因为这是位置管理员和维护人员会在需要出错的情况下搜索它,或者需要某些东西改变。