Рассмотрим обычное приложение для заказов клиентов, основанное на шаблоне MVC с использованием WinForms.
Часть представления слишком сильно выросла (более 4000 файлов), и ее необходимо разбить на более мелкие.
Для этого примера мы собираемся использовать 3 проекта для части просмотра:
- Main - имеет зависимости от двух других проектов. Создает формы со списками.
- Клиенты - имеет 2 формы - список клиентов и данные клиентов.
- Заказы - имеет 2 формы - список заказов и детали заказа.
В форме сведений о клиенте также есть список заказов для этого клиента. Список получен от OrdersController, поэтому нет проблем с его получением. Когда пользователь выбирает заказ, список получает его гид и передает его в качестве ссылки на форму «Детали заказа».
Это будет означать, что нам нужно иметь ссылку на проект заказов в проекте клиентов. (1)
Но также в форме сведений о заказе есть ссылка на клиента, который сделал этот заказ. При нажатии откроется форма «Сведения о клиенте».
Это будет означать, что нам нужно иметь ссылку на проект «Клиенты» в проекте «Заказы». (2)
Из (1) и (2) мы будем иметь циклические зависимости между проектами Заказы и Заказчики.
Как этого избежать? Какая-то архитектура плагинов? Проект уже разработан, и наилучшее решение будет включать как можно меньшее изменение кода.