我们正在构建一个调查系统并使用ASP.NET MVC,并想知道是否有人可以提供有关架构的建议。
这是我们试图解决的问题。基本上,一个机构每年发出几次调查。它们非常有条理,不像SurveyMonkey调查风格 - 它们实际上是反馈的应用。就像签证申请一样,他们需要做很多事情,有时需要2-3周的时间才能完成。
他们可以上传文件(购买证明等 - PDF / JPG)以及多个“项目”。例如。比如说他们曾经为麦当劳工作,可能有20个不同的特许经营权,他们建立了他们工作过的地点清单。 3周后,可能会有另外3个新地点,2个可能已关闭。因此,我们需要确保表单能够处理这些情况。
表单本身(标记和数据)每年都在变化 - 我应该提到税收/财务/预算系统。
我们考虑使用MVC,使用Xml来存储数据(暂时),XSD来验证数据,XSL将数据转换为可呈现的标记(供他们填写)然后一旦他们“提交”一个应用程序它会存储在相关区域的数据库中。
当用户启动应用程序进程时,他们可以保存到目前为止的进度(我们验证它们所包含的内容并忽略它们没有),将其保存为Xml blob并存储在数据库中。当他们最终准备好提交它时,我们会进行完整的验证并上传文件并安全地存储它们(它有业务证明和会计报表),然后运行一些工作流程。
我真正关心的是如何管理更改表单版本(一年后)。这些天如何编写表单/应用程序系统?我们有2个月的时间来完成这项工作,并提供约30种表格。所以30xXML,30xXSD,30xXSL。
答案 0 :(得分:0)
此可能是与Windows Workflow Foundation集成的一种情况,因为您正在讨论维护长时间运行的工作流的状态(完成应用程序)。
如果您可以划分应用程序流程的各个组件,则可以通过删除,重新路由和/或修改工作流的现有部分来修改未来几年的工作流程。
那就是说,听起来你可能有非常紧张的时间限制。可能值得花几个小时调查WF,但要仔细考虑是否引入新内容可能会危及您的截止日期。
对于XML,XSD,XSL路由,我认为这取决于您团队的经验。就个人而言,我回避这一点,并将数据存储在关系数据库中的一个或多个“待处理应用程序”表中。从那里(当然,您也可以从XML执行此操作),构建适当的业务对象和模型,我的MVC视图可以绑定到这些对象和模型。使用Enterprise Validation或Fluent Validation等执行字段级验证,最终验证由一个或多个验证器类执行,验证器类检查应用程序的所有组成部分。
要处理可能的更改,请在30个表单中的每个表单之间保持清晰的分隔。你应该能够在明年修改一个给定的表格,而不会弄乱其他人。请记住,如果未来几年有新的要求,您可以随时继承或组成模型类型,并且 删除过时的部分 - 您的新视图不会暴露某些部分该模型。