Подтвердить что ты не робот

ASP MVC 5 Маршрутизация атрибутов VS. Маршрутизация на основе конвенции

ASP MVC 5 имеет новую маршрутизацию маршрутизации атрибута Routing. Как я вижу, маршруты теперь разбросаны на каждом контроллере, в отличие от основанного на конвенции, что есть одно местоположение RouteConfig.cs, где вы можете проверить свои маршруты, что также служит в качестве документации для ваших маршрутов сайтов каким-то образом.

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

4b9b3361

Ответ 1

Чтобы решить свой первый вопрос, рассеяние маршрутов имеет ряд преимуществ:

  • Он помещает информацию о маршруте рядом с действием контроллера, которое реализует этот маршрут. Это помогает отлаживать и устранять неполадки, а также обеспечивает возможность быстрого поиска информации о маршруте в вашем решении.

  • Это снижает риск в процессе внесения изменений в маршруты. В RouteConfig.cs или WebApiConfig.cs(в случае решений Web API) существует возможность непреднамеренно изменить неправильный маршрут или иным образом негативно повлиять на другие части вашего приложения.

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

Этот пост предоставил мне вдохновение и подкрепление вышеизложенным и более подробно: http://kevinmontrose.com/2011/07/25/why-i-love-attribute-based-routing/

Ответ 2

Вы можете Unit Test ваши маршруты, используя обычную маршрутизацию, и у вас также есть "разделение проблем".

Нельзя сказать об атрибутивной маршрутизации.

Для большого проекта я бы пошел обычным, для небольшой маршрутизации атрибута проекта более чем нормально.

Ответ 3

Маршрутизация атрибутов дает вам более удобные параметры маршрутизации.

Проверьте следующее: Объяснения маршрутизации

Ответ 4

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

НО...

В моем опыте стандартная маршрутизация слишком упрощена и часто ломается по проектам, которые являются большими или более сложными. Часто случается, что вы начинаете с маршрута по умолчанию {controller}/{action}/{id}. Но тогда вы решаете, что вам нужны еще несколько маршрутов, потому что вам нужна более глубокая иерархия, поэтому начните добавлять маршруты. Что-то вроде этого:/company/5/employee/7/edit. Тогда вы должны быть осторожны, в каком порядке вы отправляете маршруты, чтобы найти правильный маршрут. После того, как вы начнете добавлять пользовательские маршруты, вы можете обнаружить, что больше одного маршрута соответствует конкретному запросу, поэтому вы добавляете некоторые ограничения маршрута. По мере того, как ваш проект становится больше и/или более сложным, конфигурация вашего маршрута растет по размеру и сложности, что делает его уязвимым и трудноподдерживаемым.

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

TL; DR:. В определенные моменты маршруты становятся более сложными для поддержания безопасности, независимо от того, используете ли вы маршрутизацию на основе конвенций или маршрутизацию атрибутов. Маршрутизация атрибутов - это управление вашим маршрутом и предотвращение ошибок маршрутизации.

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