Если повторное использование кода представляет собой большую проблему (что и должно быть), я бы посмотрел требования к времени жизни вашего проекта.Вам нужен этот код, чтобы выжить несколько лет, 5 лет, 10 лет?Больше?Очевидно, что большинство крупных проектов хотят, чтобы их код выживал как можно дольше с минимальным техническим обслуживанием (или переписыванием).
Причина, по которой я это поднимаю, состоит в том, что если вы пишете свои модули кода с использованием Prism или ASP.NETзатем вы привязываете свой (потенциально) повторно используемый код к этой конкретной технологии, которая может использоваться или не использоваться в течение 5 лет.Это связывает ваш долгосрочный код с относительно краткосрочной технологией.Что произойдет через несколько лет, когда выйдет «следующая важная вещь», и вы захотите перенести в нее свой проект?Если вы подключены к Prism или к текущему ASP.NET, вам может показаться финансово сложным / невозможным переключение технологий.
Вам лучше абстрагировать логику приложения и перейти на технологию верхнего уровня.-агностическая структура, которая может быть связана с Prism и / или ASP.NET.Эта идея развязки является одной из главных причин того, что контейнеры IoC / DI (такие как Unity) стали так популярны в последнее время.Это также значительно упрощает модульное тестирование.
По сути, используя некоторую прикладную инфраструктуру (например, N-уровень ), вы инкапсулируете свою бизнес-логику и доступ к данным, абстрагируяПользовательский интерфейс таким образом, что его можно использовать повторно. Model-View-Presenter также демонстрирует абстрагирование вашего пользовательского интерфейса для максимального повторного использования и модульного тестирования.
N-уровневая инфраструктура приложений также сияет, когда вы смотрите на распределенные вычисления - что происходит, когда выхотите запустить приложение Prism на компьютере клиента, но хотите разместить данные своего приложения (например, базу данных SQL Server) на сервере?Если компьютер вашего клиента находится в вашей сети, это нормально - вы можете передать ему строку подключения к серверу, без проблем.Но если вы планируете получить доступ к своим данным через Интернет, то вам необходимо абстрагировать уровень данных вашего приложения и предоставить методы (безопасного) извлечения данных через Интернет.