ASP.NET - создание собственной системы маршрутизации - PullRequest
2 голосов
/ 22 августа 2008

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

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

EDIT: Кстати, мой хостинг-провайдер работает с IIS 6

1 Ответ

6 голосов
/ 22 августа 2008

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

Механизм маршрутизации, который обеспечивает 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.

...