zoukankan      html  css  js  c++  java
  • 用 ASP.NET Callback 和 JavaScript 高速访问数据库

    透过 ASP.NET 的 Client Callback 技术,可让 JavaScript 和 .NET 直接作沟通,并以远远远远快于 UpdatePanel 控件的速度,高速执行 Web 应用程序。本帖提供一个 ASP.NET Callback 的示例下载,仅用极少的代码,实现类似 Google 的实时关键词查询,且性能超优,程序的响应速度有如 JavaScript 般地快速。


    看到本帖的摘要,您可能会觉得 Callback 技术相当惊人,确实,其数据传输量、执行速度,都远远比 ASP.NET AJAX 的 UpdatePanel 控件要优秀。若您用一些网络监控工具观察 ,会看到在许多情况下,Callback 在网络中传送的数据量,甚至比 UpdatePanel 控件要少了数十倍甚至上百倍。

    但 Callback 是 ASP.NET 2.0 就已推出的旧技术,甚至可说它只是在微软 AJAX Framework 出来前的一套过渡技术。其功能及函数极有限,因此并不适合开发较复杂的应用。因此就开发方便性而言,其远不如 ASP.NET AJAX 控件,以及 UpdatePanel 控件来得方便。但不可否认的,在某些应用较单纯,且需要高性能、快速响应的页面,Callback 仍是相当不错的选择。

    本帖提供两个简易示例下载,第一个示例,可在 TextBox 的 OnBlur、OnKeyup 等 JavaScript 事件被触发时,查询 SQL Server,且 Onkeyup 可达成如同 Google 般的实时 key-in 查询效果;第二个示例,则改成透过 Button Click 才会查询数据库。

    -------------------------------------------------
    本帖的示例代码下载点:
    https://files.cnblogs.com/WizardWu/090208.zip

    (执行本示例,需要 SQL Server 的 Northwind 数据库,以及 IIS 或 VS 2008)
    -------------------------------------------------


    图 1 一离开 TextBox 时 (OnBlur),会用极快的速度查询数据库

    如同版工在之前的「网站性能越来越差怎么办? 」一文,以及下面这篇文章所提到的:

    UpdatePanel 提示和技巧 (MSDN Magazine, 2007/6):
    http://msdn.microsoft.com/zh-cn/magazine/cc163413.aspx


    微软为了达成 AJAX 的使用方便性,而牺牲了许多性能,让 UpdatePanel 控件运作得相关没有效率,因其用 ViewState 保存了大量的页面状态。反观 Callback 技术虽然速度快 ,网络传输量远比 UpdatePanel 控件少,但其缺点为功能过于阳春、开发不便;且版工我还发现一个缺点,就是在其 RaiseCallbackEvent 方法中,会让 Response.Write、 JavaScript 的 alert 失效,导致捕捉到的错误信息,无法显示在页面上让程序员和用户知道。

    另听说在 ASP.NET 4.0 时,UpdatePanel 控件的 Render 方式会有新的改进,可以只 Render 特定的页面字段值,会比 Partial Rendering 聚焦到更小的区块。在这之前,若您的页面需要以特优的性能实现简单的功能,如本帖的示例,Callback 仍是个不错的选择。

    --------------------------------------------------

    参考文件:

    [1] ICallbackEventHandler 接口
    http://msdn.microsoft.com/zh-cn/library/system.web.ui.icallbackeventhandler(VS.80).aspx
    http://msdn.microsoft.com/zh-cn/library/system.web.ui.icallbackeventhandler_members(VS.80).aspx

    [2] 董大伟、奚江华等人写的 ASP.NET 2.0 书籍

    [3] CallBack 与 UpdatePanel 的性能比较
    http://www.cnblogs.com/jeff377/archive/2007/12/09/988347.html

    [4] 网络文件


     

  • 相关阅读:
    自己编译linux内核
    codeblocks中文输入及控制台乱码
    c快速学习代码
    二分法求方程解
    苹果公司前任首席执行官乔布斯语录
    html5特性
    lamp server快速搭建
    poj 1247 Magnificent Meatballs 解题报告
    Ural 1005 Stone Pilet 解题报告
    Ural 1020 Rope 解题报告
  • 原文地址:https://www.cnblogs.com/WizardWu/p/1386124.html
Copyright © 2011-2022 走看看