Вопрос эффективности для приложения Ajax - PullRequest
1 голос
/ 02 апреля 2010

В настоящее время я имею дело с веб-приложением , которое использует текстовый файл в качестве базы данных для тестирования на данный момент. Но позже мы подключим его к серверу.

У меня вопрос: есть ли более эффективный способ получить мои объекты, чем тот, который я использую сейчас.

Во время page_init я помещаю все свои объекты в коллекцию в виде списка - <- TravelP -> -, затем я заполняю ими объекты аккордеона ajax на странице. Они также запускают некоторые события на стороне сервера некоторых скрытых кнопок.

У меня есть некоторые кнопки на стороне клиента, которые запускают обратные вызовы для получения других объектов для заполнения аккордеонов на панели обновлений.

И я использую .net Collections слишком похоже на словарь и список, мне интересно, является ли использование массивов более эффективным.

Не могли бы вы посоветовать мне, как сделать этот сайт лучше и быстрее?

Лучше или возможно инициализировать эти объекты TravelP в javascript в начале и использовать их таким образом?

Любые комментарии будут с благодарностью, Спасибо

Ответы [ 2 ]

1 голос
/ 04 апреля 2010

Возможно, вы захотите изучить использование jQuery для клиентской библиотеки JavaScript. Это позволяет довольно просто получать данные из сервисов ASMX / WCF, созданных в .NET. Вы можете возвращать данные различными способами XML / JSON и легко манипулировать страницей с помощью селекторов JQuery DOM!

Вот простой вызов для загрузки некоторых данных JSON через службу ASMX.

$.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 (ложь)] открытый класс автозаполнения: 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!

1 голос
/ 02 апреля 2010

Прежде всего, я бы потерял UpdatePanels. Если вам нужна производительность, забудьте про UpdatePanels.

Вместо этого вы можете написать веб-сервисы ScriptService (на C #) и вызывать их из своего кода JavaScript. Эти специальные веб-службы могут возвращать объекты .NET, которые затем можно использовать в коде JavaScript (хотя убедитесь, что они сериализуемы. В противном случае вам потребуется написать собственный сериализатор JavaScript).

Я бы начал с этого. Это даст вам начальный прирост производительности. После этого вы можете подумать о том, что нужно сделать для улучшения вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...