【问题标题】:Fastest way to populate dropdownlist & list control填充下拉列表和列表控件的最快方法
【发布时间】:2009-09-15 18:06:15
【问题描述】:

我目前正在使用 .NET 3.5 框架开发一个 n 层(3 层)ASP.NET Web 应用程序。

我想知道如何利用 n 层应用程序的“最佳实践”以最快的方式将数据加载到列表控件和下拉列表中。

使用最新且可行的技术(ASP.NET MVC、实体框架、用于 UI 的 Telerik Combobox、AJAX 等)的最佳实践是什么?

【问题讨论】:

  • 控件中的选择是依赖于页面上的用户操作,还是在页面呈现时已知?
  • 我们还不确定,但我想我们会两者兼得。您对每种情况有什么建议?交易

标签: c# asp.net n-tier-architecture


【解决方案1】:

“最快的方式”?将数据库加载到本地内存并编写一些优化的汇编代码来获取它。

说真的。您的问题非常广泛,就像在问“建房子最快的方法是什么”。嗯……我们需要更多信息。什么样的房子?什么样的窗户?土地是什么样的?

有数十种 DAL、“可行技术”和框架。它们的任何组合都可能为您提供所需的东西。在您真正设定具体要求之前,很难理解您在寻找什么。

【讨论】:

  • 好的,但是有没有关于这个主题的最佳实践(适用于所有 3 层网络应用程序)?
  • 不,乔恩。这一切都取决于您想要/需要从您的应用程序中获得什么。
  • 乔治所说的。听起来您在寻找某人说“这是最好的技术”,但实际上,多个 ASP.Net、Java 或 PHP 框架将满足您的需求。至于优化它们,你必须研究每一个,看看它们的可定制性如何。
  • 例如,SQL Server 是一个非常可扩展和高性能的数据库,MySQL 也是如此。您可以将它们中的任何一个与 ASP.Net 或 ASP.Net MVC 一起使用,并创建一个非常快速的应用程序。最终,数据库的选择归结为您需要的价格、许可和功能(例如,可以轻松设置 SQL Server 以用于故障转移集群),但任一数据库都可以针对您的特定应用程序的读/写性能进行优化。
【解决方案2】:

womp 说的。这也是“最快”的方法是不要将大量数据推送到客户端,而是尽量减少传输的数据。

【讨论】:

    【解决方案3】:

    使用 AJAX 在客户端构建列表和下拉控件。

    1. 在应用程序启动时将数据加载到缓存内存中
    2. 客户端发出 JSON 请求以将数据加载到控件中
    3. JSON 对象在服务器上创建,数据从缓存中获取并发送回客户端
    4. 在客户端,遍历返回的 JSON 对象,并将 DOM 元素添加到列表和下拉控件中

    【讨论】:

    • 您所描述的只是服务器和客户端之间的数据流,不一定要如何快速完成。诚然,对于需要更新下拉列表的情况,以响应用户与 UI 的交互,使用这种方案通常比刷新整页更快 - 它给用户一个很好的响应感。
    【解决方案4】:

    假设在呈现页面时下拉列表中的选项是已知的,我会使用以下策略:

    1. 倾向于只呈现普通的旧 OPTION 标签。
    2. 如果这会使页面加载速度过慢,请使用在页面加载时立即触发的 AJAX(将控件设置为禁用直到填充),以便可以呈现表单的其余部分。
    3. 如果这仍然太慢或太笨拙,请使用 AJAX 自动完成字段。

    对于上面的 (1) 或 (2),如果选项列表是静态的,我建议将选项列表作为 HTML 字符串存储在服务器上的应用程序缓存中,由 StringBuilder 在尚未创建时构建或需要更新。

    【讨论】:

    • 实际上我希望组合框可编辑,我想我将不得不使用第三方控件?
    • 是的,组合框控件不是 HTML 标准的一部分。我已经相当成功地使用了 ExtJS 控件,但这是一个相当大的框架。我建议您尝试使用带有自动完成下拉功能的 INPUT 标记,而不是看起来像原生的组合框,该功能可以使用 Scriptaculous 或 JQuery 自动完成插件来实现。
    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多