Каковы некоторые рекомендации при использовании jquery для вызовов AJAX в ASP.NET? - PullRequest
0 голосов
/ 02 августа 2010

В последнее время я работаю над проектом, который сильно зависит от вызовов AJAX.В прошлом большинство этих звонков использовали собственную страницу aspx для публикации, например.AJAXgetResults.aspx.Проведя некоторые исследования, я увидел несколько примеров использования функции jaery .ajax и веб-методов в коде.Я думаю, мой вопрос сводится к.Есть ли какой-либо выигрыш / потеря производительности при прохождении маршрута веб-метода?Я предположил бы, что это все еще будет так же безопасно, как страница, на которой он находится, верно?Любые другие предложения приветствуются!Спасибо!

Ответы [ 2 ]

1 голос
/ 02 августа 2010

Если ваше приложение в значительной степени опирается на AJAX (XHRs более широко), я бы посмотрел на Rest WCF и возвращал результаты в JSON. Вы сократите потребляемую пропускную способность и, как правило, получите повышение производительности. Я считаю, что сериализация и аутентификация WCF значительно превосходят использование страницы в качестве службы. Как правило, ваша производительность должна улучшиться, если вы измените эти страницы на сервисы.

1 голос
/ 02 августа 2010

Полагаю, это зависит от того, какой уровень контроля вы хотите иметь над тем, что происходит во время вызова AJAX. Веб-методы, безусловно, будут работать, но то, что я использовал в недавнем проекте, - это создание обработчика .ASHX для отдельных функций, которые вы хотите использовать в своих вызовах AJAX. У вас по-прежнему есть доступ к любым переменным контекста, таким как запрос, ответ, строка запроса, сеанс и т. Д., И логика хорошо инкапсулирована вне любых страниц, и вы также не получаете накладных расходов на «нормальную» обработку страницы и жизненный цикл, улучшить производительность.

Просто будьте осторожны при установке уровней кэширования, поскольку обработчики ASHX по умолчанию кажутся очень «кэшируемыми».

Пример, ashx, чтобы получить всех сотрудников на определенную должность и вернуть результаты в формате JSON:

public class GetEmployeesForPosition : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "application/json";
            context.Response.Clear();
            context.Response.AddHeader("Pragma", "no-cache");
            context.Response.AddHeader("Expires", "-1");

            var position = new Entity.Model.Position { Code = context.Request.QueryString["code"] };
            var language = new Language { Key = context.Request.QueryString["language"] };

            var list = new EmployeeManager().GetForPosition(position, language);
            var employeeMenuList = new List<KeyValuePair<string, string>>();
            foreach (var emp in list)
            {
                var item = new KeyValuePair<string, string>(emp.Person.Number, emp.Person.DisplayName);
                employeeMenuList.Add(item);
            }

            var json = JsonSerializer.ToJson(employeeMenuList);
            context.Response.Write(json);
        }

        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...