Чтение онлайн

на главную - закладки

Жанры

Шрифт:

using System.Web.Routing;

namespace MvcApplicationl {

public class MvcApplication : System.Web.HttpApplication

{

public static void RegisterRoutes(RouteCollection routes)

{

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(

"Default",

"{controller}.mvc/{action}/{id}",

new { action = "Index", id = "" }

);

routes.MapRoute(

"Root",

"",

new { controller = "Home", action = "Index", id = "" }

);

}

protected void Application_Start

{

RegisterRoutes(RouteTable.Routes);

}

}

}

Обратите

внимание на выделенные участки кода листинга П1.1. Вместо создаваемого по умолчанию маршрута с шаблоном {controller}/{action}/{id}, для IIS6 необходимо создать маршрут с шаблоном {controller}.mvc/{action}/{id}. Плюс, для обработки запросов к корню приложения необходимо создать еще один маршрут с именем Root и пустым шаблоном маршрута.

После таких изменений каждый запрос к вашему приложению должен иметь вид {controller}.mvc/{action}/{id}, т. е. каждая строка имени контроллера должна заканчиваться с расширением mvc. Например: запрос /product.mvc/details/1 вызовет контроллер-действие Details в контроллере Product и передаст в параметр id значение 1.

В случае, когда вы не имеете доступа к конфигурированию сервера IIS и не можете задать сопоставление расширения и ISAPI-обработчика, то решением может стать использование вместо расширения mvc другого расширения, зарегистрированного в системе: axd, aspx, ashx. В таком случае описанный в листинге код должен быть модифицирован следующим образом:

routes.MapRoute(

"Default",

"{controller}.aspx/{action}/{id}",

new { action = "Index", id = "" }

);

Это означает, что все ваши запросы должны представлять собой подобие запроса /product.aspx/details/1 с расширением aspx для имени контроллера.

Ограничение IIS6 приводит к тому, что маршрутизация и строки URL-запросов к вашему приложению не будут выглядеть так же красиво, как в приложениях, работающих на базе IIS7. Кроме того, вам будет необходимо генерировать совместимые ссылки с определенными маршрутами и используемыми в них расширениями (mvc или aspx). Однако в настоящее время использование серверов IIS6 в компаниях, которые предлагают услуги хостинга, стремится к нулю, и все крупные хостеры уже предлагают хостинг на базе IIS7 или даже IIS7.5. Поэтому, перед тем как сделать выбор хостера, уточните, предлагает ли он сервер на базе IIS7, и если обнаружится, что он по какой-то причине до сих пор этого не делает, то, возможно, вам следует поискать другого, более современного хостера.

ПРИЛОЖЕНИЕ 2

Оптимизация производительности

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

Здесь мы дадим некоторые базовые советы по оптимизации как производительности приложений на сервере, так и на клиентской стороне в браузере пользователя.

Кэширование данных

Одним из базовых инструментов повышения производительности является

кэширование сгенерированных данных, в основном, веб-страниц. В ASP.NET существует базовый инструмент кэширования данных с помощью директивы @outputcache, параметры которой позволяют управлять временем кэширования страницы и задавать условия, при которых кэширование происходит.

В ASP.NET MVC для кэширования результатов выполнения действий в контроллерах предлагается использовать специальный атрибут outputcacheAttribute, который представляет собой аналог директивы @outputcache. Например, далее представлен код, который позволяет кэшировать все результаты контроллера на 30 минут:

[OutputCache(Duration = 1800, VaryByParam = "none")]

public class AdminController : Controller

Подробнее параметры этого атрибута рассмотрены в главе 4.

С помощью атрибута OutputCacheAttribute вы можете решить проблему загруженного запросами сервера. Кэшированный результат запроса имеет определенный срок жизни, в течение которого вместо вторичного получения результата в ответ на запрос возвращается кэшированное значение. Иными словами, кэширование позволяет нам снизить нагрузку на ресурсы сервера путем возвращения одного и того же результата на разные запросы клиентов. Более того, механизм кэширования работает так, что браузер пользователя также кэширует результат и будет брать информацию о странице при повторном обращении из своего локального кэша, а не путем отправки запроса на сервер.

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

Сжатие данных

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

Сервер IIS, на котором работают приложения ASP.NET MVC, предлагает комплексный механизм, позволяющий на лету сжимать исходящие данные из сервера и принимать сжатые данные от клиента. Для включения этого механизма в IIS7 можно воспользоваться опцией Compression, в которой можно включить сжатие как статического (скрипты, CSS-стили), так и динамического контента.

В случае, если включение динамического сжатия недоступно, следует включить его поддержку через панель добавления инструментов Windows (рис. П2.1).

Сжатие данных, передаваемых между клиентом и сервером, работает следующим образом:

1. Клиент отправляет запрос серверу, в заголовке которого может передать информацию о том, что он поддерживает сжатие данных. Этот заголовок передается следующим образом: Accept-Encoding: gzip, deflate.

2. IIS-сервер, получив такой заголовок, уверен, что клиент может обрабатывать сжатые данные, поэтому, если разработчик настроил сервер на сжатие данных, результат запроса будет сжат с помощью алгоритма GZip или Deflate и отправлен клиенту со следующим опознавательным заголовком: Content-Encoding: gzip.

Поделиться:
Популярные книги

Хроники Тириса. Книга 1

Маханенко Василий Михайлович
1. Хроники Тириса
Фантастика:
боевая фантастика
космическая фантастика
фантастика: прочее
6.00
рейтинг книги
Хроники Тириса. Книга 1

Я царь. Книга XXVIII

Дрейк Сириус
28. Дорогой барон!
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Я царь. Книга XXVIII

Менталист. Конфронтация

Еслер Андрей
2. Выиграть у времени
Фантастика:
боевая фантастика
6.90
рейтинг книги
Менталист. Конфронтация

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Хозяин Стужи

Петров Максим Николаевич
1. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Хозяин Стужи

Вперед в прошлое 2

Ратманов Денис
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 2

Целеполагание

Владимиров Денис
4. Глэрд
Фантастика:
фэнтези
боевая фантастика
рпг
5.00
рейтинг книги
Целеполагание

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия

Мастер 4

Чащин Валерий
4. Мастер
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Мастер 4

Кодекс Охотника. Книга XIII

Винокуров Юрий
13. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XIII

Мужчина моей судьбы

Ардова Алиса
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Мужчина моей судьбы

География растений

Гумбольдт Александр
Классики естествознания
Научно-образовательная:
ботаника
7.50
рейтинг книги
География растений

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Первый среди равных. Книга IV

Бор Жорж
4. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга IV