代码之家  ›  专栏  ›  技术社区  ›  Kubi

Ajax应用程序的效率问题

  •  1
  • Kubi  · 技术社区  · 15 年前

    目前我正在处理一个 web application 它现在使用一个txt文件作为数据库进行测试。但稍后我们会将其连接到服务器。

    我的问题是,是否有比我现在使用的方法更有效的方法来获取我的对象。

    在页面初始化期间,我将所有对象作为列表<-travelp->-放入集合中,然后在页面中填充Ajax工具箱accordion对象。他们还触发了一些隐藏按钮的服务器端事件。

    我有一些客户端按钮,它触发回调,以获取一些其他对象来填充更新面板中的手风琴。

    我使用的.NET集合太多了,像字典和列表,我想知道使用数组是否更有效。

    你能告诉我如何使这个网站更好更快吗?

    在javascript中初始化这些travelp对象并像这样使用是更好还是可能的?

    任何评论都将不胜感激, 谢谢

    2 回复  |  直到 15 年前
        1
  •  1
  •   Shay Friedman    15 年前

    首先,我会松开更新面板。如果性能是您追求的,那么就不要考虑updatepanels了。

    相反,您可以编写脚本服务Web服务(在C)并从您的javascript代码调用它们。这些特殊的Web服务可以返回.NET对象,然后这些对象可以在JavaScript代码中使用(但请确保它们是可序列化的)。否则,您需要编写自己的javascript序列化程序)。

    我先从这个开始。这样做将使您的初始性能得到提升。之后,您可以考虑做更多的事情来增强代码。

        2
  •  1
  •   Zachary    15 年前

    您可能希望研究如何将jquery用于客户端JavaScript库。它使得从在.NET中创建的asmx/wcf服务中提取数据变得非常容易。您可以以多种方式返回数据xml/json,并使用jquery dom选择器轻松地操作页面!

    下面是通过asmx服务加载一些JSON数据的简单调用。

    $.ajax({
        type: "POST",
        url: "demo.asmx/GetData",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: "{q:'a', limit: 10}",  // Passing params to function!
        success: function(res) {
        // Do your work here.
        // Remember, the results for a ASMX Web Service are wrapped
        // within the key "d" by default. e.g. {"d" : "Hello World"}
        }
    });
    

    下面是一个ASMX服务返回列表的示例,它实际上可以是任何东西。如果您已经有强类型的POCO对象,那么您可能已经使用类似的方法对数据进行了序列化。还有json.net库,它允许您序列化整个数据表。

    [Web服务(命名空间=“ http://tempuri.org/ “” [Web服务绑定(conformsto=wsiprofiles.basicProfile1_1)] [系统.componentModel.toolboxItem(false)] 公共类自动完成:system.web.services.webservice {

    [WebMethod]
    public List<string> GetData(string q, int limit)
    {
        // A collection to hold our results
        List<string> customers = new List<string>();
    
        // Our source of names, could be a DB query
        string[] db = new string[]{"Amy","Betty","Brent","Fred","Mark","Sally","Sam","Richard","Wilma","Yolanda","Zack"};
    
        // Looping through the datasource to select the items that match
        foreach(string cust in db)
        {
            if(cust.ToLower().Contains(q.ToLower()))
            {
                customers.Add(cust);
            }
        }
    
        // Sort the list
        customers.Sort();
    
        // Return the items that contained the text in alphabetical order
        return customers;
    
    }
    

    }

    你可以做很多事情,也有很多人在写关于使用这些技术的文章。如果您刚开始,您可能应该看看WCF,因为它是ASMX服务的继承者!

    推荐文章