【问题标题】:Best practice for saving application-level data to database (ASP.NET)将应用程序级数据保存到数据库的最佳实践 (ASP.NET)
【发布时间】:2013-06-05 13:11:59
【问题描述】:

我们有一个非常大的 HTML 表单(> 100 个字段),它使用用户输入的数据更新 SQL Server 数据库。用户填写表单需要很长时间,但他们提交的每一条信息对业务流程都非常有价值。即使用户放弃了表单,我们也希望保留他们输入的所有内容。

我们计划为每个字段附加一个 onblur 事件,并使用 jQuery/AJAX 将每条数据立即发送回应用程序服务器。这部分非常简单。我们的问题是何时以及如何最好地将这些应用程序级信息保存到数据库中。同样,我们的首要任务是数据保留而不是性能,但我们也希望尽可能高效地做到这一点。

我看到的选项是:

  1. 让 Web 服务立即将每条数据发布到数据库服务器。
  2. 将信息存储在应用服务器上的自定义类中,然后定期调用更新方法将新数据发布到数据库。
  3. 以视图或会话状态存储信息,然后运行例程将此信息发布到数据库服务器。
  4. 其他一些我们没有想到的东西。

选项 1 似乎是最明显的故障保护,但也是最耗费资源的。选项 2 似乎是最优雅的,但我们是否可以绝对确定如果不先运行其更新方法就不能销毁自定义类实例?

感谢您的帮助!

【问题讨论】:

    标签: asp.net sql-server ajax state


    【解决方案1】:

    恕我直言,我真的会把表格分成几部分(如果可能的话)。由于这是 ASP.Net,如果您使用的是 Web Forms,那么请考虑使用 wizards(将表单切成逻辑 Steps

    您可以在没有表单向导的情况下执行相同的操作,但仍将流程分成客户端的逻辑步骤。您可能可以在纯 JavaScript 中执行此操作,但如果您使用框架(jQuery、Knockout 等)可能会更容易 - 概念保持不变,将表单输入过程分成多个部分(又名“步骤”) -例如使用显示切换、每个“步骤”的 div 等。

    • “即使以后放弃也保留所有内容”:假设步骤是“分层的”,其中“最关键的”输入位于开头。这使得“步骤”方法更加重要 - 这是一个“逻辑组”(您真正想要的输入),所以如果您执行步骤方法,那么您可以将这些数据(这个“步骤”)保存到数据库中您认为合适的方式(例如 Ajax 或 ASP.Net Post/postback)。

    第...

    【讨论】:

    • 感谢您的回复。您是绝对正确的:我们需要将其分解为多个步骤,以使其更易于用户管理。我们可能会通过 jQuery 手风琴或其他一些多步骤过程来完成此操作。它仍然不是我们问题的核心,即何时将此输入刷新到数据库。对此有什么想法吗?
    【解决方案2】:

    我会将所有内容打包在一些 xml 或数据集 (.getxml) 中,并将 xml 传递给存储过程....

    How to pass XML from C# to a stored procedure in SQL Server 2008?

    也许把调用放在后台线程上。

    http://code.msdn.microsoft.com/CSASPNETBackgroundWorker-dda8d7b6

    xml 将比逐行调用值 (RBAR) 更快。 您可以只保存 xml,或将 xml 分解为关系表。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 2012-10-23
    相关资源
    最近更新 更多