2014-01-22 3 views
18

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

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

ответ

0

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

Заканчивать следующее: Routing explanations

+0

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

21

Для решения первого вопроса, рассеивая маршруты имеет ряд преимуществ:

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

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

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

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

+0

Спасибо, Луис. Подтверждение от Кевина Монтроуза является достаточной причиной для его попытки. –

1

Вы можете проверить блок your'e маршруты при использовании обычного маршрута, и у вас также есть «Разделение проблем ".

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

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

+1

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

+0

Я не уверен, что понимаю? – Derek

0

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

НО ...

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

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

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

Другого варианта, который выглядит перспективным является MvcCodeRouting который пространство имен маршрутизация на основе

Смежные вопросы