ASP.NET - создание собственной системы маршрутизации

В недавнем проекте я создал свой собственный MVC-фреймворк на PHP. Одна из вещей, которые я реализовал, была система маршрутизации. Я использовал Apache mod_rewrite для отправки всех запросов в index.php, а затем проанализировал URI для извлечения информации и маршрутизации запроса.

Сейчас я работаю над ASP.NET, и мне интересно, смогу ли я выполнить что-то подобное. Есть ли способ направить все запросы (аналогично тому, как это делает WordPress) на одну страницу, где выполняется центральная обработка маршрута? Я знаком с инфраструктурой MVC для ASP.NET, но я бы хотел попробовать это самостоятельно, поскольку я возился и учусь.

РЕДАКТИРОВАТЬ: Кстати, мой хостинг-провайдер работает IIS 6

1 ответ

Решение

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

Механизм маршрутизации, который обеспечивает ASP.NET MVC Framework, будет работать с традиционным ASP.NET Framework. Вы можете воспользоваться преимуществами RouteTable и назначить маршруты, как в приложении ASP.NET MVC. Вы просто не получаете часть MVC на традиционных сайтах ASP.NET. Это было огромное улучшение для ASP.NET Framework, и было здорово видеть, как они повторно используют этот код и заставляют его работать в обеих платформах. Если вы хотите узнать больше об этом, ознакомьтесь с публикацией ScottGu и прокрутите вниз до пункта Улучшения маршрутизации URL. Также здесь есть ссылка на то, как использовать System.Web.Routing в WebForms от Phil Haack.

Теперь, если вы все еще хотите написать, вы сами. Вам нужно будет изучить HTTP-конвейер ASP.NET и узнать, как реализовать интерфейсы IHttpModule и IHttpHandler для создания собственного класса HttpModule или HttpHandler для обработки вашей маршрутизации. Эти интерфейсы являются ключом при написании вашего собственного механизма маршрутизации. Чтобы поместить эти интерфейсы в рабочий пример, я не смог бы порекомендовать эту статью MSDN. Он показывает вам, как работать с любым из интерфейсов, и объясняет различия при создании собственного движка маршрутизации / перезаписи URL.

Теперь, если вы узнаете, что это может быть слишком много для вас. Существуют сторонние библиотеки, которые вы можете использовать для людей, которые уже написали движок маршрутизации / перезаписи URL в.NET. Вот вопрос, который я видел не так давно: " Какой рерайтер URL вы используете для ASP.Net?" Прямо здесь, на SO.

Другие вопросы по тегам