Структура проекта
SunuerManage
├─ appsettings.json # Файл конфигурации приложения, содержит строку подключения к БД, настройки приложения и т.д.
├─ bin # Каталог с скомпилированными бинарными файлами
│ ├─ Debug # Вывод компиляции в режиме отладки
│ └─ Release # Вывод компиляции в режиме релиза
├─ Code # Логика бизнес-уровня и слой доступа к данным
│ ├─ Admin # Логика, связанная с администраторами
│ │ ├─ AdminDal.cs # Слой доступа к данным (DAL) для администраторов
│ │ ├─ AdminModel.cs # Модель данных для администраторов
│ │ ├─ AdminPowerDal.cs # DAL для прав администратора
│ │ ├─ AdminPowerModel.cs # Модель данных для прав администратора
│ │ ├─ AdminRolesDal.cs # DAL для ролей администратора
│ │ └─ AdminRolesModel.cs # Модель данных для ролей администратора
│ ├─ Articles # Логика, связанная со статьями
│ │ ├─ ArticleCategoryDal.cs # DAL для категорий статей
│ │ ├─ ArticleCategoryModel.cs # Модель данных для категорий статей
│ │ ├─ ArticlesDal.cs # DAL для статей
│ │ └─ ArticlesModel.cs # Модель данных для статей
│ └─ ManageSet # Логика, связанная с настройками управления
│ └─ ManageSetModel.cs # Модель данных для настроек управления
├─ Controllers # Контроллеры (API), обрабатывают HTTP-запросы
│ ├─ Admin # Контроллеры, связанные с администраторами
│ │ ├─ AdminController.cs # Контроллер администраторов
│ │ ├─ AdminPowerController.cs # Контроллер прав администраторов
│ │ └─ AdminRolesController.cs # Контроллер ролей администраторов
│ ├─ Articless # Контроллеры, связанные со статьями
│ │ ├─ ArticleCategoryController.cs # Контроллер категорий статей
│ │ └─ ArticlesController.cs # Контроллер статей
│ ├─ Files # Контроллеры, связанные с файлами
│ │ ├─ CaptchaController.cs # Контроллер CAPTCHA
│ │ ├─ FilesController.cs # Контроллер загрузки файлов
│ │ └─ QRCodeController.cs # Контроллер генерации QR-кодов
│ └─ ManageSets # Контроллеры, связанные с настройками управления
│ └─ ManageSetController.cs # Контроллер настроек управления
├─ Data # Слой доступа к данным и контекст базы данных
│ ├─ ApplicationDbContext.cs # Контекст базы данных для взаимодействия с БД
│ └─ SunuerManage.sql # Файл скрипта базы данных (backup/restore)
├─ Pages # Страницы Razor для фронтенда
│ ├─ About.cshtml # Страница "О нас"
│ ├─ Cases.cshtml # Страница с примерами (кейсы)
│ ├─ Contact.cshtml # Страница "Связаться с нами"
│ ├─ Error.cshtml # Страница ошибок
│ ├─ Index.cshtml # Главная страница
│ ├─ News.cshtml # Страница новостей
│ ├─ newsview.cshtml # Страница подробностей новости
│ ├─ Manage # Страницы административной панели
│ │ ├─ Admins # Страницы для управления администраторами
│ │ │ ├─ AdminAdd.cshtml # Добавление администратора
│ │ │ ├─ AdminEdt.cshtml # Редактирование администратора
│ │ │ ├─ AdminList.cshtml # Список администраторов
│ │ │ ├─ AdminPassWord.cshtml # Изменение пароля администратора
│ │ │ ├─ AdminPowerAdd.cshtml # Добавление прав администратора
│ │ │ ├─ AdminPowerEdt.cshtml # Редактирование прав администратора
│ │ │ ├─ AdminPowerList.cshtml # Список прав администраторов
│ │ │ ├─ AdminRolesAdd.cshtml # Добавление ролей администратора
│ │ │ ├─ AdminRolesEdt.cshtml # Редактирование ролей администратора
│ │ │ ├─ AdminRolesList.cshtml # Список ролей администратора
│ │ │ ├─ Adminview.cshtml # Детальная страница администратора
│ │ ├─ admin_index.cshtml # Главная страница административной панели
│ │ ├─ Agreement.cshtml # Страница пользовательского соглашения
│ │ ├─ Articless # Страницы для управления статьями
│ │ │ ├─ ArticleCategoryAdd.cshtml # Добавление категории статей
│ │ │ ├─ ArticleCategoryEdt.cshtml # Редактирование категории статей
│ │ │ ├─ ArticleCategoryList.cshtml # Список категорий статей
│ │ │ ├─ ArticlesAdd.cshtml # Добавление статьи
│ │ │ ├─ ArticlesEdt.cshtml # Редактирование статьи
│ │ │ ├─ ArticlesList.cshtml # Список статей
│ │ ├─ consoles # Страницы консоли
│ │ │ ├─ console.cshtml # Страница консоли
│ │ ├─ Login.cshtml # Страница входа
│ │ ├─ LoginOut.cshtml # Страница выхода
│ │ └─ ManageSets # Страницы настроек управления
│ │ ├─ ManageSetEdt.cshtml # Редактирование настроек управления
│ ├─ Shared # Общие представления и макеты (layouts)
│ │ ├─ Menu.cshtml # Представление меню
│ │ ├─ _indexLayout.cshtml # Макет для главной страницы
│ │ ├─ _Layout.cshtml # Макет по умолчанию
│ │ ├─ _ManageIndexLayout.cshtml # Макет для административной панели
│ │ └─ _ValidationScriptsPartial.cshtml # Частичное представление для скриптов валидации
│ ├─ _ViewImports.cshtml # Файл импорта представлений, для пространств имён
│ └─ _ViewStart.cshtml # Файл запуска представлений, задаёт макет
├─ Tools # Вспомогательные классы
│ ├─ ApiResponse.cs # Класс ответа API — единый формат ответа
│ ├─ CBC.cs # Класс для шифрования/дешифрования
│ ├─ ConfigurationHelper.cs # Получение значений из appsettings.json
│ ├─ DataTableToList.cs # Преобразование DataTable в список
│ ├─ DBHelper.cs # Вспомогательный класс для работы с базой данных
│ ├─ JsEncryptHelper.cs # Вспомогательный класс для JS-шифрования
│ └─ Tools.cs # Общий вспомогательный класс
├─ wwwroot # Статические ресурсы
│ ├─ css # CSS-файлы
│ ├─ favicon.ico # Иконка сайта
│ ├─ images # Изображения
│ ├─ js # JavaScript-файлы
│ └─ Uploadfile # Папка для загружаемых файлов
├─ Program.cs # Точка входа в приложение
├─ Properties # Файлы свойств проекта
│ ├─ launchSettings.json # Файл настроек запуска
│ └─ PublishProfiles # Профили для публикации
│ ├─ FolderProfile.pubxml # Профиль для публикации в папку
│ └─ FolderProfile.pubxml.user # Пользовательский профиль для публикации в папку
├─ Sunuer Manage Disclaimer (Read Carefully).txt # Файл отказа от ответственности проекта├─ SunuerManage.csproj # Файл проекта, содержит настройки и зависимости
├─ SunuerManage.csproj.user # Пользовательские настройки проекта
├─ SunuerManage.sln # Файл решения, описывает структуру проекта и конфигурацию
Файл конфигурации launchSettings.json
{ "$schema": "http://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:32430", //http://localhost:32430,Указывает, что приложение будет доступно по этому адресу. "sslPort": 0 } }, "profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://localhost:5021", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" //Development: Среда разработки. Staging: Среда предпросмотра (предрелизная). Production: Рабочая (продуктивная) среда. } }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
Файл конфигурации appsettings.json
"ConnectionStrings": {
"DefaultConnection": "Server=nhdSQLEXPRESS;Database=SunuerManage;User Id=sa;Password=123456;MultipleActiveResultSets=true;TrustServerCertificate=True;Max Pool Size=100;Min Pool Size=5;Pooling=true;"
},
Server=nhd/SQLEXPRESS: Указывает сервер и имя экземпляра базы данных, к которому нужно подключиться.
Database=SunuerManage: Указывает основную базу данных, с которой будет установлено соединение.
User Id=sa; Password=123456: Учетные данные (логин и пароль) для подключения к SQL Server.
MultipleActiveResultSets=true: Позволяет одновременно выполнять несколько операций чтения данных в рамках одного сеанса (подключения) к базе данных. Например, пока один запрос читает данные, можно параллельно запустить другой запрос. В частности, при использовании Entity Framework, если нужно в одной и той же сессии параллельно читать данные и выполнять другие операции, необходимо установить этот параметр в true.
TrustServerCertificate=True: При использовании TLS/SSL для шифрованного подключения к SQL Server определяет, доверять ли сертификату сервера. При значении True, даже если сертификат не подписан доверенным удостоверяющим центром или есть другие проблемы с проверкой, соединение все равно устанавливается. Предупреждение о безопасности: в продакшене, если используется самоподписанный сертификат или недоверенный сертификат, данная опция позволяет соединению состояться, но сопряжена с риском. Настраивайте ее с учетом реальных условий.
Max Pool Size=100; Min Pool Size=5; Pooling=true: Управляет поведением пула подключений к базе данных (Connection Pool).
Pooling=true: Включает пул подключений, что повышает производительность при частом доступе к базе данных, уменьшая издержки на открытие/закрытие соединений.
Max Pool Size=100: Максимальное количество неиспользуемых подключений, которые могут храниться в пуле. Если это число превышено, новые запросы соединения будут ждать освобождения подключения либо выдадут исключение, в зависимости от конфигурации.
Min Pool Size=5: Минимальное количество неиспользуемых подключений, которые всегда будут поддерживаться в пуле. При первом подключении к базе данных пул предварительно создаёт 5 соединений, чтобы в дальнейшем ускорить ответ на запросы.