2010-04-02 82 views
1

目前我正在處理一個web application,它使用txt文件作爲數據庫來進行現在的測試。但我們稍後會將其連接到服務器。Ajax應用程序的效率問題

我的問題是,如果有一種更有效的方式來獲取我的對象比我現在使用的方式。

在page_init過程中,我將所有對象都放入一個集合中作爲List-< -TravelP - > - ,然後使用該對象填充頁面中的ajax工具包accordion對象。他們還發射了一些隱藏按鈕的服務器端事件。

我有一些客戶端按鈕,它會觸發回調以獲取其他對象以在更新面板中填充手風琴。

我正在使用.net集合太像字典和列表,我想知道如果使用數組更有效。

您能否告訴我如何使本網站更好更快?

是不是更好或有可能在JavaScript中初始化這些TravelP對象,並在開始時使用它?

任何意見,將不勝感激,謝謝

回答

1

首先,我會鬆的UpdatePanel。如果性能是你所追求的,那麼忘記UpdatePanel。相反,您可以編寫ScriptService Web服務(使用C#)並從您的JavaScript代碼中調用它們。這些特殊的Web服務可以返回.NET對象,然後可以在JavaScript代碼中使用(確保它們是可序列化的,否則您需要編寫自己的JavaScript序列化程序)。

我會從那開始的。這樣做會使初始性能提升。之後,您可以考慮採取更多措施來增強您的代碼。

+0

謝謝你的答案,是的,我相信你是100%正確的關於更新面板,但我的JavaScript知識太窮,無法序列化我的對象從服務器端到客戶端。 你能爲我提供一個教程鏈接或sthg嗎? – Kubi 2010-04-03 13:12:23

+0

嘗試此鏈接:http://msdn.microsoft.com/en-us/library/bb398995.aspx。 請注意,您可以從Web服務返回任何對象類型並從JavaScript中使用它(例如,在MSDN頁面上的示例中,它們具有返回XmlDocument的方法)。 – 2010-04-03 17:11:09

+0

我收到一個錯誤,我無法修復它。 {「Message」:「使用JSON JavaScriptSerializer進行序列化或反序列化時出錯。字符串長度超過maxJsonLength屬性設置的值... 這是什麼限制? – Kubi 2010-04-07 06:59:12

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的(命名空間= 「http://tempuri.org/」)] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(假)] 公共類自動完成: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服務的繼承者!