Когда я смотрю на ASP.NET проекты MVC, я каждый раз вижу свободную двойную архитектуру.
Поскольку, что мне нужна слабая связь в веб-архитектуре (если я не делаю модульные тесты)?
Что такое преимущества и недостатки этого?
Что главная причина состоит в том, чтобы отделить слои/классы?
Что, если я не хочу изменять свой DAL, например? Я имею в виду, когда я изменю свой целый DAL?! Таким образом, я мог связать свой DAL с UI. Что плохо с этим?
Это даст вам масштабируемость. Например, если у вас есть уровень обслуживания, вы можете разделить его на несколько серверов. Также у вас будет меньше зависимостей, и модификации будут проще. Также будет проще поддержка кода.
Здесь вы можете увидеть интересную небольшую статью: SOA - Слабосвязанная ... Что?
Вкратце говорится:
Слабосвязанные системы предоставляют множество преимуществ, включая поддержку позднего или динамического связывания с другими компонентами, в то время как работает, и может опосредовать разницу в структуре компонентов, модели безопасности, протоколах и семантике, тем самым абстрагируя волатильность ...
Преимущества:
Недостатки:
Потому что содержимое на задней панели может быть полезно, даже если оно не взаимодействует с веб-интерфейсом HTTP на основе браузера. Итак, вы хотите иметь возможность отключить его от этого конкретного пользовательского интерфейса.
Свободное связывание позволяет вносить изменения в одной области приложения, не затрагивая другие. Теоретически он позволяет вам делать такие вещи, как изменение уровня доступа к данным, не перестраивая уровень бизнеса или пользовательского интерфейса.
Это определенно делает ваши приложения более гибкими, более приспособленными к изменениям и более простыми в обслуживании (поскольку вам не нужно беспокоиться о том, что изменение в одной области приложения нарушит работу другой).
Во-первых, вы должны написать модульные тесты;)
Допустим, вам нужно изменить базовую базу данных. Если ваш код доступа к данным тесно связан с вашей бизнес-логикой, это может потребовать огромных усилий. Слабосвязанный код не повлияет на вашу бизнес-логику.
Что, если вы решите написать несколько утилит командной строки, которые будут использовать ваши внутренние компоненты? Предоставление нескольких точек входа в вашу систему намного проще выполнить с помощью слабосвязанного кода.
Разделение труда, которое является человеческим эквивалентом разделения забот. Ваш гуру HTML должен иметь возможность работать независимо от вашего божества SQL.
Кардинальное изменение фронтэнда должно происходить без разрушения бэкэнда, и наоборот. Другими словами, вам нужно нанять только одного человека вместо двух.
Слабосвязанная архитектура поможет вам, когда ваше приложение нуждается в изменении или расширении. И любое нетривиальное приложение в конечном итоге должно измениться или развиваться.
Если вы проектируете со слабосвязанной архитектурой, изменение требований повлияет только на несколько частей приложения. При слишком тесной взаимосвязанной архитектуре многие части необходимо будет изменить, и будет сложно точно определить, какие части будут затронуты.
Одно из главных преимуществ TDD, на мой взгляд, заключается в том, что at помогает продвигать слабосвязанную архитектуру.