架构设计:松散和重复与刚性?

时间:2012-09-08 11:50:11

标签: xml xsd

道歉,如果这个问题过于开放,在其他地方会更好。>

我目前正在讨论代表问卷集的XML模式的模式设计。调查问卷相当类似,包含一些具有一些属性的问题:

  • 问题唯一ID
  • 问题标题
  • 问题答案类型(文字,数字,日期等)
  • 回答价值

我们通过网站捕获调查问卷的答案,现在需要通过XML消息将其发送给其他方。我想知道发送代表已填写问卷的XML文件的利弊:

  1. 像这样的“重复且灵活”的格式:

    <Questionnaire>
        <Questions>
            <Question>
                <QuestionId>1234</QuestionId>
                <Name>Interviewee</Name>
                <Answer>Joe Bloggs</Answer>
            </Question>
            <Question>
                <QuestionId>1235</QuestionId>
                <Name>Date of birth</Name>
                <Answer>1980-03-15</Answer>
            </Question>
            ...
        </Questions>
    </Questionnaire>
    
  2. 更严格的格式:

    <Questionnaire>
        <Interviewee>Joe Bloggs</Interviewee>
        <DateOfBirth>1980-03-15</DateOfBirth>
        ...
    </Questionnaire>
    
  3. 没有足够的问卷调查表,每次制作新的XSD时都会创建一个单独的XSD,这可能不会引起太大的麻烦。

    我的想法是,第二个将更容易验证,并且由于问题具有类型,这些将很好地映射到架构数据类型。然而,当我们通过网站捕获回复时,第一个问题的基本表示自然会更容易产生。

    是否存在针对这类设计决策的一般最佳实践,或一个明显的原因,为什么一种方法会比另一种方法引起更少的麻烦,或者这实际上仅取决于所表示的特定数据集以及它将如何表示处理?

1 个答案:

答案 0 :(得分:3)

我相信你的问题与抽象与具体,或键/值对与结构等相同。我也认为它不是特定于XML,因为它同样会出现在OO上程序员;或数据库设计者;询问最佳做法与询问最佳宗教信仰是一样的......

让我们来看看你的选择:

选项1是一个元模型:它描述了一个问题是什么。选项2是一个模型:它描述了你在问什么。

选项1是每个数据库中的sys模式。选项2是特定数据库中用户定义的模式。

选项1是“技术性的”:是关于IT人员为问卷构建良好的基础设施。选项2是关于调查问卷的“业务”。

一个问题是 1 2 运行时开销)更详细; 2 需要对我们要求的内容进行更多的前期分析(设计时间开销)。 1 可以更好地适应新问题或扩展问题,例如:难度级别或获得答案需要多长时间(可扩展性)。 2 的XSD是自包含的,并且自我描述了如何正确使用实例XML(规范的可用性)。

根据我的经验,实施廉价并廉价管理变革的能力非常重要(拥有成本);不幸的是,服务的提供者和消费者也可能对这些也有不同的看法。找到最佳点,一个切实可行的设计 - 基本上你的问题 - 将需要更多考虑,按照我上面试图描述的方式。

严格地谈到您提到的关于选项1的一些问题:作为示例,强类型可以通过使用简单选择或替换组来缓解。但是,这种东西不会改变我所说的任何内容。

考虑到上述情况,我会诠释你的问题,把事情放在他们所属的地方。

对于这类设计决策see my reference in choosing a “religion”是否存在任何一般最佳实践,或者为什么一种方法比其他方法it all depends on many more things which you didn’t mention引起更少的头痛的明显原因,或者这实际上是否依赖于关于要表示的特定数据集以及如何处理yes, to a high degree