Структура проекта - niles-developers-team/Niles.PrintWeb GitHub Wiki

Проект Niles.Printweb состоит из Web UI приложения, web api, утилиты для управления базой данных и нескольких библиотек.

printweb

printweb - это standalone single page application которое будут использовать непосредственно наши пользователи и мы сами, чтобы следить за тем, как наш проект живет. Приложение разрабатывается с использованием Angular и Angular Material.

В этом приложении клиент может выбрать печатню и система проложит маршрут к ней, так же пользователь может оставить заказ в электронной очереди и придти в печатню уже за готовым заказом.


Niles.Printweb.Api

Niles.Printweb.Api - это web-api, которое будет связывать пользователей, которые будут использовать наши продукты. Web Api разрабатывается с помощью .net core 3.0 и asp.net core 3.0.


Niles.Printweb.Api.Services

Niles.Printweb.Api.Services - это библиотека с набором реализаций сервисов проекта, которые позволяют вынести основную логику обработки данных в отдельный слой для прозрачности решения и упрощения отладки.


Niles.Printweb.Api.Tests

Niles.Printweb.Api.Tests - это набор авто тестов для упрощения поиска ошибок и тестирования всего web-api.


Niles.Printweb.DataAccessObjects

Niles.Printweb.DataAccessObjects - это библиотека объектов доступа к данным (слой DAL), так же их называют DAO (Data access objects). Доступ к базам данных разрабатывается с помощью пакета Dapper.

Объекты доступа к данным позволяют быстро переключаться между источниками данных, например между разными субд. При создании dao применяются 2 правила:

  1. Каждый DAO создается только для конкретной модели;
  2. Сервис может использовать только один DAO, если необходим доступ к другим моделям - необходимо использовать сервисы, которые работают с необходимыми моделями. Таким образом устраняется проблема с огромным количеством ссылок, которые только путают разработчик и увеличивается прозрачность кода. Можно точно отследить, где возникла ошибка.

Niles.Printweb.Models

Niles.Printweb.Models - это библиотека моделей сущностей, которые использует система.

На данный момент модели бывают 2 типов:

  • Непосредственно модель сущности;
  • Options-модели - модели для вспомогательных методов, например опции получения объектов (GetOptions) или опции валидации (ValidateOptions)

Niles.Printweb.Models.Settings

Niles.Printweb.Models.Settings - это библиотека настроке приложения, таких как:

  • Настройки подключения к smtp серверу, для e-mail рассылки;
  • Настройки подключения к базе данных;
  • Настройки логгирования и прочие системные настройки;

Niles.Printweb.Services

Niles.Printweb.Services - это набор интерфейсов, позволяющий жестко ограничить сервисы по всему проекту, чтобы минимизировать расхождения в моделях и наименованиях.


Niles.Printweb.Shared

Niles.Printweb.Shared - общая для все проектов библиотека расширений или функций, которые могут применяться где угодно в проекте.


Niles.Printweb.Utilities

Niles.Printweb.Utilities - это утилита управления базой данных, которая позволяет быстро создать/удалить базу данных или же накатить миграции или обновить строку подключения. Утилита является консольным приложением, парсинг данных, которые пользователь ввел в командной строке выполняется с помощью пакета CommandLineParser. Миграции выполняются с помощью пакета FluentMigrator