Должно быть определенно Infrastructure
модуль. Аргумент Маркуса абсолютно верен - вам не следует создавать отдельную сборку для каждого общего набора интерфейсов. Гораздо лучше иметь модуль Infrastructure
с большим количеством интерфейсов вместо множества модулей с несколькими интерфейсами в каждом. Представьте, что однажды вы обнаружите, что 2 из вашего «набора интерфейсов» должны использовать какой-то общий интерфейс! Что вы будете делать? Добавить еще одну сборку для этих "супер-общих" интерфейсов? Или объединить эти модули в один? Это неправильно, я думаю.
Итак - определенно Infrastructure
модуль!
PS. Представьте, что в .NET Framework есть библиотеки 1000-х - одна для коллекций, другая для математических функций и т. Д. *
UPDATE:
На самом деле, я использую модуль Infrastructure
в основном для интерфейсов и базовых DTO. Весь общий код, который я перемещаю в другую сборку (например, YourApplication.UIControls
, YourApplication.DAL
и т. Д.). У меня недостаточно причин, чтобы делать именно так, но это мой способ понять рекомендации Prism. Просто ИМХО.
ОБНОВЛЕНИЕ 2:
Если вы хотите поделиться своим сервисом настолько широко - я думаю, что имеет смысл иметь такую структуру, как:
YourApplication.Infrastructure
- «очень общие» интерфейсы (например, IPaymentService
)
YourApplication.Modules.PaymentModule
- «очень общая» реализация вашего PaymentService
YourApplication.WPF.Infrastucture
- инфраструктура вашего приложения WPF (в дополнение к YourApplication.Infrastructure
YourApplication.WPF.Modules.PaymentUI
- некоторый пользовательский интерфейс WPF для вашего YourApplication.Modules.PaymentModule
YourApplication.WebSite.Modules.PaymentUI
- интерфейс для веб-сайта
И так далее. Итак, ваши модули почти всегда будут иметь ссылки на YourApplication.Infrastructure
и YourApplication.TYPEOFAPP.Infrastructure
, где TYPEOFAPP
может быть WPF, WebSite, WinService и т. Д. Или вы можете назвать его как YourApplication.Modules.PaymentUI.WPF
. .