MVC против внедрения зависимостей - PullRequest
1 голос
/ 26 октября 2009

Может ли кто-нибудь суммировать или маркировать список типов вещей, которые идут в каждом слое, и какие слои есть в дизайне типов MVC, если вы учитываете инъекцию зависимости?

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

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

Однако, основываясь на чтении примеров Внедрение зависимостей в .net , создается впечатление, что бизнес-логика должна быть сердцем приложения с отдельным уровнем, который указывает на конкретную реализацию базы данных. Затем пользовательский интерфейс переходит на уровень представления, контроллер просто обеспечивает уровень абстракции / отображения для того, что пользователь может делать на уровне модели, бизнес-логика переходит на уровень модели, а база данных / linq-to-sql - на уровне базы данных. Где все может зависеть от уровня модели, но это не должно зависеть ни от чего.

Чтобы вы могли переместить сердце из типа X в:

  • Окна формы
  • Asp.net
  • Asp.net MVC
  • Silverlight
  • Что-нибудь еще

право? Будет ли подход с 4 слоями / проектом охватывать такие вещи? Я полагаю, будет 5, если вы добавите слой TDD.

Я не против читать книги, но у меня есть много чего почитать (3 дома, 1 на работе, 3 заказано, 1 для колледжа), которые уже достаточно толстые. Оба эти подхода имеют громких сторонников, но, похоже, конфликтуют в целом.

Ответы [ 2 ]

2 голосов
/ 26 октября 2009

Я думаю, вы пытаетесь понять слишком много за один раз. Например, «слой TDD» не имеет смысла. DI и MVC связаны только тангенциально. DI не определяет, в каком слое должна быть бизнес-логика.

Начните с простого. Работайте над одной концепцией за раз. Проверьте свои знания на одном языке, прежде чем применять его повсеместно. У вас есть несколько замечательных книг в вашем списке чтения; проработать некоторые из них. Искусство модульного тестирования даст вам базовое понимание TDD; он также охватывает прагматическое использование инъекций зависимостей, но не углубляется в это. Серия Extreme Programming будет охватывать TDD более подробно.

Я бы посоветовал ознакомиться с шаблонами проектирования (не начинайте с книги «Банды четырех» - может быть, Шаблоны проектирования в первую очередь ) и общими принципами проектирования ( Чистый код - это хорошее начало). Возможно, другие могут предложить ссылки для изучения многоуровневой архитектуры.

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

0 голосов
/ 26 октября 2009

Я думаю, что эта ссылка охватит большинство ваших вопросов: http://wiki.sharparchitecture.net/SettingUpNorthwind.ashx

Невозможно сравнить MVC с внедрением зависимостей.

Внедрение зависимостей часто используется в MVC, чтобы сделать контроллер и представление независимыми от того, как данные сохраняются.

...