2010-02-21 4 views
8

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

Точно так же никто, занимающийся реальной архитектурой, не ставит модели в какую-то папку в вашей веб-сборке MVC. Они войдут в сборку MyApp.DataLayer или MyApp.Models или что-то вроде этого.

+0

Можете ли вы прояснить одно: Вы говорите конкретно о методах расширения HTML Helper и их классах?Или вы говорите более широко о различных «вспомогательных классах», которые создаются во время создания приложения? В вашем сообщении говорится «вспомогательные классы», но в нем также упоминается папка «помощник», в которой многие люди размещают «методы HTML-помощника» (и статические классы, которые содержат эти методы). –

ответ

1

Я использую проекты для выделения разных слоев в своих приложениях в Интернете или форме. Это позволяет мне лучше соблюдать правила ведения бизнеса. Также мне легче отследить, куда мне нужно идти, если я хочу внести изменения.

Но я видел, как люди использовали папки, которые маркируют слои в решении, но я думаю, что это немного грязно.

2

У нас есть помощники в отдельном проекте и некоторые в веб-проекте. Я думаю, вы обнаружите, что некоторые из ваших помощников должны использовать абстракции, которые вы определили в своем веб-проекте. И это часто заставляет вас помещать этих помощников в веб-проект, потому что вряд ли желательно иметь какой-то другой проект, который имеет ссылку на веб-проект. Я не считаю это так же, как с помощью App_Code. Это файлы, скомпилированные во время компиляции внутри вашей среды разработки, без специальной «магии», которая применяется к App_Code.

+0

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

+1

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

3

Да, но по причинам, которые являются общими для других узлов, а

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

Но все, что выше, сборка, когда готовы, должна быть «хорошо проделанной работой», другие мудрым, то лучше держать вспомогательные классы где они принадлежат.

+0

Я более или менее говорю о тех помощниках, которые относятся только к определенному проекту. Я по-прежнему считаю, что физическое разделение их просто облегчает поиск вещей (способность к открытию) и гораздо более профессиональный способ поддерживать и уменьшать беспорядок в вашем веб-приложении. – PositiveGuy

+0

Не все помощники, которые вы создаете, будут повторно использоваться в любом проекте mvc. – PositiveGuy

1

Да, потому что они являются частью бизнес-уровня. Две большие выигрыши:

  • переиспользуемости
  • Тестируемость

Имейте в виду, что ваши функции полезности и вспомогательные классы, вероятно, будут некоторые из наиболее интенсивно используемых компонентов всей вашей системы. Без полного тестирования BICEP вы запускаете действительно неприемлемый риск.

0

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

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