У меня большое веб-приложение .NET. В системе есть проекты для разных целей (например, CMS, Forum, eCommerce), и я заметил (наивный) шаблон вызова в классе другого проекта. Например, модулю электронной коммерции нужна функциональность для создания файла «на лету» для продуктов, и я вызываю и ссылаюсь на метод в CMS, чтобы сделать это, потому что обработка файлов - это действительно работа для CMS.
Очевидно (и я знаю почему), это плохой дизайн и случай сильной связи.
Я знаю несколько способов справиться с высокой связью, например, реструктурировать проект (хотя я не думаю, что это надежное решение), но что еще я могу сделать, чтобы уменьшить высокую связь? Какие-нибудь простые советы? Также было бы полезно узнать, почему / как они уменьшают сцепление. Я использую .NET 3.5 и Sql Server 2005, поэтому такие вещи, как JMS (с которыми я постоянно сталкиваюсь при поиске советов по этой проблеме проектирования), неприменимы.
Спасибо
КСТАТИ
Одна из причин, по которой я спрашиваю это, состоит в том, что я прочитал предыдущие вопросы, подобные этому, но обычно, если вопрос, который был задан ранее, задают снова, можно получить разные советы, когда разные люди отвечают на сообщение.
Я знаю о внедрении зависимости / IOC, но меня интересуют небольшие вещи, которые можно сделать, чтобы уменьшить связь.
Как можно выбрать между использованием статического класса, класса, полученного из интерфейса, или подхода IOC при принятии решения как уменьшить связь? Кроме того, я мог бы разработать веб-сервис, который мог бы вызывать статический класс - смешивая подходы в моем решении.
Интересно, что в моем приложении я не хочу, чтобы оно было разобщенным. Поэтому у меня просто есть форум, система электронной коммерции и любой другой модуль, но все должно быть объединено в один сайт, поэтому каждый модуль (который представлен как отдельный проект в моем решении Visual Studio) должен знать о каждом другом модуле и работать с этим. Так, например, у меня может быть модуль, который обрабатывает профили пользователей (работа с членством ASP.NET, ролями и т. Д.), Но он будет работать с модулем форума, так как пользователь на форуме будет зарегистрированным пользователем на сайте (один войти в систему), и его или ее профиль будет поступать из модуля профиля пользователя. Это в отличие от отдельных профилей, как на других сайтах, с которыми я сталкивался).