На основе netcore3.x рекомендуется разрабатывать в IDE Visual Studio 2019
Корпоративная система управления приложениями, ориентированная на SaaS-сервисы корпоративных приложений, является базовой платформой разработки для облачных корпоративных приложений. Система разработана для мультитенантной архитектуры и использует полностью раздельную технологию для фронтенда и бэкенда.
Система абстрагирует общую часть разработки корпоративных прикладных программ, позволяя разработчикам сосредоточиться на бизнес-разработке. Реализованы базовые функции управления данными, такие как управление правами, кэширование, авторизация, загрузка и т. д.
UI проект можно найти:
Пример арендатора 1
Пример арендатора 2
Структура каталогов решения выглядит следующим образом:
TenantSite.Server
├── 1-Presentation
│ ├── AlonsoAdmin.HttpApi // Проект API для TenantSite.UI
│ └── AlonsoAdmin.HttpApi.Init // Проект API для AlonsoAdmin.Developer.Tools
├── 2-Application
│ ├── AlonsoAdmin.Services // Уровень сервиса
├── 3-Domain
│ └── AlonsoAdmin.Domain // Доменный уровень, используемый для написания логики, связанной с доменом (например, обработка транзакций и т.д.)
└── 4-Infrastructure
├── AlonsoAdmin.Common // Библиотека общих инструментов, пользователей, конфигурации, правил для фронта и бэкэнда
├── AlonsoAdmin.Entities // Библиотека классов сущностей базы данных
├── AlonsoAdmin.MultiTenant // Библиотека многопользовательских классов
└── AlonsoAdmin.Repository // Библиотека классов репозитория данных
Рекомендуется использовать инструменты разработчика для настройки при первом использовании.
Конфигурация проекта HttpApi и описание:
{
// Параметры запуска, изменение требует перезапуска программы для вступления в силу
"Startup": {
// Кэширование
"Cache": {
"Type": 0, // 0: память 1: Redis
"Redis": {
"ConnectionString": "127.0.0.1:6379,password=,defaultDatabase=2"
}
},
// Логирование
"Log": {
"Operation": true // Переключатель журнала доступа API
},
"TenantRouteStrategy": 0 // Стратегия арендатора, 0: режим маршрута 1: режим хоста
},
// Системная конфигурация, поддержка горячего обновления, изменения вступают в силу немедленно, без необходимости перезапуска программы
"System": {
// Мониторинг CURD действий SQL-запросов, включение покажет выполнение SQL-запроса в окне журнала
"WatchCurd": true,
// Используется для алгоритма снежинки, ID центра обработки данных
"DataCenterId": 5,
// Используется для алгоритма снежинки, идентификатор рабочей станции
"WorkId": 20,
// Включение проверки подлинности API, если включено, API должен быть связан с ресурсами, иначе доступ к API будет запрещен
"EnableApiAccessControl": true,
// Параметр последнего пути аватара
"uploadAvatar": {
"uploadPath": "D:/upload/avatar", // Корневой путь загрузки
"requestPath": "/upload/avatar", // Относительный корневой путь
"maxSize": 1048576,
"contentType": [
"image/jpg",
"image/png",
"image/jpeg",
"image/gif"
]
}
},
// Конфигурация арендаторов, в настоящее время используется выборочная конфигурация, которая должна быть заменена конфигурацией из общей платформы управления
"Tenants": [
{
"Id": "1", // Уникальный идентификатор арендатора
"Code": "Tenant1",// Код арендатора (уникальный идентификатор), который будет использоваться в качестве субдомена арендатора в режиме хоста
"Name": "Арендатор 1", // Название арендатора
// Текущая конфигурация параметров базы данных арендатора, поддерживает несколько баз данных, разные приложения могут указывать на разные базы данных
"DbOptions": [
{
// Ключ приложения базы данных
"Key": "system",
// Тип базы данных MySql = 0, SqlServer = 1, PostgreSQL = 2, Oracle = 3, Sqlite = 4
// Дополнительная поддержка: https://github.com/dotnetcore/FreeSql/wiki/Getting Started
"DbType": "0",
"ConnectionStrings": [
{
// Строка подключения
"ConnectionString": "Server=localhost; Port=3306; Database=tenant1db; Uid=root; Pwd=000000; Charset=utf8mb4;",
// 0 основная база данных 1 для базы данных реплик
"UseType": 0
},
{
"ConnectionString": "Server=localhost; Port=3306; Database=Tenant1db; Uid=root; Pwd=000000; Charset=utf8mb4;",
"UseType": 1
}
]
},
// Поддержка нескольких баз данных, блог — это пример конфигурации второй библиотеки приложений, структура аналогична системе
{
"Key": "blog",
"DbType": "0",
"ConnectionStrings": [
{
"ConnectionString": "Server=localhost; Port=3306; Database=Tenant1db; Uid=root; Pwd=000000; Charset=utf8mb4;",
"UseType": 0
},
{
"ConnectionString": "Server=localhost; Port=3306; Database=Tenant1db; Uid=root; Pwd=000000; Charset=utf8mb4;",
"UseType": 1
}
]
}
],
// Текущие параметры JWT Token для текущего арендатора
"Items": {
"Audience": "https://www.xxxx.com/",
"ExpirationMinutes": "1000",
"Issuer": "https://www.xxxx.com/",
"Secret": "2qtiOLpT7mJQx239e2kgMheAH7B9lGQJnoxYRCb7KX3x1ogDEd55I7dJ1ziYptiTF"
}
},
// Копируйте конфигурацию арендатора 1 и используйте ее для конфигурации арендатора 2
]
}
Зависимость конструктора от IAuthUser может быть использована.
public class DemoService
{
private readonly IAuthUser _authUser;
public
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )