SoC для начала
разбейте ваше приложение на несколько сборок, использующих IoC (интерфейсы + реализации):
- сборка модели приложения - все остальные сборки будут ссылаться на эту, потому что этиклассы будут использоваться для межсетевого взаимодействия - в основном это будут просто презентационные сборки POCO
- - ссылаются на модель приложения и бизнес-сервисы - это либо WPF, либо Silverlight, в любом случае используйте MVVM, чтобы упростить вашу жизнь при тестировании
- сборка бизнес-служб - ссылается на модель приложения и сборку репозиториев данных
- хранилища данных - они определяют репозитории, которые фактически получают данные из хранилищ
Тогда я бы создал тридополнительные:
- поставщики файловых данных
- поставщики баз данных
- поставщики кубов
хранилища данных будут ссылаться на все три и использовать их дляпредоставить необходимые данные.
Если конфигурация становится очень сложной с большим количеством функцийзатем вы должны поместить его в отдельную сборку и сослаться на него по сборке бизнес-сервисов.
Какую библиотеку MVVM использовать
Поскольку вы упомянули время, я полагаю, вам будет трудно пойматьваш срок.При использовании MVVM (который я предложил использовать) я также предлагаю вам не использовать полноценную PRISM (также известную как Руководство по составным приложениям от P & P), а использовать MVVM Light Toolkit .Это займет у вас меньше времени, чтобы попасть на подножку.
Генерация кода
В местах, где это целесообразно, я предлагаю вам использовать T4 в полной мере.Я использую его для импорта вызовов хранимых процедур, чтобы избежать использования магических строк при вызове хранимых процедур (и с использованием их параметров).Проверьте мою запись в блоге об этом.
Технология / библиотека DAL
Не пишите свой собственный код доступа к данным, используя такие вещи, как SqlConnection
/ SqlConnection
функциональность.Сегодня существует множество библиотек / технологий слоя доступа к данным, которые вы можете использовать, а не изобретать велосипед.Если вы знаете nHibernate, то используйте это.Если вы знаете EF, то используйте это.Если вы знаете что-нибудь еще, используйте это.Все, что предоставит / сгенерирует для вас как можно больше кода, уже протестировано и отлажено.
Итак, все сводится к:
DRY + YAGNI
aka Не повторяйся и Тебе это не понадобится = не перегружай свой код.
Проворные разработчики должны быть ленивыми
Они должны развиваться столько, сколько нужно, и не больше!TDD неявно обеспечивает этот процесс посредством шагов красного => green => рефакторинга.