From fbefd84a679a8fff5882ff5810bb278abc1bbd3a Mon Sep 17 00:00:00 2001 From: kingtuler Date: Wed, 25 Feb 2026 00:59:48 +0400 Subject: [PATCH 1/7] =?UTF-8?q?=D0=B1=D0=B0=D0=B7=D0=BE=D0=B2=D0=BE=D0=B5?= =?UTF-8?q?=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client.Wasm/Components/StudentCard.razor | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Client.Wasm/Components/StudentCard.razor b/Client.Wasm/Components/StudentCard.razor index 661f1181..b49603bf 100644 --- a/Client.Wasm/Components/StudentCard.razor +++ b/Client.Wasm/Components/StudentCard.razor @@ -4,9 +4,9 @@ - Номер №X "Название лабораторной" - Вариант №Х "Название варианта" - Выполнена Фамилией Именем 65ХХ + Номер №1. «Кэширование» + Вариант №47" + Выполнена Морозовым Сергеем 6513 Ссылка на форк From b8e29533f86470bd7a429a888bc2d746b8f62bc8 Mon Sep 17 00:00:00 2001 From: kingtuler Date: Tue, 3 Mar 2026 13:08:43 +0400 Subject: [PATCH 2/7] =?UTF-8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=88=D1=82=D1=80=D0=B8=D1=85=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client.Wasm/Components/StudentCard.razor | 6 +- Client.Wasm/Properties/launchSettings.json | 6 +- Client.Wasm/wwwroot/appsettings.json | 2 +- CloudDevelopment.AppHost/AppHost.cs | 5 + .../CloudDevelopment.AppHost.csproj | 15 ++ .../Properties/launchSettings.json | 31 ++++ .../appsettings.Development.json | 8 + CloudDevelopment.AppHost/appsettings.json | 9 + .../CloudDevelopment.ServiceDefaults.csproj | 22 +++ .../Extensions.cs | 127 ++++++++++++++ CloudDevelopment.sln | 18 ++ README.md | 157 +++++------------- .../Controllers/WeatherForecastController.cs | 32 ++++ TransportApp.Api/Program.cs | 29 ++++ .../Properties/launchSettings.json | 41 +++++ TransportApp.Api/TransportApp.Api.csproj | 17 ++ TransportApp.Api/TransportApp.Api.http | 6 + TransportApp.Api/WeatherForecast.cs | 12 ++ TransportApp.Api/appsettings.Development.json | 8 + TransportApp.Api/appsettings.json | 9 + VehicleApp.Api/Models/Vehicle.cs | 57 +++++++ VehicleApp.Api/Program.cs | 26 +++ VehicleApp.Api/Properties/launchSettings.json | 38 +++++ VehicleApp.Api/Services/IVehicleService.cs | 16 ++ VehicleApp.Api/Services/VehicleGenerator.cs | 32 ++++ VehicleApp.Api/Services/VehicleService.cs | 61 +++++++ VehicleApp.Api/VehicleApp.Api.csproj | 18 ++ VehicleApp.Api/appsettings.Development.json | 8 + VehicleApp.Api/appsettings.json | 18 ++ VehicleApp/VehicleApp.AppHost/AppHost.cs | 14 ++ .../Properties/launchSettings.json | 29 ++++ .../VehicleApp.AppHost.csproj | 23 +++ .../appsettings.Development.json | 8 + .../VehicleApp.AppHost/appsettings.json | 9 + .../VehicleApp.ServiceDefaults/Extensions.cs | 127 ++++++++++++++ .../VehicleApp.ServiceDefaults.csproj | 22 +++ images/aspire.png | Bin 0 -> 56139 bytes images/client.png | Bin 0 -> 53379 bytes 38 files changed, 945 insertions(+), 121 deletions(-) create mode 100644 CloudDevelopment.AppHost/AppHost.cs create mode 100644 CloudDevelopment.AppHost/CloudDevelopment.AppHost.csproj create mode 100644 CloudDevelopment.AppHost/Properties/launchSettings.json create mode 100644 CloudDevelopment.AppHost/appsettings.Development.json create mode 100644 CloudDevelopment.AppHost/appsettings.json create mode 100644 CloudDevelopment.ServiceDefaults/CloudDevelopment.ServiceDefaults.csproj create mode 100644 CloudDevelopment.ServiceDefaults/Extensions.cs create mode 100644 TransportApp.Api/Controllers/WeatherForecastController.cs create mode 100644 TransportApp.Api/Program.cs create mode 100644 TransportApp.Api/Properties/launchSettings.json create mode 100644 TransportApp.Api/TransportApp.Api.csproj create mode 100644 TransportApp.Api/TransportApp.Api.http create mode 100644 TransportApp.Api/WeatherForecast.cs create mode 100644 TransportApp.Api/appsettings.Development.json create mode 100644 TransportApp.Api/appsettings.json create mode 100644 VehicleApp.Api/Models/Vehicle.cs create mode 100644 VehicleApp.Api/Program.cs create mode 100644 VehicleApp.Api/Properties/launchSettings.json create mode 100644 VehicleApp.Api/Services/IVehicleService.cs create mode 100644 VehicleApp.Api/Services/VehicleGenerator.cs create mode 100644 VehicleApp.Api/Services/VehicleService.cs create mode 100644 VehicleApp.Api/VehicleApp.Api.csproj create mode 100644 VehicleApp.Api/appsettings.Development.json create mode 100644 VehicleApp.Api/appsettings.json create mode 100644 VehicleApp/VehicleApp.AppHost/AppHost.cs create mode 100644 VehicleApp/VehicleApp.AppHost/Properties/launchSettings.json create mode 100644 VehicleApp/VehicleApp.AppHost/VehicleApp.AppHost.csproj create mode 100644 VehicleApp/VehicleApp.AppHost/appsettings.Development.json create mode 100644 VehicleApp/VehicleApp.AppHost/appsettings.json create mode 100644 VehicleApp/VehicleApp.ServiceDefaults/Extensions.cs create mode 100644 VehicleApp/VehicleApp.ServiceDefaults/VehicleApp.ServiceDefaults.csproj create mode 100644 images/aspire.png create mode 100644 images/client.png diff --git a/Client.Wasm/Components/StudentCard.razor b/Client.Wasm/Components/StudentCard.razor index b49603bf..022071e9 100644 --- a/Client.Wasm/Components/StudentCard.razor +++ b/Client.Wasm/Components/StudentCard.razor @@ -4,9 +4,9 @@ - Номер №1. «Кэширование» - Вариант №47" - Выполнена Морозовым Сергеем 6513 + Номер №1 "Кэширование" + Вариант №47 "Транспортное средство" + Выполнена Морозов Сергей Сергеевич 6513 Ссылка на форк diff --git a/Client.Wasm/Properties/launchSettings.json b/Client.Wasm/Properties/launchSettings.json index 0d824ea7..60120ec3 100644 --- a/Client.Wasm/Properties/launchSettings.json +++ b/Client.Wasm/Properties/launchSettings.json @@ -12,7 +12,7 @@ "http": { "commandName": "Project", "dotnetRunMessages": true, - "launchBrowser": true, + "launchBrowser": false, "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", "applicationUrl": "http://localhost:5127", "environmentVariables": { @@ -22,7 +22,7 @@ "https": { "commandName": "Project", "dotnetRunMessages": true, - "launchBrowser": true, + "launchBrowser": false, "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", "applicationUrl": "https://localhost:7282;http://localhost:5127", "environmentVariables": { @@ -31,7 +31,7 @@ }, "IIS Express": { "commandName": "IISExpress", - "launchBrowser": true, + "launchBrowser": false, "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" diff --git a/Client.Wasm/wwwroot/appsettings.json b/Client.Wasm/wwwroot/appsettings.json index d1fe7ab3..3de814bd 100644 --- a/Client.Wasm/wwwroot/appsettings.json +++ b/Client.Wasm/wwwroot/appsettings.json @@ -6,5 +6,5 @@ } }, "AllowedHosts": "*", - "BaseAddress": "" + "BaseAddress": "https://localhost:7069/vehicles" } diff --git a/CloudDevelopment.AppHost/AppHost.cs b/CloudDevelopment.AppHost/AppHost.cs new file mode 100644 index 00000000..e5c8089c --- /dev/null +++ b/CloudDevelopment.AppHost/AppHost.cs @@ -0,0 +1,5 @@ +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddProject("transportapp-api"); + +builder.Build().Run(); diff --git a/CloudDevelopment.AppHost/CloudDevelopment.AppHost.csproj b/CloudDevelopment.AppHost/CloudDevelopment.AppHost.csproj new file mode 100644 index 00000000..d44a2009 --- /dev/null +++ b/CloudDevelopment.AppHost/CloudDevelopment.AppHost.csproj @@ -0,0 +1,15 @@ + + + + Exe + net8.0 + enable + enable + 064f7aae-2d43-4c3f-856d-ddcddc898ca2 + + + + + + + diff --git a/CloudDevelopment.AppHost/Properties/launchSettings.json b/CloudDevelopment.AppHost/Properties/launchSettings.json new file mode 100644 index 00000000..e33e87ea --- /dev/null +++ b/CloudDevelopment.AppHost/Properties/launchSettings.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:17115;http://localhost:15240", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21024", + "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23070", + "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22014" + } + }, + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:15240", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19230", + "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18106", + "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20055" + } + } + } +} diff --git a/CloudDevelopment.AppHost/appsettings.Development.json b/CloudDevelopment.AppHost/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/CloudDevelopment.AppHost/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/CloudDevelopment.AppHost/appsettings.json b/CloudDevelopment.AppHost/appsettings.json new file mode 100644 index 00000000..31c092aa --- /dev/null +++ b/CloudDevelopment.AppHost/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "Aspire.Hosting.Dcp": "Warning" + } + } +} diff --git a/CloudDevelopment.ServiceDefaults/CloudDevelopment.ServiceDefaults.csproj b/CloudDevelopment.ServiceDefaults/CloudDevelopment.ServiceDefaults.csproj new file mode 100644 index 00000000..8ad67261 --- /dev/null +++ b/CloudDevelopment.ServiceDefaults/CloudDevelopment.ServiceDefaults.csproj @@ -0,0 +1,22 @@ + + + + net8.0 + enable + enable + true + + + + + + + + + + + + + + + diff --git a/CloudDevelopment.ServiceDefaults/Extensions.cs b/CloudDevelopment.ServiceDefaults/Extensions.cs new file mode 100644 index 00000000..b72c8753 --- /dev/null +++ b/CloudDevelopment.ServiceDefaults/Extensions.cs @@ -0,0 +1,127 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Diagnostics.HealthChecks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.ServiceDiscovery; +using OpenTelemetry; +using OpenTelemetry.Metrics; +using OpenTelemetry.Trace; + +namespace Microsoft.Extensions.Hosting; + +// Adds common Aspire services: service discovery, resilience, health checks, and OpenTelemetry. +// This project should be referenced by each service project in your solution. +// To learn more about using this project, see https://aka.ms/dotnet/aspire/service-defaults +public static class Extensions +{ + private const string HealthEndpointPath = "/health"; + private const string AlivenessEndpointPath = "/alive"; + + public static TBuilder AddServiceDefaults(this TBuilder builder) where TBuilder : IHostApplicationBuilder + { + builder.ConfigureOpenTelemetry(); + + builder.AddDefaultHealthChecks(); + + builder.Services.AddServiceDiscovery(); + + builder.Services.ConfigureHttpClientDefaults(http => + { + // Turn on resilience by default + http.AddStandardResilienceHandler(); + + // Turn on service discovery by default + http.AddServiceDiscovery(); + }); + + // Uncomment the following to restrict the allowed schemes for service discovery. + // builder.Services.Configure(options => + // { + // options.AllowedSchemes = ["https"]; + // }); + + return builder; + } + + public static TBuilder ConfigureOpenTelemetry(this TBuilder builder) where TBuilder : IHostApplicationBuilder + { + builder.Logging.AddOpenTelemetry(logging => + { + logging.IncludeFormattedMessage = true; + logging.IncludeScopes = true; + }); + + builder.Services.AddOpenTelemetry() + .WithMetrics(metrics => + { + metrics.AddAspNetCoreInstrumentation() + .AddHttpClientInstrumentation() + .AddRuntimeInstrumentation(); + }) + .WithTracing(tracing => + { + tracing.AddSource(builder.Environment.ApplicationName) + .AddAspNetCoreInstrumentation(tracing => + // Exclude health check requests from tracing + tracing.Filter = context => + !context.Request.Path.StartsWithSegments(HealthEndpointPath) + && !context.Request.Path.StartsWithSegments(AlivenessEndpointPath) + ) + // Uncomment the following line to enable gRPC instrumentation (requires the OpenTelemetry.Instrumentation.GrpcNetClient package) + //.AddGrpcClientInstrumentation() + .AddHttpClientInstrumentation(); + }); + + builder.AddOpenTelemetryExporters(); + + return builder; + } + + private static TBuilder AddOpenTelemetryExporters(this TBuilder builder) where TBuilder : IHostApplicationBuilder + { + var useOtlpExporter = !string.IsNullOrWhiteSpace(builder.Configuration["OTEL_EXPORTER_OTLP_ENDPOINT"]); + + if (useOtlpExporter) + { + builder.Services.AddOpenTelemetry().UseOtlpExporter(); + } + + // Uncomment the following lines to enable the Azure Monitor exporter (requires the Azure.Monitor.OpenTelemetry.AspNetCore package) + //if (!string.IsNullOrEmpty(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"])) + //{ + // builder.Services.AddOpenTelemetry() + // .UseAzureMonitor(); + //} + + return builder; + } + + public static TBuilder AddDefaultHealthChecks(this TBuilder builder) where TBuilder : IHostApplicationBuilder + { + builder.Services.AddHealthChecks() + // Add a default liveness check to ensure app is responsive + .AddCheck("self", () => HealthCheckResult.Healthy(), ["live"]); + + return builder; + } + + public static WebApplication MapDefaultEndpoints(this WebApplication app) + { + // Adding health checks endpoints to applications in non-development environments has security implications. + // See https://aka.ms/dotnet/aspire/healthchecks for details before enabling these endpoints in non-development environments. + if (app.Environment.IsDevelopment()) + { + // All health checks must pass for app to be considered ready to accept traffic after starting + app.MapHealthChecks(HealthEndpointPath); + + // Only health checks tagged with the "live" tag must pass for app to be considered alive + app.MapHealthChecks(AlivenessEndpointPath, new HealthCheckOptions + { + Predicate = r => r.Tags.Contains("live") + }); + } + + return app; + } +} diff --git a/CloudDevelopment.sln b/CloudDevelopment.sln index cb48241d..70f9f020 100644 --- a/CloudDevelopment.sln +++ b/CloudDevelopment.sln @@ -5,6 +5,12 @@ VisualStudioVersion = 17.14.36811.4 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Wasm", "Client.Wasm\Client.Wasm.csproj", "{AE7EEA74-2FE0-136F-D797-854FD87E022A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VehicleApp.AppHost", "VehicleApp\VehicleApp.AppHost\VehicleApp.AppHost.csproj", "{5A32E624-1368-47E1-AE8C-C5D666C99826}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VehicleApp.ServiceDefaults", "VehicleApp\VehicleApp.ServiceDefaults\VehicleApp.ServiceDefaults.csproj", "{97B1F7F0-C53D-2D4D-3803-B1150F873870}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VehicleApp.Api", "VehicleApp.Api\VehicleApp.Api.csproj", "{54C02CF3-616B-EC3E-6F35-EAF0ED92B6B0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +21,18 @@ Global {AE7EEA74-2FE0-136F-D797-854FD87E022A}.Debug|Any CPU.Build.0 = Debug|Any CPU {AE7EEA74-2FE0-136F-D797-854FD87E022A}.Release|Any CPU.ActiveCfg = Release|Any CPU {AE7EEA74-2FE0-136F-D797-854FD87E022A}.Release|Any CPU.Build.0 = Release|Any CPU + {5A32E624-1368-47E1-AE8C-C5D666C99826}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5A32E624-1368-47E1-AE8C-C5D666C99826}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A32E624-1368-47E1-AE8C-C5D666C99826}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5A32E624-1368-47E1-AE8C-C5D666C99826}.Release|Any CPU.Build.0 = Release|Any CPU + {97B1F7F0-C53D-2D4D-3803-B1150F873870}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {97B1F7F0-C53D-2D4D-3803-B1150F873870}.Debug|Any CPU.Build.0 = Debug|Any CPU + {97B1F7F0-C53D-2D4D-3803-B1150F873870}.Release|Any CPU.ActiveCfg = Release|Any CPU + {97B1F7F0-C53D-2D4D-3803-B1150F873870}.Release|Any CPU.Build.0 = Release|Any CPU + {54C02CF3-616B-EC3E-6F35-EAF0ED92B6B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {54C02CF3-616B-EC3E-6F35-EAF0ED92B6B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {54C02CF3-616B-EC3E-6F35-EAF0ED92B6B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {54C02CF3-616B-EC3E-6F35-EAF0ED92B6B0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/README.md b/README.md index dcaa5eb7..0d5463b8 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,57 @@ -# Современные технологии разработки программного обеспечения -[Таблица с успеваемостью](https://docs.google.com/spreadsheets/d/1an43o-iqlq4V_kDtkr_y7DC221hY9qdhGPrpII27sH8/edit?usp=sharing) +# Лабораторная работа №1 — «Кэширование» -## Задание -### Цель -Реализация проекта микросервисного бекенда. +## Вариант 47 — «Транспортное средство» -### Задачи -* Реализация межсервисной коммуникации, -* Изучение работы с брокерами сообщений, -* Изучение архитектурных паттернов, -* Изучение работы со средствами оркестрации на примере .NET Aspire, -* Повторение основ работы с системами контроля версий, -* Интеграционное тестирование. +## Описание -### Лабораторные работы -
-1. «Кэширование» - Реализация сервиса генерации контрактов, кэширование его ответов -
- -В рамках первой лабораторной работы необходимо: -* Реализовать сервис генерации контрактов на основе Bogus, -* Реализовать кеширование при помощи IDistributedCache и Redis, -* Реализовать структурное логирование сервиса генерации, -* Настроить оркестрацию Aspire. - -
-
-2. «Балансировка нагрузки» - Реализация апи гейтвея, настройка его работы -
- -В рамках второй лабораторной работы необходимо: -* Настроить оркестрацию на запуск нескольких реплик сервиса генерации, -* Реализовать апи гейтвей на основе Ocelot, -* Имплементировать алгоритм балансировки нагрузки согласно варианту. +Реализован микросервисный бэкенд для генерации данных о транспортных средствах с кэшированием в Redis и оркестрацией через .NET Aspire. -
-
-
-3. «Интеграционное тестирование» - Реализация файлового сервиса и объектного хранилища, интеграционное тестирование бекенда -
+## Что реализовано -В рамках третьей лабораторной работы необходимо: -* Добавить в оркестрацию объектное хранилище, -* Реализовать файловый сервис, сериализующий сгенерированные данные в файлы и сохраняющий их в объектном хранилище, -* Реализовать отправку генерируемых данных в файловый сервис посредством брокера, -* Реализовать интеграционные тесты, проверяющие корректность работы всех сервисов бекенда вместе. +- Сервис генерации данных о транспортных средствах на основе Bogus +- Кэширование ответов при помощи `IDistributedCache` и Redis +- Структурное логирование сервиса генерации +- Оркестрация всех компонентов через .NET Aspire +- Blazor WebAssembly клиент для отображения данных -
-
-
-4. (Опционально) «Переход на облачную инфраструктуру» - Перенос бекенда в Yandex Cloud -
- -В рамках четвертой лабораторной работы необходимо перенестиервисы на облако все ранее разработанные сервисы: -* Клиент - в хостинг через отдельный бакет Object Storage, -* Сервис генерации - в Cloud Function, -* Апи гейтвей - в Serverless Integration как API Gateway, -* Брокер сообщений - в Message Queue, -* Файловый сервис - в Cloud Function, -* Объектное хранилище - в отдельный бакет Object Storage, +## Стек технологий -
-
+- .NET 8 +- .NET Aspire 9.5 +- Bogus — генерация данных +- Redis — распределённое кэширование +- RedisInsight — визуализация данных в Redis +- Blazor WebAssembly — клиентское приложение +- OpenTelemetry — метрики, трейсинг, логирование -## Задание. Общая часть -**Обязательно**: -* Реализация серверной части на [.NET 8](https://learn.microsoft.com/ru-ru/dotnet/core/whats-new/dotnet-8/overview). -* Оркестрация проектов при помощи [.NET Aspire](https://learn.microsoft.com/ru-ru/dotnet/aspire/get-started/aspire-overview). -* Реализация сервиса генерации данных при помощи [Bogus](https://github.com/bchavez/Bogus). -* Реализация тестов с использованием [xUnit](https://xunit.net/?tabs=cs). -* Создание минимальной документации к проекту: страница на GitHub с информацией о задании, скриншоты приложения и прочая информация. +## Структура проекта -**Факультативно**: -* Перенос бекенда на облачную инфраструктуру Yandex Cloud +| Проект | Описание | +|---|---| +| `VehicleApp.Api` | API-сервис генерации транспортных средств | +| `VehicleApp.AppHost` | Aspire-оркестратор | +| `VehicleApp.ServiceDefaults` | Общие настройки сервисов (OpenTelemetry, health checks) | +| `Client.Wasm` | Blazor WebAssembly клиент | -Внимательно прочитайте [дискуссии](https://github.com/itsecd/cloud-development/discussions/1) о том, как работает автоматическое распределение на ревью. -Сразу корректно называйте свои pr, чтобы они попали на ревью нужному преподавателю. +## Характеристики транспортного средства -По итогу работы в семестре должна получиться следующая информационная система: -
-C4 диаграмма -Современные_технологии_разработки_ПО_drawio -
+| № | Название | Тип данных | Источник Bogus | +|---|---|---|---| +| 1 | Идентификатор в системе | `int` | Параметр запроса | +| 2 | VIN-номер | `string` | `Vehicle.Vin()` | +| 3 | Производитель | `string` | `Vehicle.Manufacturer()` | +| 4 | Модель | `string` | `Vehicle.Model()` | +| 5 | Год выпуска | `int` | `Random.Int(1980, текущий год)` | +| 6 | Тип корпуса | `string` | `Vehicle.Type()` | +| 7 | Тип топлива | `string` | `Vehicle.Fuel()` | +| 8 | Цвет корпуса | `string` | `Commerce.Color()` | +| 9 | Пробег (км) | `double` | `Random.Double(0, 300000)` | +| 10 | Дата последнего ТО | `DateOnly` | `Date.Between(год выпуска, сегодня)` | -## Варианты заданий -Номер варианта задания присваивается в начале семестра. Изменить его нельзя. Каждый вариант имеет уникальную комбинацию из предметной области, базы данных и технологии для общения сервиса генерации данных и сервера апи. +## Скриншоты -[Список вариантов](https://docs.google.com/document/d/1WGmLYwffTTaAj4TgFCk5bUyW3XKbFMiBm-DHZrfFWr4/edit?usp=sharing) -[Список предметных областей и алгоритмов балансировки](https://docs.google.com/document/d/1PLn2lKe4swIdJDZhwBYzxqFSu0AbY2MFY1SUPkIKOM4/edit?usp=sharing) - -## Схема сдачи - -На каждую из лабораторных работ необходимо сделать отдельный [Pull Request (PR)](https://docs.github.com/en/pull-requests). - -Общая схема: -1. Сделать форк данного репозитория -2. Выполнить задание -3. Сделать PR в данный репозиторий -4. Исправить замечания после code review -5. Получить approve - -## Критерии оценивания - -Конкурентный принцип. -Так как задания в первой лабораторной будут повторяться между студентами, то выделяются следующие показатели для оценки: -1. Скорость разработки -2. Качество разработки -3. Полнота выполнения задания - -Быстрее делаете PR - у вас преимущество. -Быстрее получаете Approve - у вас преимущество. -Выполните нечто немного выходящее за рамки проекта - у вас преимущество. -Не укладываетесь в дедлайн - получаете минимально возможный балл. - -### Шкала оценивания - -- **3 балла** за качество кода, из них: - - 2 балла - базовая оценка - - 1 балл (но не более) можно получить за выполнение любого из следующих пунктов: - - Реализация факультативного функционала - - Выполнение работы раньше других: первые 5 человек из каждой группы, которые сделали PR и получили approve, получают дополнительный балл - -## Вопросы и обратная связь по курсу - -Чтобы задать вопрос по лабораторной, воспользуйтесь [соответствующим разделом дискуссий](https://github.com/itsecd/cloud-development/discussions/categories/questions) или заведите [ишью](https://github.com/itsecd/cloud-development/issues/new). -Если у вас появились идеи/пожелания/прочие полезные мысли по преподаваемой дисциплине, их можно оставить [здесь](https://github.com/itsecd/cloud-development/discussions/categories/ideas). +### Aspire Dashboard +![Aspire Dashboard](images/aspire.png) +### Клиент +![Client](images/client.png) diff --git a/TransportApp.Api/Controllers/WeatherForecastController.cs b/TransportApp.Api/Controllers/WeatherForecastController.cs new file mode 100644 index 00000000..09b50aea --- /dev/null +++ b/TransportApp.Api/Controllers/WeatherForecastController.cs @@ -0,0 +1,32 @@ +using Microsoft.AspNetCore.Mvc; + +namespace TransportApp.Api.Controllers; + +[ApiController] +[Route("[controller]")] +public class WeatherForecastController : ControllerBase +{ + private static readonly string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + private readonly ILogger _logger; + + public WeatherForecastController(ILogger logger) + { + _logger = logger; + } + + [HttpGet(Name = "GetWeatherForecast")] + public IEnumerable Get() + { + return Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = Summaries[Random.Shared.Next(Summaries.Length)] + }) + .ToArray(); + } +} diff --git a/TransportApp.Api/Program.cs b/TransportApp.Api/Program.cs new file mode 100644 index 00000000..edda8a7f --- /dev/null +++ b/TransportApp.Api/Program.cs @@ -0,0 +1,29 @@ +var builder = WebApplication.CreateBuilder(args); + +builder.AddServiceDefaults(); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +app.MapDefaultEndpoints(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/TransportApp.Api/Properties/launchSettings.json b/TransportApp.Api/Properties/launchSettings.json new file mode 100644 index 00000000..bd0d0fd5 --- /dev/null +++ b/TransportApp.Api/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:7866", + "sslPort": 44334 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5167", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7246;http://localhost:5167", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/TransportApp.Api/TransportApp.Api.csproj b/TransportApp.Api/TransportApp.Api.csproj new file mode 100644 index 00000000..3fe26a38 --- /dev/null +++ b/TransportApp.Api/TransportApp.Api.csproj @@ -0,0 +1,17 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + diff --git a/TransportApp.Api/TransportApp.Api.http b/TransportApp.Api/TransportApp.Api.http new file mode 100644 index 00000000..be82d019 --- /dev/null +++ b/TransportApp.Api/TransportApp.Api.http @@ -0,0 +1,6 @@ +@TransportApp.Api_HostAddress = http://localhost:5167 + +GET {{TransportApp.Api_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/TransportApp.Api/WeatherForecast.cs b/TransportApp.Api/WeatherForecast.cs new file mode 100644 index 00000000..c33fc50b --- /dev/null +++ b/TransportApp.Api/WeatherForecast.cs @@ -0,0 +1,12 @@ +namespace TransportApp.Api; + +public class WeatherForecast +{ + public DateOnly Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string? Summary { get; set; } +} diff --git a/TransportApp.Api/appsettings.Development.json b/TransportApp.Api/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/TransportApp.Api/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/TransportApp.Api/appsettings.json b/TransportApp.Api/appsettings.json new file mode 100644 index 00000000..10f68b8c --- /dev/null +++ b/TransportApp.Api/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/VehicleApp.Api/Models/Vehicle.cs b/VehicleApp.Api/Models/Vehicle.cs new file mode 100644 index 00000000..c668e7bd --- /dev/null +++ b/VehicleApp.Api/Models/Vehicle.cs @@ -0,0 +1,57 @@ +namespace VehicleApp.Api.Models; + +/// +/// Модель транспортного средства +/// +public class Vehicle +{ + /// + /// Идентификатор в системе + /// + public int Id { get; set; } + + /// + /// VIN-номер + /// + public string Vin { get; set; } = string.Empty; + + /// + /// Производитель + /// + public string Manufacturer { get; set; } = string.Empty; + + /// + /// Модель + /// + public string Model { get; set; } = string.Empty; + + /// + /// Год выпуска + /// + public int Year { get; set; } + + /// + /// Тип корпуса + /// + public string BodyType { get; set; } = string.Empty; + + /// + /// Тип топлива + /// + public string FuelType { get; set; } = string.Empty; + + /// + /// Цвет корпуса + /// + public string BodyColor { get; set; } = string.Empty; + + /// + /// Пробег (км) + /// + public double Mileage { get; set; } + + /// + /// Дата последнего техобслуживания + /// + public DateOnly LastServiceDate { get; set; } +} diff --git a/VehicleApp.Api/Program.cs b/VehicleApp.Api/Program.cs new file mode 100644 index 00000000..fe7825fb --- /dev/null +++ b/VehicleApp.Api/Program.cs @@ -0,0 +1,26 @@ +using VehicleApp.Api.Services; + +var builder = WebApplication.CreateBuilder(args); + +builder.AddServiceDefaults(); +builder.AddRedisDistributedCache("redis"); + +builder.Services.AddScoped(); +builder.Services.AddCors(options => + options.AddPolicy("AllowClient", policy => + policy.WithOrigins(builder.Configuration.GetSection("CorsSettings:AllowedOrigins").Get() ?? []) + .WithMethods("GET") + .AllowAnyHeader())); + +var app = builder.Build(); + +app.UseCors("AllowClient"); +app.MapDefaultEndpoints(); + +app.MapGet("/vehicles", async (int id, IVehicleService vehicleService) => +{ + var vehicle = await vehicleService.GetVehicleAsync(id); + return Results.Ok(vehicle); +}); + +app.Run(); diff --git a/VehicleApp.Api/Properties/launchSettings.json b/VehicleApp.Api/Properties/launchSettings.json new file mode 100644 index 00000000..398f7058 --- /dev/null +++ b/VehicleApp.Api/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:38320", + "sslPort": 44373 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5204", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7069;http://localhost:5204", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/VehicleApp.Api/Services/IVehicleService.cs b/VehicleApp.Api/Services/IVehicleService.cs new file mode 100644 index 00000000..b2d588ed --- /dev/null +++ b/VehicleApp.Api/Services/IVehicleService.cs @@ -0,0 +1,16 @@ +using VehicleApp.Api.Models; + +namespace VehicleApp.Api.Services; + +/// +/// Интерфейс сервиса для получения информации о транспортном средстве +/// +public interface IVehicleService +{ + /// + /// Получает транспортное средство по идентификатору из кэша или с помощью генератора + /// + /// Идентификатор ТС + /// Транспортное средство + public Task GetVehicleAsync(int id); +} diff --git a/VehicleApp.Api/Services/VehicleGenerator.cs b/VehicleApp.Api/Services/VehicleGenerator.cs new file mode 100644 index 00000000..3365dbd4 --- /dev/null +++ b/VehicleApp.Api/Services/VehicleGenerator.cs @@ -0,0 +1,32 @@ +using Bogus; +using VehicleApp.Api.Models; + +namespace VehicleApp.Api.Services; +/// +/// Генератор транспортных средств со случайными свойствами +/// +public static class VehicleGenerator +{ + private static readonly Faker _faker = new Faker() + .RuleFor(v => v.Vin, f => f.Vehicle.Vin()) + .RuleFor(v => v.Manufacturer, f => f.Vehicle.Manufacturer()) + .RuleFor(v => v.Model, f => f.Vehicle.Model()) + .RuleFor(v => v.Year, f => f.Random.Int(1980, DateTime.Now.Year)) + .RuleFor(v => v.BodyType, f => f.Vehicle.Type()) + .RuleFor(v => v.FuelType, f => f.Vehicle.Fuel()) + .RuleFor(v => v.BodyColor, f => f.Commerce.Color()) + .RuleFor(v => v.Mileage, f => Math.Round(f.Random.Double(0, 300000), 2)) + .RuleFor(v => v.LastServiceDate, (f, v) => DateOnly.FromDateTime(f.Date.Between(new DateTime(v.Year, 1, 1), DateTime.Now))); + + /// + /// Метод генерации ТС + /// + /// Идентификатор ТС + /// Транспортное средство + public static Vehicle GenerateVehicle(int id) + { + var vehicle = _faker.Generate(); + vehicle.Id = id; + return vehicle; + } +} diff --git a/VehicleApp.Api/Services/VehicleService.cs b/VehicleApp.Api/Services/VehicleService.cs new file mode 100644 index 00000000..9bf6d313 --- /dev/null +++ b/VehicleApp.Api/Services/VehicleService.cs @@ -0,0 +1,61 @@ +using System.Text.Json; +using Microsoft.Extensions.Caching.Distributed; +using VehicleApp.Api.Models; + +namespace VehicleApp.Api.Services; + +/// +/// Сервис для получения информации о транспортном средстве +/// +public class VehicleService(IDistributedCache cache, IConfiguration configuration, + ILogger logger) : IVehicleService +{ + /// + public async Task GetVehicleAsync(int id) + { + var cacheKey = $"vehicle-{id}"; + logger.LogInformation("Requesting vehicle {VehicleId} from cache", id); + var cachedData = await cache.GetStringAsync(cacheKey); + + if (!string.IsNullOrEmpty(cachedData)) + { + try + { + var cachedVehicle = JsonSerializer.Deserialize(cachedData); + + if (cachedVehicle != null) + { + logger.LogInformation("Vehicle {VehicleId} retrieved from cache", id); + return cachedVehicle; + } + logger.LogWarning("Vehicle {VehicleId} found in cache but deserialization returned null", id); + } + catch (Exception ex) + { + logger.LogError(ex, "Failed to deserialize vehicle {VehicleId} from cache", id); + } + } + + logger.LogInformation("Vehicle {VehicleId} not found in cache. Generating", id); + + var vehicle = VehicleGenerator.GenerateVehicle(id); + + try + { + var expirationMinutes = configuration.GetValue("CacheSettings:ExpirationMinutes", 15); + + var cacheOptions = new DistributedCacheEntryOptions + { + AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(expirationMinutes) + }; + + await cache.SetStringAsync(cacheKey, JsonSerializer.Serialize(vehicle), cacheOptions); + logger.LogInformation("Vehicle {VehicleId} generated and cached", id); + } + catch (Exception ex) + { + logger.LogWarning(ex, "Failed to cache vehicle {VehicleId}. Continuing without cache.", id); + } + return vehicle; + } +} diff --git a/VehicleApp.Api/VehicleApp.Api.csproj b/VehicleApp.Api/VehicleApp.Api.csproj new file mode 100644 index 00000000..cbf27ed2 --- /dev/null +++ b/VehicleApp.Api/VehicleApp.Api.csproj @@ -0,0 +1,18 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + diff --git a/VehicleApp.Api/appsettings.Development.json b/VehicleApp.Api/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/VehicleApp.Api/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/VehicleApp.Api/appsettings.json b/VehicleApp.Api/appsettings.json new file mode 100644 index 00000000..584a50c8 --- /dev/null +++ b/VehicleApp.Api/appsettings.json @@ -0,0 +1,18 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "CorsSettings": { + "AllowedOrigins": [ + "http://localhost:5127", + "https://localhost:7282" + ] + }, + "CacheSettings": { + "ExpirationMinutes": 15 + } +} diff --git a/VehicleApp/VehicleApp.AppHost/AppHost.cs b/VehicleApp/VehicleApp.AppHost/AppHost.cs new file mode 100644 index 00000000..e9c68d71 --- /dev/null +++ b/VehicleApp/VehicleApp.AppHost/AppHost.cs @@ -0,0 +1,14 @@ +var builder = DistributedApplication.CreateBuilder(args); + +var redis = builder.AddRedis("redis") + .WithRedisInsight(); + +var api = builder.AddProject("vehicleapp-api") + .WithReference(redis) + .WaitFor(redis); + +builder.AddProject("client-wasm") + .WithReference(api) + .WaitFor(api); + +builder.Build().Run(); diff --git a/VehicleApp/VehicleApp.AppHost/Properties/launchSettings.json b/VehicleApp/VehicleApp.AppHost/Properties/launchSettings.json new file mode 100644 index 00000000..5d622e6b --- /dev/null +++ b/VehicleApp/VehicleApp.AppHost/Properties/launchSettings.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:17086;http://localhost:15193", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21146", + "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22096" + } + }, + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:15193", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19210", + "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20142" + } + } + } +} diff --git a/VehicleApp/VehicleApp.AppHost/VehicleApp.AppHost.csproj b/VehicleApp/VehicleApp.AppHost/VehicleApp.AppHost.csproj new file mode 100644 index 00000000..4bbbd173 --- /dev/null +++ b/VehicleApp/VehicleApp.AppHost/VehicleApp.AppHost.csproj @@ -0,0 +1,23 @@ + + + + + + Exe + net8.0 + enable + enable + 2a828687-7a1a-4343-ae7d-1d2e46d714a8 + + + + + + + + + + + + + diff --git a/VehicleApp/VehicleApp.AppHost/appsettings.Development.json b/VehicleApp/VehicleApp.AppHost/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/VehicleApp/VehicleApp.AppHost/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/VehicleApp/VehicleApp.AppHost/appsettings.json b/VehicleApp/VehicleApp.AppHost/appsettings.json new file mode 100644 index 00000000..31c092aa --- /dev/null +++ b/VehicleApp/VehicleApp.AppHost/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "Aspire.Hosting.Dcp": "Warning" + } + } +} diff --git a/VehicleApp/VehicleApp.ServiceDefaults/Extensions.cs b/VehicleApp/VehicleApp.ServiceDefaults/Extensions.cs new file mode 100644 index 00000000..b72c8753 --- /dev/null +++ b/VehicleApp/VehicleApp.ServiceDefaults/Extensions.cs @@ -0,0 +1,127 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Diagnostics.HealthChecks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.ServiceDiscovery; +using OpenTelemetry; +using OpenTelemetry.Metrics; +using OpenTelemetry.Trace; + +namespace Microsoft.Extensions.Hosting; + +// Adds common Aspire services: service discovery, resilience, health checks, and OpenTelemetry. +// This project should be referenced by each service project in your solution. +// To learn more about using this project, see https://aka.ms/dotnet/aspire/service-defaults +public static class Extensions +{ + private const string HealthEndpointPath = "/health"; + private const string AlivenessEndpointPath = "/alive"; + + public static TBuilder AddServiceDefaults(this TBuilder builder) where TBuilder : IHostApplicationBuilder + { + builder.ConfigureOpenTelemetry(); + + builder.AddDefaultHealthChecks(); + + builder.Services.AddServiceDiscovery(); + + builder.Services.ConfigureHttpClientDefaults(http => + { + // Turn on resilience by default + http.AddStandardResilienceHandler(); + + // Turn on service discovery by default + http.AddServiceDiscovery(); + }); + + // Uncomment the following to restrict the allowed schemes for service discovery. + // builder.Services.Configure(options => + // { + // options.AllowedSchemes = ["https"]; + // }); + + return builder; + } + + public static TBuilder ConfigureOpenTelemetry(this TBuilder builder) where TBuilder : IHostApplicationBuilder + { + builder.Logging.AddOpenTelemetry(logging => + { + logging.IncludeFormattedMessage = true; + logging.IncludeScopes = true; + }); + + builder.Services.AddOpenTelemetry() + .WithMetrics(metrics => + { + metrics.AddAspNetCoreInstrumentation() + .AddHttpClientInstrumentation() + .AddRuntimeInstrumentation(); + }) + .WithTracing(tracing => + { + tracing.AddSource(builder.Environment.ApplicationName) + .AddAspNetCoreInstrumentation(tracing => + // Exclude health check requests from tracing + tracing.Filter = context => + !context.Request.Path.StartsWithSegments(HealthEndpointPath) + && !context.Request.Path.StartsWithSegments(AlivenessEndpointPath) + ) + // Uncomment the following line to enable gRPC instrumentation (requires the OpenTelemetry.Instrumentation.GrpcNetClient package) + //.AddGrpcClientInstrumentation() + .AddHttpClientInstrumentation(); + }); + + builder.AddOpenTelemetryExporters(); + + return builder; + } + + private static TBuilder AddOpenTelemetryExporters(this TBuilder builder) where TBuilder : IHostApplicationBuilder + { + var useOtlpExporter = !string.IsNullOrWhiteSpace(builder.Configuration["OTEL_EXPORTER_OTLP_ENDPOINT"]); + + if (useOtlpExporter) + { + builder.Services.AddOpenTelemetry().UseOtlpExporter(); + } + + // Uncomment the following lines to enable the Azure Monitor exporter (requires the Azure.Monitor.OpenTelemetry.AspNetCore package) + //if (!string.IsNullOrEmpty(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"])) + //{ + // builder.Services.AddOpenTelemetry() + // .UseAzureMonitor(); + //} + + return builder; + } + + public static TBuilder AddDefaultHealthChecks(this TBuilder builder) where TBuilder : IHostApplicationBuilder + { + builder.Services.AddHealthChecks() + // Add a default liveness check to ensure app is responsive + .AddCheck("self", () => HealthCheckResult.Healthy(), ["live"]); + + return builder; + } + + public static WebApplication MapDefaultEndpoints(this WebApplication app) + { + // Adding health checks endpoints to applications in non-development environments has security implications. + // See https://aka.ms/dotnet/aspire/healthchecks for details before enabling these endpoints in non-development environments. + if (app.Environment.IsDevelopment()) + { + // All health checks must pass for app to be considered ready to accept traffic after starting + app.MapHealthChecks(HealthEndpointPath); + + // Only health checks tagged with the "live" tag must pass for app to be considered alive + app.MapHealthChecks(AlivenessEndpointPath, new HealthCheckOptions + { + Predicate = r => r.Tags.Contains("live") + }); + } + + return app; + } +} diff --git a/VehicleApp/VehicleApp.ServiceDefaults/VehicleApp.ServiceDefaults.csproj b/VehicleApp/VehicleApp.ServiceDefaults/VehicleApp.ServiceDefaults.csproj new file mode 100644 index 00000000..1b6e209a --- /dev/null +++ b/VehicleApp/VehicleApp.ServiceDefaults/VehicleApp.ServiceDefaults.csproj @@ -0,0 +1,22 @@ + + + + net8.0 + enable + enable + true + + + + + + + + + + + + + + + diff --git a/images/aspire.png b/images/aspire.png new file mode 100644 index 0000000000000000000000000000000000000000..a41265d4da33f83f77fa29f634b932cc8945c5c8 GIT binary patch literal 56139 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

4wnQz>e``swGS^dC&?_a6Hd!ccqkHZa5B< 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%0A}`raUZg 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 literal 0 HcmV?d00001 From c3caebcfb8a73deb6a7a1c7212c138169c38ffb8 Mon Sep 17 00:00:00 2001 From: kingtuler Date: Wed, 4 Mar 2026 23:31:00 +0400 Subject: [PATCH 3/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=B3=D1=80=D0=B5=D1=88=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client.Wasm/Components/StudentCard.razor | 2 +- VehicleApp.Api/Models/Vehicle.cs | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Client.Wasm/Components/StudentCard.razor b/Client.Wasm/Components/StudentCard.razor index 022071e9..0b462df5 100644 --- a/Client.Wasm/Components/StudentCard.razor +++ b/Client.Wasm/Components/StudentCard.razor @@ -7,7 +7,7 @@ Номер №1 "Кэширование" Вариант №47 "Транспортное средство" Выполнена Морозов Сергей Сергеевич 6513 - Ссылка на форк + Ссылка на форк diff --git a/VehicleApp.Api/Models/Vehicle.cs b/VehicleApp.Api/Models/Vehicle.cs index c668e7bd..76c261c9 100644 --- a/VehicleApp.Api/Models/Vehicle.cs +++ b/VehicleApp.Api/Models/Vehicle.cs @@ -13,37 +13,37 @@ public class Vehicle ///

/// VIN-номер /// - public string Vin { get; set; } = string.Empty; + public required string Vin { get; set; } /// /// Производитель /// - public string Manufacturer { get; set; } = string.Empty; + public required string Manufacturer { get; set; } /// /// Модель /// - public string Model { get; set; } = string.Empty; + public required string Model { get; set; } /// /// Год выпуска /// - public int Year { get; set; } + public required int Year { get; set; } /// /// Тип корпуса /// - public string BodyType { get; set; } = string.Empty; + public required string BodyType { get; set; } /// /// Тип топлива /// - public string FuelType { get; set; } = string.Empty; + public required string FuelType { get; set; } /// /// Цвет корпуса /// - public string BodyColor { get; set; } = string.Empty; + public required string BodyColor { get; set; } /// /// Пробег (км) From 57a4928cdb3cca053427ccd3243ae66caaa03f58 Mon Sep 17 00:00:00 2001 From: kingtuler Date: Tue, 10 Mar 2026 23:38:10 +0400 Subject: [PATCH 4/7] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CloudDevelopment.AppHost/AppHost.cs | 5 - .../CloudDevelopment.AppHost.csproj | 15 --- .../Properties/launchSettings.json | 31 ----- .../appsettings.Development.json | 8 -- CloudDevelopment.AppHost/appsettings.json | 9 -- .../CloudDevelopment.ServiceDefaults.csproj | 22 --- .../Extensions.cs | 127 ------------------ .../Controllers/WeatherForecastController.cs | 32 ----- TransportApp.Api/Program.cs | 29 ---- .../Properties/launchSettings.json | 41 ------ TransportApp.Api/TransportApp.Api.csproj | 17 --- TransportApp.Api/TransportApp.Api.http | 6 - TransportApp.Api/WeatherForecast.cs | 12 -- TransportApp.Api/appsettings.Development.json | 8 -- TransportApp.Api/appsettings.json | 9 -- VehicleApp.Api/Program.cs | 2 +- VehicleApp.Api/Services/IVehicleService.cs | 2 +- 17 files changed, 2 insertions(+), 373 deletions(-) delete mode 100644 CloudDevelopment.AppHost/AppHost.cs delete mode 100644 CloudDevelopment.AppHost/CloudDevelopment.AppHost.csproj delete mode 100644 CloudDevelopment.AppHost/Properties/launchSettings.json delete mode 100644 CloudDevelopment.AppHost/appsettings.Development.json delete mode 100644 CloudDevelopment.AppHost/appsettings.json delete mode 100644 CloudDevelopment.ServiceDefaults/CloudDevelopment.ServiceDefaults.csproj delete mode 100644 CloudDevelopment.ServiceDefaults/Extensions.cs delete mode 100644 TransportApp.Api/Controllers/WeatherForecastController.cs delete mode 100644 TransportApp.Api/Program.cs delete mode 100644 TransportApp.Api/Properties/launchSettings.json delete mode 100644 TransportApp.Api/TransportApp.Api.csproj delete mode 100644 TransportApp.Api/TransportApp.Api.http delete mode 100644 TransportApp.Api/WeatherForecast.cs delete mode 100644 TransportApp.Api/appsettings.Development.json delete mode 100644 TransportApp.Api/appsettings.json diff --git a/CloudDevelopment.AppHost/AppHost.cs b/CloudDevelopment.AppHost/AppHost.cs deleted file mode 100644 index e5c8089c..00000000 --- a/CloudDevelopment.AppHost/AppHost.cs +++ /dev/null @@ -1,5 +0,0 @@ -var builder = DistributedApplication.CreateBuilder(args); - -builder.AddProject("transportapp-api"); - -builder.Build().Run(); diff --git a/CloudDevelopment.AppHost/CloudDevelopment.AppHost.csproj b/CloudDevelopment.AppHost/CloudDevelopment.AppHost.csproj deleted file mode 100644 index d44a2009..00000000 --- a/CloudDevelopment.AppHost/CloudDevelopment.AppHost.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - enable - enable - 064f7aae-2d43-4c3f-856d-ddcddc898ca2 - - - - - - - diff --git a/CloudDevelopment.AppHost/Properties/launchSettings.json b/CloudDevelopment.AppHost/Properties/launchSettings.json deleted file mode 100644 index e33e87ea..00000000 --- a/CloudDevelopment.AppHost/Properties/launchSettings.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/launchsettings.json", - "profiles": { - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "applicationUrl": "https://localhost:17115;http://localhost:15240", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development", - "DOTNET_ENVIRONMENT": "Development", - "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21024", - "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23070", - "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22014" - } - }, - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "applicationUrl": "http://localhost:15240", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development", - "DOTNET_ENVIRONMENT": "Development", - "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19230", - "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18106", - "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20055" - } - } - } -} diff --git a/CloudDevelopment.AppHost/appsettings.Development.json b/CloudDevelopment.AppHost/appsettings.Development.json deleted file mode 100644 index 0c208ae9..00000000 --- a/CloudDevelopment.AppHost/appsettings.Development.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} diff --git a/CloudDevelopment.AppHost/appsettings.json b/CloudDevelopment.AppHost/appsettings.json deleted file mode 100644 index 31c092aa..00000000 --- a/CloudDevelopment.AppHost/appsettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning", - "Aspire.Hosting.Dcp": "Warning" - } - } -} diff --git a/CloudDevelopment.ServiceDefaults/CloudDevelopment.ServiceDefaults.csproj b/CloudDevelopment.ServiceDefaults/CloudDevelopment.ServiceDefaults.csproj deleted file mode 100644 index 8ad67261..00000000 --- a/CloudDevelopment.ServiceDefaults/CloudDevelopment.ServiceDefaults.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net8.0 - enable - enable - true - - - - - - - - - - - - - - - diff --git a/CloudDevelopment.ServiceDefaults/Extensions.cs b/CloudDevelopment.ServiceDefaults/Extensions.cs deleted file mode 100644 index b72c8753..00000000 --- a/CloudDevelopment.ServiceDefaults/Extensions.cs +++ /dev/null @@ -1,127 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Diagnostics.HealthChecks; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Diagnostics.HealthChecks; -using Microsoft.Extensions.Logging; -using Microsoft.Extensions.ServiceDiscovery; -using OpenTelemetry; -using OpenTelemetry.Metrics; -using OpenTelemetry.Trace; - -namespace Microsoft.Extensions.Hosting; - -// Adds common Aspire services: service discovery, resilience, health checks, and OpenTelemetry. -// This project should be referenced by each service project in your solution. -// To learn more about using this project, see https://aka.ms/dotnet/aspire/service-defaults -public static class Extensions -{ - private const string HealthEndpointPath = "/health"; - private const string AlivenessEndpointPath = "/alive"; - - public static TBuilder AddServiceDefaults(this TBuilder builder) where TBuilder : IHostApplicationBuilder - { - builder.ConfigureOpenTelemetry(); - - builder.AddDefaultHealthChecks(); - - builder.Services.AddServiceDiscovery(); - - builder.Services.ConfigureHttpClientDefaults(http => - { - // Turn on resilience by default - http.AddStandardResilienceHandler(); - - // Turn on service discovery by default - http.AddServiceDiscovery(); - }); - - // Uncomment the following to restrict the allowed schemes for service discovery. - // builder.Services.Configure(options => - // { - // options.AllowedSchemes = ["https"]; - // }); - - return builder; - } - - public static TBuilder ConfigureOpenTelemetry(this TBuilder builder) where TBuilder : IHostApplicationBuilder - { - builder.Logging.AddOpenTelemetry(logging => - { - logging.IncludeFormattedMessage = true; - logging.IncludeScopes = true; - }); - - builder.Services.AddOpenTelemetry() - .WithMetrics(metrics => - { - metrics.AddAspNetCoreInstrumentation() - .AddHttpClientInstrumentation() - .AddRuntimeInstrumentation(); - }) - .WithTracing(tracing => - { - tracing.AddSource(builder.Environment.ApplicationName) - .AddAspNetCoreInstrumentation(tracing => - // Exclude health check requests from tracing - tracing.Filter = context => - !context.Request.Path.StartsWithSegments(HealthEndpointPath) - && !context.Request.Path.StartsWithSegments(AlivenessEndpointPath) - ) - // Uncomment the following line to enable gRPC instrumentation (requires the OpenTelemetry.Instrumentation.GrpcNetClient package) - //.AddGrpcClientInstrumentation() - .AddHttpClientInstrumentation(); - }); - - builder.AddOpenTelemetryExporters(); - - return builder; - } - - private static TBuilder AddOpenTelemetryExporters(this TBuilder builder) where TBuilder : IHostApplicationBuilder - { - var useOtlpExporter = !string.IsNullOrWhiteSpace(builder.Configuration["OTEL_EXPORTER_OTLP_ENDPOINT"]); - - if (useOtlpExporter) - { - builder.Services.AddOpenTelemetry().UseOtlpExporter(); - } - - // Uncomment the following lines to enable the Azure Monitor exporter (requires the Azure.Monitor.OpenTelemetry.AspNetCore package) - //if (!string.IsNullOrEmpty(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"])) - //{ - // builder.Services.AddOpenTelemetry() - // .UseAzureMonitor(); - //} - - return builder; - } - - public static TBuilder AddDefaultHealthChecks(this TBuilder builder) where TBuilder : IHostApplicationBuilder - { - builder.Services.AddHealthChecks() - // Add a default liveness check to ensure app is responsive - .AddCheck("self", () => HealthCheckResult.Healthy(), ["live"]); - - return builder; - } - - public static WebApplication MapDefaultEndpoints(this WebApplication app) - { - // Adding health checks endpoints to applications in non-development environments has security implications. - // See https://aka.ms/dotnet/aspire/healthchecks for details before enabling these endpoints in non-development environments. - if (app.Environment.IsDevelopment()) - { - // All health checks must pass for app to be considered ready to accept traffic after starting - app.MapHealthChecks(HealthEndpointPath); - - // Only health checks tagged with the "live" tag must pass for app to be considered alive - app.MapHealthChecks(AlivenessEndpointPath, new HealthCheckOptions - { - Predicate = r => r.Tags.Contains("live") - }); - } - - return app; - } -} diff --git a/TransportApp.Api/Controllers/WeatherForecastController.cs b/TransportApp.Api/Controllers/WeatherForecastController.cs deleted file mode 100644 index 09b50aea..00000000 --- a/TransportApp.Api/Controllers/WeatherForecastController.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -namespace TransportApp.Api.Controllers; - -[ApiController] -[Route("[controller]")] -public class WeatherForecastController : ControllerBase -{ - private static readonly string[] Summaries = new[] - { - "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" - }; - - private readonly ILogger _logger; - - public WeatherForecastController(ILogger logger) - { - _logger = logger; - } - - [HttpGet(Name = "GetWeatherForecast")] - public IEnumerable Get() - { - return Enumerable.Range(1, 5).Select(index => new WeatherForecast - { - Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), - TemperatureC = Random.Shared.Next(-20, 55), - Summary = Summaries[Random.Shared.Next(Summaries.Length)] - }) - .ToArray(); - } -} diff --git a/TransportApp.Api/Program.cs b/TransportApp.Api/Program.cs deleted file mode 100644 index edda8a7f..00000000 --- a/TransportApp.Api/Program.cs +++ /dev/null @@ -1,29 +0,0 @@ -var builder = WebApplication.CreateBuilder(args); - -builder.AddServiceDefaults(); - -// Add services to the container. - -builder.Services.AddControllers(); -// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle -builder.Services.AddEndpointsApiExplorer(); -builder.Services.AddSwaggerGen(); - -var app = builder.Build(); - -app.MapDefaultEndpoints(); - -// Configure the HTTP request pipeline. -if (app.Environment.IsDevelopment()) -{ - app.UseSwagger(); - app.UseSwaggerUI(); -} - -app.UseHttpsRedirection(); - -app.UseAuthorization(); - -app.MapControllers(); - -app.Run(); diff --git a/TransportApp.Api/Properties/launchSettings.json b/TransportApp.Api/Properties/launchSettings.json deleted file mode 100644 index bd0d0fd5..00000000 --- a/TransportApp.Api/Properties/launchSettings.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:7866", - "sslPort": 44334 - } - }, - "profiles": { - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "http://localhost:5167", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "https://localhost:7246;http://localhost:5167", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "swagger", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/TransportApp.Api/TransportApp.Api.csproj b/TransportApp.Api/TransportApp.Api.csproj deleted file mode 100644 index 3fe26a38..00000000 --- a/TransportApp.Api/TransportApp.Api.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - net8.0 - enable - enable - - - - - - - - - - - diff --git a/TransportApp.Api/TransportApp.Api.http b/TransportApp.Api/TransportApp.Api.http deleted file mode 100644 index be82d019..00000000 --- a/TransportApp.Api/TransportApp.Api.http +++ /dev/null @@ -1,6 +0,0 @@ -@TransportApp.Api_HostAddress = http://localhost:5167 - -GET {{TransportApp.Api_HostAddress}}/weatherforecast/ -Accept: application/json - -### diff --git a/TransportApp.Api/WeatherForecast.cs b/TransportApp.Api/WeatherForecast.cs deleted file mode 100644 index c33fc50b..00000000 --- a/TransportApp.Api/WeatherForecast.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace TransportApp.Api; - -public class WeatherForecast -{ - public DateOnly Date { get; set; } - - public int TemperatureC { get; set; } - - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - - public string? Summary { get; set; } -} diff --git a/TransportApp.Api/appsettings.Development.json b/TransportApp.Api/appsettings.Development.json deleted file mode 100644 index 0c208ae9..00000000 --- a/TransportApp.Api/appsettings.Development.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} diff --git a/TransportApp.Api/appsettings.json b/TransportApp.Api/appsettings.json deleted file mode 100644 index 10f68b8c..00000000 --- a/TransportApp.Api/appsettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} diff --git a/VehicleApp.Api/Program.cs b/VehicleApp.Api/Program.cs index fe7825fb..789a1acd 100644 --- a/VehicleApp.Api/Program.cs +++ b/VehicleApp.Api/Program.cs @@ -19,7 +19,7 @@ app.MapGet("/vehicles", async (int id, IVehicleService vehicleService) => { - var vehicle = await vehicleService.GetVehicleAsync(id); + var vehicle = await vehicleService.GetVehicle(id); return Results.Ok(vehicle); }); diff --git a/VehicleApp.Api/Services/IVehicleService.cs b/VehicleApp.Api/Services/IVehicleService.cs index b2d588ed..f1702ea6 100644 --- a/VehicleApp.Api/Services/IVehicleService.cs +++ b/VehicleApp.Api/Services/IVehicleService.cs @@ -12,5 +12,5 @@ public interface IVehicleService /// /// Идентификатор ТС /// Транспортное средство - public Task GetVehicleAsync(int id); + public Task GetVehicle(int id); } From a0d4e279bbdcff020072afc11cecad4dbdaba130 Mon Sep 17 00:00:00 2001 From: kingtuler Date: Wed, 11 Mar 2026 10:52:31 +0400 Subject: [PATCH 5/7] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VehicleApp.Api/Services/VehicleService.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/VehicleApp.Api/Services/VehicleService.cs b/VehicleApp.Api/Services/VehicleService.cs index 9bf6d313..897cbc26 100644 --- a/VehicleApp.Api/Services/VehicleService.cs +++ b/VehicleApp.Api/Services/VehicleService.cs @@ -10,8 +10,9 @@ namespace VehicleApp.Api.Services; public class VehicleService(IDistributedCache cache, IConfiguration configuration, ILogger logger) : IVehicleService { + private readonly int _expirationMinutes = configuration.GetValue("CacheSettings:ExpirationMinutes", 15); /// - public async Task GetVehicleAsync(int id) + public async Task GetVehicle(int id) { var cacheKey = $"vehicle-{id}"; logger.LogInformation("Requesting vehicle {VehicleId} from cache", id); @@ -42,11 +43,11 @@ public async Task GetVehicleAsync(int id) try { - var expirationMinutes = configuration.GetValue("CacheSettings:ExpirationMinutes", 15); + var cacheOptions = new DistributedCacheEntryOptions { - AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(expirationMinutes) + AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(_expirationMinutes) }; await cache.SetStringAsync(cacheKey, JsonSerializer.Serialize(vehicle), cacheOptions); From 1bcc9fb4037b21e68c173bd125f9a1203eae8c82 Mon Sep 17 00:00:00 2001 From: kingtuler Date: Wed, 11 Mar 2026 10:54:38 +0400 Subject: [PATCH 6/7] =?UTF-8?q?=D0=BE=D1=84=D0=BE=D1=80=D0=BC=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VehicleApp.Api/Services/VehicleService.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/VehicleApp.Api/Services/VehicleService.cs b/VehicleApp.Api/Services/VehicleService.cs index 897cbc26..3d592baf 100644 --- a/VehicleApp.Api/Services/VehicleService.cs +++ b/VehicleApp.Api/Services/VehicleService.cs @@ -42,14 +42,11 @@ public async Task GetVehicle(int id) var vehicle = VehicleGenerator.GenerateVehicle(id); try - { - - + { var cacheOptions = new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(_expirationMinutes) }; - await cache.SetStringAsync(cacheKey, JsonSerializer.Serialize(vehicle), cacheOptions); logger.LogInformation("Vehicle {VehicleId} generated and cached", id); } From a7da401c4b61a089807265696c035cbf88794cab Mon Sep 17 00:00:00 2001 From: kingtuler Date: Wed, 25 Mar 2026 16:03:01 +0400 Subject: [PATCH 7/7] =?UTF-8?q?2=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client.Wasm/Components/StudentCard.razor | 2 +- Client.Wasm/wwwroot/appsettings.json | 2 +- CloudDevelopment.sln | 6 +++ README.md | 31 ++++++++++++-- VehicleApp.Api/Program.cs | 8 +--- VehicleApp.Api/appsettings.json | 6 --- VehicleApp.Gateway/Program.cs | 27 +++++++++++++ .../Properties/launchSettings.json | 38 ++++++++++++++++++ VehicleApp.Gateway/QueryBased.cs | 29 +++++++++++++ VehicleApp.Gateway/VehicleApp.Gateway.csproj | 17 ++++++++ .../appsettings.Development.json | 8 ++++ VehicleApp.Gateway/appsettings.json | 15 +++++++ VehicleApp.Gateway/ocelot.json | 25 ++++++++++++ VehicleApp/VehicleApp.AppHost/AppHost.cs | 16 +++++--- .../VehicleApp.AppHost.csproj | 1 + images/aspire.png | Bin 56139 -> 94650 bytes 16 files changed, 207 insertions(+), 24 deletions(-) create mode 100644 VehicleApp.Gateway/Program.cs create mode 100644 VehicleApp.Gateway/Properties/launchSettings.json create mode 100644 VehicleApp.Gateway/QueryBased.cs create mode 100644 VehicleApp.Gateway/VehicleApp.Gateway.csproj create mode 100644 VehicleApp.Gateway/appsettings.Development.json create mode 100644 VehicleApp.Gateway/appsettings.json create mode 100644 VehicleApp.Gateway/ocelot.json diff --git a/Client.Wasm/Components/StudentCard.razor b/Client.Wasm/Components/StudentCard.razor index 0b462df5..4ff3bc91 100644 --- a/Client.Wasm/Components/StudentCard.razor +++ b/Client.Wasm/Components/StudentCard.razor @@ -4,7 +4,7 @@ - Номер №1 "Кэширование" + Номер №2 "Балансировка нагрузки" Вариант №47 "Транспортное средство" Выполнена Морозов Сергей Сергеевич 6513 Ссылка на форк diff --git a/Client.Wasm/wwwroot/appsettings.json b/Client.Wasm/wwwroot/appsettings.json index 3de814bd..765ff8a3 100644 --- a/Client.Wasm/wwwroot/appsettings.json +++ b/Client.Wasm/wwwroot/appsettings.json @@ -6,5 +6,5 @@ } }, "AllowedHosts": "*", - "BaseAddress": "https://localhost:7069/vehicles" + "BaseAddress": "https://localhost:7163/vehicles" } diff --git a/CloudDevelopment.sln b/CloudDevelopment.sln index 70f9f020..4ba75281 100644 --- a/CloudDevelopment.sln +++ b/CloudDevelopment.sln @@ -11,6 +11,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VehicleApp.ServiceDefaults" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VehicleApp.Api", "VehicleApp.Api\VehicleApp.Api.csproj", "{54C02CF3-616B-EC3E-6F35-EAF0ED92B6B0}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VehicleApp.Gateway", "VehicleApp.Gateway\VehicleApp.Gateway.csproj", "{CBFDC59A-3449-C88A-3139-3F56883062A4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -33,6 +35,10 @@ Global {54C02CF3-616B-EC3E-6F35-EAF0ED92B6B0}.Debug|Any CPU.Build.0 = Debug|Any CPU {54C02CF3-616B-EC3E-6F35-EAF0ED92B6B0}.Release|Any CPU.ActiveCfg = Release|Any CPU {54C02CF3-616B-EC3E-6F35-EAF0ED92B6B0}.Release|Any CPU.Build.0 = Release|Any CPU + {CBFDC59A-3449-C88A-3139-3F56883062A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CBFDC59A-3449-C88A-3139-3F56883062A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CBFDC59A-3449-C88A-3139-3F56883062A4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CBFDC59A-3449-C88A-3139-3F56883062A4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/README.md b/README.md index 0d5463b8..a7c36e38 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,16 @@ -# Лабораторная работа №1 — «Кэширование» +# Лабораторные работы — «Облачная разработка» ## Вариант 47 — «Транспортное средство» -## Описание +--- + +## Лабораторная работа №1 — «Кэширование» + +### Описание Реализован микросервисный бэкенд для генерации данных о транспортных средствах с кэшированием в Redis и оркестрацией через .NET Aspire. -## Что реализовано +### Что реализовано - Сервис генерации данных о транспортных средствах на основе Bogus - Кэширование ответов при помощи `IDistributedCache` и Redis @@ -14,6 +18,24 @@ - Оркестрация всех компонентов через .NET Aspire - Blazor WebAssembly клиент для отображения данных +--- + +## Лабораторная работа №2 — «Балансировка нагрузки» + +### Описание + +Реализован API Gateway на основе Ocelot с кастомным алгоритмом балансировки нагрузки **Query Based**. + +### Что реализовано + +- Запуск 7 реплик сервиса генерации через .NET Aspire (порты 5000–5006) +- API Gateway на Ocelot с маршрутизацией `/vehicles` → `/api/vehicles` +- Кастомный балансировщик `QueryBased` — реплика выбирается по формуле `id % N`, где N — число реплик + +### Алгоритм балансировки + +Из query-параметра `id` вычисляется остаток от деления на количество реплик. Результат — индекс реплики, обрабатывающей запрос. + ## Стек технологий - .NET 8 @@ -28,7 +50,8 @@ | Проект | Описание | |---|---| -| `VehicleApp.Api` | API-сервис генерации транспортных средств | +| `VehicleApp.Api` | API-сервис генерации транспортных средств (7 реплик) | +| `VehicleApp.Gateway` | API Gateway на Ocelot с балансировкой Query Based | | `VehicleApp.AppHost` | Aspire-оркестратор | | `VehicleApp.ServiceDefaults` | Общие настройки сервисов (OpenTelemetry, health checks) | | `Client.Wasm` | Blazor WebAssembly клиент | diff --git a/VehicleApp.Api/Program.cs b/VehicleApp.Api/Program.cs index 789a1acd..cc60671c 100644 --- a/VehicleApp.Api/Program.cs +++ b/VehicleApp.Api/Program.cs @@ -6,18 +6,12 @@ builder.AddRedisDistributedCache("redis"); builder.Services.AddScoped(); -builder.Services.AddCors(options => - options.AddPolicy("AllowClient", policy => - policy.WithOrigins(builder.Configuration.GetSection("CorsSettings:AllowedOrigins").Get() ?? []) - .WithMethods("GET") - .AllowAnyHeader())); var app = builder.Build(); -app.UseCors("AllowClient"); app.MapDefaultEndpoints(); -app.MapGet("/vehicles", async (int id, IVehicleService vehicleService) => +app.MapGet("/api/vehicles", async (int id, IVehicleService vehicleService) => { var vehicle = await vehicleService.GetVehicle(id); return Results.Ok(vehicle); diff --git a/VehicleApp.Api/appsettings.json b/VehicleApp.Api/appsettings.json index 584a50c8..1b91a460 100644 --- a/VehicleApp.Api/appsettings.json +++ b/VehicleApp.Api/appsettings.json @@ -6,12 +6,6 @@ } }, "AllowedHosts": "*", - "CorsSettings": { - "AllowedOrigins": [ - "http://localhost:5127", - "https://localhost:7282" - ] - }, "CacheSettings": { "ExpirationMinutes": 15 } diff --git a/VehicleApp.Gateway/Program.cs b/VehicleApp.Gateway/Program.cs new file mode 100644 index 00000000..06df0922 --- /dev/null +++ b/VehicleApp.Gateway/Program.cs @@ -0,0 +1,27 @@ +using Ocelot.DependencyInjection; +using Ocelot.Middleware; +using VehicleApp.Gateway; + +var builder = WebApplication.CreateBuilder(args); + +builder.AddServiceDefaults(); +builder.Services.AddServiceDiscovery(); +builder.Configuration.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true); +builder.Services.AddOcelot() + .AddCustomLoadBalancer((_, _, provider) => new(provider.GetAsync)); + +builder.Services.AddCors(options => + options.AddPolicy("AllowClient", policy => + policy.WithOrigins(builder.Configuration.GetSection("CorsSettings:AllowedOrigins").Get() ?? []) + .WithMethods("GET") + .AllowAnyHeader())); + +var app = builder.Build(); + +app.UseCors("AllowClient"); + +app.MapDefaultEndpoints(); + +await app.UseOcelot(); + +app.Run(); diff --git a/VehicleApp.Gateway/Properties/launchSettings.json b/VehicleApp.Gateway/Properties/launchSettings.json new file mode 100644 index 00000000..bb603fb5 --- /dev/null +++ b/VehicleApp.Gateway/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:38233", + "sslPort": 44380 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5262", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7163;http://localhost:5262", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/VehicleApp.Gateway/QueryBased.cs b/VehicleApp.Gateway/QueryBased.cs new file mode 100644 index 00000000..f950af7b --- /dev/null +++ b/VehicleApp.Gateway/QueryBased.cs @@ -0,0 +1,29 @@ +using Ocelot.LoadBalancer.Interfaces; +using Ocelot.Responses; +using Ocelot.Values; + +namespace VehicleApp.Gateway; + + +/// +/// Балансировщик нагрузки на основе параметра запроса. +/// Реплика выбирается по формуле: id % N, где N — количество реплик. +/// +/// Делегат для получения списка доступных реплик сервиса. +public class QueryBased(Func>> services) : ILoadBalancer +{ + public string Type => nameof(QueryBased); + + /// Выбирает реплику на основе query-параметра id. + /// HTTP-контекст входящего запроса. + /// Хост и порт выбранной реплики. + public async Task> LeaseAsync(HttpContext context) + { + var pool = await services(); + var id = int.TryParse(context.Request.Query["id"], out var v) ? v : 0; + var target = pool[Math.Abs(id) % pool.Count]; + return new OkResponse(target.HostAndPort); + } + + public void Release(ServiceHostAndPort hostAndPort) { } +} \ No newline at end of file diff --git a/VehicleApp.Gateway/VehicleApp.Gateway.csproj b/VehicleApp.Gateway/VehicleApp.Gateway.csproj new file mode 100644 index 00000000..d0340915 --- /dev/null +++ b/VehicleApp.Gateway/VehicleApp.Gateway.csproj @@ -0,0 +1,17 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + diff --git a/VehicleApp.Gateway/appsettings.Development.json b/VehicleApp.Gateway/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/VehicleApp.Gateway/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/VehicleApp.Gateway/appsettings.json b/VehicleApp.Gateway/appsettings.json new file mode 100644 index 00000000..6053d188 --- /dev/null +++ b/VehicleApp.Gateway/appsettings.json @@ -0,0 +1,15 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "CorsSettings": { + "AllowedOrigins": [ + "http://localhost:5127", + "https://localhost:7282" + ] + } +} diff --git a/VehicleApp.Gateway/ocelot.json b/VehicleApp.Gateway/ocelot.json new file mode 100644 index 00000000..c39ac284 --- /dev/null +++ b/VehicleApp.Gateway/ocelot.json @@ -0,0 +1,25 @@ +{ + "Routes": [ + { + "DownstreamPathTemplate": "/api/vehicles", + "DownstreamScheme": "https", + "UpstreamPathTemplate": "/vehicles", + "UpstreamHttpMethod": [ "GET" ], + "LoadBalancerOptions": { + "Type": "QueryBased" + }, + "DownstreamHostAndPorts": [ + { "Host": "localhost", "Port": 5000 }, + { "Host": "localhost", "Port": 5001 }, + { "Host": "localhost", "Port": 5002 }, + { "Host": "localhost", "Port": 5003 }, + { "Host": "localhost", "Port": 5004 }, + { "Host": "localhost", "Port": 5005 }, + { "Host": "localhost", "Port": 5006 } + ] + } + ], + "GlobalConfiguration": { + "BaseUrl": "https://localhost:7163" + } +} diff --git a/VehicleApp/VehicleApp.AppHost/AppHost.cs b/VehicleApp/VehicleApp.AppHost/AppHost.cs index e9c68d71..2b5fe414 100644 --- a/VehicleApp/VehicleApp.AppHost/AppHost.cs +++ b/VehicleApp/VehicleApp.AppHost/AppHost.cs @@ -3,12 +3,18 @@ var redis = builder.AddRedis("redis") .WithRedisInsight(); -var api = builder.AddProject("vehicleapp-api") - .WithReference(redis) - .WaitFor(redis); +var gateway = builder.AddProject("vehicleapp-gateway"); + +for (var i = 0; i < 7; i++) +{ + var service = builder.AddProject($"vehicleapp-api-{i}", launchProfileName: null) + .WithHttpsEndpoint(5000 + i) + .WithReference(redis) + .WaitFor(redis); + gateway.WaitFor(service); +} builder.AddProject("client-wasm") - .WithReference(api) - .WaitFor(api); + .WaitFor(gateway); builder.Build().Run(); diff --git a/VehicleApp/VehicleApp.AppHost/VehicleApp.AppHost.csproj b/VehicleApp/VehicleApp.AppHost/VehicleApp.AppHost.csproj index 4bbbd173..54a837ad 100644 --- a/VehicleApp/VehicleApp.AppHost/VehicleApp.AppHost.csproj +++ b/VehicleApp/VehicleApp.AppHost/VehicleApp.AppHost.csproj @@ -18,6 +18,7 @@ + diff --git a/images/aspire.png b/images/aspire.png index a41265d4da33f83f77fa29f634b932cc8945c5c8..6983aa6615f80b2e7715fcadb0630845af540645 100644 GIT binary patch literal 94650 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�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 literal 56139 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

4wnQz>e``swGS^dC&?_a6Hd!ccqkHZa5B< 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