ASP.NET - Создание вашей собственной системы маршрутизации
-
09-06-2019 - |
Вопрос
В недавнем проекте я создал свой собственный фреймворк MVC на PHP.Одной из вещей, которые я внедрил, была система маршрутизации.Я использовал mod_rewrite от Apache для отправки всех запросов в index.php, а затем проанализировал URI, чтобы извлечь информацию и направить запрос.
Сейчас я занимаюсь ASP.NET, и мне интересно, могу ли я выполнить что-то подобное.Есть ли способ перенаправить все запросы (аналогично тому, как это делает WordPress) на одну страницу, где выполняется централизованная обработка маршрута?Я знаю о фреймворке MVC для ASP.NET, но я хотел бы попробовать это сам, поскольку я возлюсь и учусь.
Редактировать:Кстати, мой хостинг-провайдер работает под управлением IIS 6
Решение
Это будет длинный ответ, потому что я хочу убедиться, что вы полностью осведомлены обо всех способах достижения того, что вы хотите сделать.
Механизм маршрутизации, который поддерживает фреймворк ASP.NET MVC, будет работать с традиционным фреймворком ASP.NET.Вы можете воспользоваться помощью таблица и назначение маршрутов, так же, как и в приложении ASP.NET в MVC.Вы просто не получаете часть MVC на традиционных ASP.NET сайтах.Это было огромным улучшением для фреймворка ASP.NET, и было здорово видеть, как они повторно используют этот код и заставляют его работать в обоих фреймворках.Если вы хотите узнать больше об этом, загляните в Scottgu's Публикация и прокрутите вниз до улучшений маршрутизации URL-адресов.Также здесь есть ссылка о том, как использовать System.Web.Routing в WebForms, автор Фил Хаак.
Теперь, если вы все еще хотите написать что-то свое.Вам нужно будет изучить конвейер ASP.NET HTTP и способы реализации IHttpМодуль и тот IHttpHandler - обработчик интерфейсы для создания вашего собственного класса HttpModule или HttpHandler для обработки вашей маршрутизации.Эти интерфейсы являются ключевыми при написании вашего собственного механизма маршрутизации.Чтобы помочь представить эти интерфейсы в рабочем примере, я не мог бы рекомендовать это Статья в MSDN достаточно.В нем показано, как работать с любым интерфейсом, и объясняются различия при создании собственного механизма маршрутизации / перезаписи URL.
Теперь, если вы поймете, что для вас это может оказаться чересчур.Существуют сторонние библиотеки, которые вы можете использовать у людей, которые уже написали механизм маршрутизации / перезаписи URL-адресов в .NET.Вот вопрос, который , как я видел , не так давно задавали "Для чего вы используете программу перезаписи URL ASP.Net?" прямо здесь, на SO.