Структура каталогов типового проекта - QualitySolution/QSProjects GitHub Wiki

Большая часть проектов построена примерно с одинаковой структурой каталогов. Эта статья описывает назначение типовых классов и их расположение. Так как большинство проектов переходят на архитектурный шаблон MVVM, проекты находящиеся в стадии перехода имеют часть устаревших каталогов.

Во многих каталогах внутри основных каталогов с компонентами системы, ниже уровнем находится структура, она соответствует бизнес области применения класса.

Современные компоненты

  • Domain - Доменная модель приложения. Здесь хранятся объекты, данные, загружаемые из БД. Также во многих классах этой категории внутри содержатся методы бизнес логики, выполняющие общий для нескольких диалогов код. Например, добавление новой строки в документ, или расчета какого-то значения. В концепции MVVM эти классы обычно называются моделью.
  • HibernateMapping - Маппинг(то есть соотношение) полей классов доменной модели к колонкам базы данных. Классы описания NHibernate, описывающие как ORM должна заполнять классы доменной модели данными из БД.
  • Icons - папка со встроенными ресурсами, используемые в проекте иконок и картинок. (Не забывайте добавлять галочку, указывающую на необходимость прикрепить файл как встроенный ресурс.)
  • Journal.ViewModels - ViewModel-и различных журналов приложения.
  • Journal.Filter.ViewModels - ViewModel-и для фильтров журналов.
  • Journal.Filter.Views - View для фильтров журналов.
  • Reports - Каталог, который содержит RDL файлы различных печатных форм приложения. Эти файлы впоследствии копируются в однодоменную папку с установленным приложением. (Не забывайте на каждый файл устанавливать флаг "Копировать в выходной каталог".)
  • Repository - Классы репозиториев, позволяющие запросить какие-либо данные из базы, обычно все запросы к базе выносятся в отдельные классы репозиториев, чтобы одни и те же запросы можно было использовать из разных мест приложения.
  • Tools - обычно различные вспомогательные классы, не попадающие не в одну из категорий.
  • Updates или SQLScripts - Здесь находятся SQL скрипты для обновления и создания базы данных. (Не забывайте добавлять галочку, указывающую на необходимость прикрепить файл как встроенный ресурс.)
  • ViewModels - ViewModel-и диалогов приложения.
  • Views - View диалогов приложения.

Устаревшие компоненты

  • Dialogs - Старые диалоги приложения, построенные на TDI библиотеке.
  • JournalFilters - Старые фильтры журналов.
  • JournalViewers - Старые диалоги кастомизированных журналов.
  • ReportsDlg - Старые виджеты параметров отчетов.
  • Representations - Классы старых моделей журналов.