Ajax应用程序的效率问题

时间:2010-04-02 13:20:28

标签: asp.net ajax asp.net-ajax performance

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

我的问题是,如果有一种更有效的方式来获取我的对象而不是我现在使用的方式。

在page_init期间,我将所有对象都收集到一个Collection中作为List-< -TravelP-> - ,然后我用它填充页面中的ajax工具包手风琴对象。他们还发射了一些隐藏按钮的服务器端事件。

我有一些客户端按钮可以触发回调,让其他对象在更新面板中填充手风琴。

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

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

在开始时在javascript中初始化那些TravelP对象是否更好或可能并使用它?

任何评论都会非常感谢, 感谢

2 个答案:

答案 0 :(得分:1)

首先,我放松了UpdatePanels。如果性能是您所追求的,请忘记UpdatePanels。

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

我从那开始。这样做会为您带来最初的性能提升。之后,您可以考虑采取更多措施来增强代码。

答案 1 :(得分:1)

您可能希望将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服务返回LIST,它本来可以是任何东西。如果您已经有强类型的POCO对象,则可能已经使用类似的方法对数据进行了序列化。还有JSON.NET库,允许您序列化整个DataTable。

[WebService(Namespace =“http://tempuri.org/”)] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(假)] public class Autocomplete: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服务的继承者!