From 355a81050fcdc9c68ae568bf88077bfc2c936eab Mon Sep 17 00:00:00 2001 From: Adelkaks Date: Tue, 9 Jan 2024 17:48:51 +0300 Subject: [PATCH] commit --- tasks/nasybullov-ai/lab_3/README.md | 86 ++++ tasks/nasybullov-ai/lab_3/docker-compose.yml | 15 + tasks/nasybullov-ai/lab_3/nginx.conf | 26 + tasks/nasybullov-ai/lab_3/pic/1.png | Bin 0 -> 41951 bytes tasks/nasybullov-ai/lab_3/pic/2.png | Bin 0 -> 41340 bytes tasks/nasybullov-ai/lab_3/pic/3.png | Bin 0 -> 19818 bytes tasks/nasybullov-ai/lab_3/pic/4.png | Bin 0 -> 12457 bytes tasks/nasybullov-ai/lab_3/pic/5.png | Bin 0 -> 18462 bytes tasks/nasybullov-ai/lab_3/pic/6.png | Bin 0 -> 19873 bytes tasks/nasybullov-ai/lab_3/static/index.html | 13 + tasks/nasybullov-ai/lab_3/worker-1/.gitignore | 484 ++++++++++++++++++ tasks/nasybullov-ai/lab_3/worker-1/Dockerfile | 11 + tasks/nasybullov-ai/lab_3/worker-1/Program.cs | 124 +++++ .../worker-1/Properties/launchSettings.json | 38 ++ .../worker-1/appsettings.Development.json | 8 + .../lab_3/worker-1/appsettings.json | 9 + .../lab_3/worker-1/worker-1.csproj | 15 + .../nasybullov-ai/lab_3/worker-1/worker-1.sln | 22 + tasks/nasybullov-ai/lab_3/worker-2/.gitignore | 484 ++++++++++++++++++ tasks/nasybullov-ai/lab_3/worker-2/Dockerfile | 11 + tasks/nasybullov-ai/lab_3/worker-2/Program.cs | 145 ++++++ .../worker-2/Properties/launchSettings.json | 38 ++ .../worker-2/appsettings.Development.json | 8 + .../lab_3/worker-2/appsettings.json | 9 + .../lab_3/worker-2/worker-2.csproj | 15 + .../nasybullov-ai/lab_3/worker-2/worker-2.sln | 22 + 26 files changed, 1583 insertions(+) create mode 100644 tasks/nasybullov-ai/lab_3/README.md create mode 100644 tasks/nasybullov-ai/lab_3/docker-compose.yml create mode 100644 tasks/nasybullov-ai/lab_3/nginx.conf create mode 100644 tasks/nasybullov-ai/lab_3/pic/1.png create mode 100644 tasks/nasybullov-ai/lab_3/pic/2.png create mode 100644 tasks/nasybullov-ai/lab_3/pic/3.png create mode 100644 tasks/nasybullov-ai/lab_3/pic/4.png create mode 100644 tasks/nasybullov-ai/lab_3/pic/5.png create mode 100644 tasks/nasybullov-ai/lab_3/pic/6.png create mode 100644 tasks/nasybullov-ai/lab_3/static/index.html create mode 100644 tasks/nasybullov-ai/lab_3/worker-1/.gitignore create mode 100644 tasks/nasybullov-ai/lab_3/worker-1/Dockerfile create mode 100644 tasks/nasybullov-ai/lab_3/worker-1/Program.cs create mode 100644 tasks/nasybullov-ai/lab_3/worker-1/Properties/launchSettings.json create mode 100644 tasks/nasybullov-ai/lab_3/worker-1/appsettings.Development.json create mode 100644 tasks/nasybullov-ai/lab_3/worker-1/appsettings.json create mode 100644 tasks/nasybullov-ai/lab_3/worker-1/worker-1.csproj create mode 100644 tasks/nasybullov-ai/lab_3/worker-1/worker-1.sln create mode 100644 tasks/nasybullov-ai/lab_3/worker-2/.gitignore create mode 100644 tasks/nasybullov-ai/lab_3/worker-2/Dockerfile create mode 100644 tasks/nasybullov-ai/lab_3/worker-2/Program.cs create mode 100644 tasks/nasybullov-ai/lab_3/worker-2/Properties/launchSettings.json create mode 100644 tasks/nasybullov-ai/lab_3/worker-2/appsettings.Development.json create mode 100644 tasks/nasybullov-ai/lab_3/worker-2/appsettings.json create mode 100644 tasks/nasybullov-ai/lab_3/worker-2/worker-2.csproj create mode 100644 tasks/nasybullov-ai/lab_3/worker-2/worker-2.sln diff --git a/tasks/nasybullov-ai/lab_3/README.md b/tasks/nasybullov-ai/lab_3/README.md new file mode 100644 index 0000000..95a9dbb --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/README.md @@ -0,0 +1,86 @@ +# Отчет по лабораторной работе №3 + +Выполнил студент гр. ИСЭбд-41 Насыбуллов А.И. + +## REST API, Gateway и синхронный обмен между микросервисами + +## Создание микросервисов + +1. С помощью команды `dotnet new web -n worker-2` в терминале создал первый микросервис +2. Добавил решение командой `dotnet new sln` +3. Связал решение и проект командой `dotnet sln worker-2.sln add worker-2.csproj` +4. Повторил действие для второго микросервиса +5. Добавил библиотеку Swagger и OpenAi в проекты и запустил с помощью команды `dotnet run` + +Скриншоты протестированных микросервисов: +![](pic/1.png) +![](pic/2.png) + +## Реализация синхронного обмена + +Реализовал код, который вызывает сихронно данные из соседнего микросервиса. + +```cs +//worker-2 +app.MapGet("/Requests/", async () => +{ + var httpClient = new HttpClient(); + var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8080/"); + + return secondWorkerResponse.ToArray(); +}) +.WithName("GetRequests") +.WithOpenApi(); +``` + +## Реализация gateway при помощи nginx + +Добавил nginx.conf: + +```conf +server { + listen 8080; + listen [::]:8080; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + location /worker-1/ { + proxy_pass http://worker-1:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Prefix /worker-1; + } + + location /worker-2/ { + proxy_pass http://worker-2:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Prefix /worker-2; + } +} + +``` + +Результат, после выполнения команды `docker-compose up`: + +Docker: + +![](pic/3.png) + +index.html на gateway-1: + +![](pic/4.png) + +worker-1: + +![](pic/5.png) + +worker-2: + +![](pic/6.png) \ No newline at end of file diff --git a/tasks/nasybullov-ai/lab_3/docker-compose.yml b/tasks/nasybullov-ai/lab_3/docker-compose.yml new file mode 100644 index 0000000..e9ca4b9 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.1" +services: + worker-1: + build: ./worker-1 + worker-2: + build: ./worker-2 + depends_on: + - worker-1 + gateway: + image: nginx:latest + ports: + - 8080:8080 + volumes: + - ./static:/usr/share/nginx/html:ro + - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro \ No newline at end of file diff --git a/tasks/nasybullov-ai/lab_3/nginx.conf b/tasks/nasybullov-ai/lab_3/nginx.conf new file mode 100644 index 0000000..f649a4a --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/nginx.conf @@ -0,0 +1,26 @@ +server { + listen 8080; + listen [::]:8080; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + location /worker-1/ { + proxy_pass http://worker-1:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Prefix /worker-1; + } + + location /worker-2/ { + proxy_pass http://worker-2:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Prefix /worker-2; + } +} \ No newline at end of file diff --git a/tasks/nasybullov-ai/lab_3/pic/1.png b/tasks/nasybullov-ai/lab_3/pic/1.png new file mode 100644 index 0000000000000000000000000000000000000000..69077f2f58c3a2640d70d1a52b5870edac5917d8 GIT binary patch literal 41951 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 QG<*YB)47&^<@WFY4-LwNBme*a literal 0 HcmV?d00001 diff --git a/tasks/nasybullov-ai/lab_3/pic/2.png b/tasks/nasybullov-ai/lab_3/pic/2.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd8760d01eaf3855af8fcf99a576aa370cd663c GIT binary patch literal 41340 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 literal 0 HcmV?d00001 diff --git a/tasks/nasybullov-ai/lab_3/pic/4.png b/tasks/nasybullov-ai/lab_3/pic/4.png new file mode 100644 index 0000000000000000000000000000000000000000..39418e9e72d1eea6c20c5f1f6d55dd2faf6ab4f4 GIT binary patch literal 12457 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 E03ns@*Z=?k literal 0 HcmV?d00001 diff --git a/tasks/nasybullov-ai/lab_3/pic/6.png b/tasks/nasybullov-ai/lab_3/pic/6.png new file mode 100644 index 0000000000000000000000000000000000000000..f5bf9170c7d11860ea61d9a98b858365413d6d45 GIT binary patch literal 19873 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 M**IC(S^6gb1uV?u!vFvP literal 0 HcmV?d00001 diff --git a/tasks/nasybullov-ai/lab_3/static/index.html b/tasks/nasybullov-ai/lab_3/static/index.html new file mode 100644 index 0000000..5ccf6b2 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/static/index.html @@ -0,0 +1,13 @@ + + + + + + Тестовое приложение для л/р 3 + + +

Мытарин Е.С. ИСЭбд-41.

+

Отправить запрос к worker-1

+

Отправить запрос к worker-2

+ + \ No newline at end of file diff --git a/tasks/nasybullov-ai/lab_3/worker-1/.gitignore b/tasks/nasybullov-ai/lab_3/worker-1/.gitignore new file mode 100644 index 0000000..104b544 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-1/.gitignore @@ -0,0 +1,484 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from `dotnet new gitignore` + +# dotenv files +.env + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +.idea + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Vim temporary swap files +*.swp diff --git a/tasks/nasybullov-ai/lab_3/worker-1/Dockerfile b/tasks/nasybullov-ai/lab_3/worker-1/Dockerfile new file mode 100644 index 0000000..7a8ce23 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-1/Dockerfile @@ -0,0 +1,11 @@ +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env +WORKDIR /app + +COPY . ./ +RUN dotnet restore +RUN dotnet publish -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:8.0 +WORKDIR /app +COPY --from=build-env /app/out . +ENTRYPOINT ["dotnet", "worker-1.dll"] \ No newline at end of file diff --git a/tasks/nasybullov-ai/lab_3/worker-1/Program.cs b/tasks/nasybullov-ai/lab_3/worker-1/Program.cs new file mode 100644 index 0000000..bd1bffb --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-1/Program.cs @@ -0,0 +1,124 @@ +List requests = new() +{ + new Request() { Uuid= Guid.Parse("7184fa5f-b786-4478-863a-99cc000eb752"), Title = "Расход на коммуналку", SourceOfFunds = "Мердеев", Sum = 100000, IsCompleted = false }, + new Request() { Uuid= Guid.Parse("55a9aed1-218a-468e-92b9-99f6a6a34543"), Title = "Расход на газ", SourceOfFunds = "Киселев", Sum = 25000, IsCompleted = true }, +}; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.MapGet("/", () => +{ + return requests.Select(r => new RequestEntityDto() + { + Uuid = r.Uuid, + Title = r.Title, + Sum = r.Sum, + SourceOfFunds = r.SourceOfFunds, + IsCompleted = r.IsCompleted, + }); +}) +.WithName("GetRequests") +.WithOpenApi(); + +app.MapGet("/{uuid}", (Guid uuid) => +{ + var request = requests.FirstOrDefault(r => r.Uuid == uuid); + if (request == null) + return Results.NotFound(); + return Results.Json(new RequestEntityDto() + { + Uuid = request.Uuid, + Title = request.Title, + Sum = request.Sum, + SourceOfFunds = request.SourceOfFunds, + IsCompleted = request.IsCompleted, + }); +}) +.WithName("GetRequestByGUID") +.WithOpenApi(); + +app.MapPost("/{title}/{sourceOfFunds}/{sum}/{isCompleted}", (string title, string sourceOfFunds, decimal sum, bool isCompleted) => +{ + Guid NewGuid = Guid.NewGuid(); + requests.Add(new Request() { Uuid = NewGuid, Title = (string)title, SourceOfFunds = (string)sourceOfFunds, Sum = (decimal)sum, IsCompleted = (bool)isCompleted}); + + var request = requests.FirstOrDefault(r => r.Uuid == NewGuid); + if (request == null) + return Results.NotFound(); + return Results.Json(new RequestEntityDto() + { + Uuid = request.Uuid, + Title = request.Title, + Sum = request.Sum, + SourceOfFunds = request.SourceOfFunds, + IsCompleted = request.IsCompleted, + }); +}) +.WithName("PostRequest") +.WithOpenApi(); + +app.MapPatch("/{uuid}/{title}/{sourceOfFunds}/{sum}/{isCompleted}", (Guid uuid, string ?title, string ?sourceOfFunds, decimal sum, bool isCompleted) => +{ + var request = requests.FirstOrDefault(r => r.Uuid == uuid); + if (request == null) + return Results.NotFound(); + if (title != null) request.Title = title; + if (sourceOfFunds != ",") request.SourceOfFunds = sourceOfFunds; + if (sum != request.Sum && sum != 0) request.Sum = sum; + if (isCompleted != request.IsCompleted) request.IsCompleted = isCompleted; + + return Results.Json(new RequestEntityDto() + { + Uuid = request.Uuid, + Title = request.Title, + Sum = request.Sum, + SourceOfFunds = request.SourceOfFunds, + IsCompleted = request.IsCompleted, + }); +}) +.WithName("UpdateRequest") +.WithOpenApi(); + +app.MapDelete("/{uuid}", (Guid uuid) => +{ + var request = requests.FirstOrDefault(r => r.Uuid == uuid); + if (request == null) + return Results.NotFound(); + requests.Remove(request); + return Results.Json(new RequestEntityDto() + { + Uuid = request.Uuid, + Title = request.Title, + Sum = request.Sum, + SourceOfFunds = request.SourceOfFunds, + IsCompleted = request.IsCompleted, + }); +}) +.WithName("DeleteRequestByGUID") +.WithOpenApi(); + +app.Run(); + +public class Request +{ + public Guid Uuid { get; set; } + public string Title { get; set; } = string.Empty; + public string SourceOfFunds { get; set; } = string.Empty; + public decimal Sum { get; set; } = 0; + public bool IsCompleted { get; set; } +} + +public class RequestEntityDto : Request { } \ No newline at end of file diff --git a/tasks/nasybullov-ai/lab_3/worker-1/Properties/launchSettings.json b/tasks/nasybullov-ai/lab_3/worker-1/Properties/launchSettings.json new file mode 100644 index 0000000..bab6706 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-1/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:51956", + "sslPort": 44303 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5197", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7027;http://localhost:5197", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/tasks/nasybullov-ai/lab_3/worker-1/appsettings.Development.json b/tasks/nasybullov-ai/lab_3/worker-1/appsettings.Development.json new file mode 100644 index 0000000..3b823ef --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-1/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/tasks/nasybullov-ai/lab_3/worker-1/appsettings.json b/tasks/nasybullov-ai/lab_3/worker-1/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-1/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/tasks/nasybullov-ai/lab_3/worker-1/worker-1.csproj b/tasks/nasybullov-ai/lab_3/worker-1/worker-1.csproj new file mode 100644 index 0000000..795c30e --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-1/worker-1.csproj @@ -0,0 +1,15 @@ + + + + net8.0 + enable + enable + worker_1 + + + + + + + + diff --git a/tasks/nasybullov-ai/lab_3/worker-1/worker-1.sln b/tasks/nasybullov-ai/lab_3/worker-1/worker-1.sln new file mode 100644 index 0000000..fc4131f --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-1/worker-1.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "worker-1", "worker-1.csproj", "{90F6C7BD-78E2-47C8-A702-DD47E74D3865}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {90F6C7BD-78E2-47C8-A702-DD47E74D3865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {90F6C7BD-78E2-47C8-A702-DD47E74D3865}.Debug|Any CPU.Build.0 = Debug|Any CPU + {90F6C7BD-78E2-47C8-A702-DD47E74D3865}.Release|Any CPU.ActiveCfg = Release|Any CPU + {90F6C7BD-78E2-47C8-A702-DD47E74D3865}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/tasks/nasybullov-ai/lab_3/worker-2/.gitignore b/tasks/nasybullov-ai/lab_3/worker-2/.gitignore new file mode 100644 index 0000000..104b544 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-2/.gitignore @@ -0,0 +1,484 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from `dotnet new gitignore` + +# dotenv files +.env + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +.idea + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Vim temporary swap files +*.swp diff --git a/tasks/nasybullov-ai/lab_3/worker-2/Dockerfile b/tasks/nasybullov-ai/lab_3/worker-2/Dockerfile new file mode 100644 index 0000000..7f6b963 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-2/Dockerfile @@ -0,0 +1,11 @@ +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env +WORKDIR /app + +COPY . ./ +RUN dotnet restore +RUN dotnet publish -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:8.0 +WORKDIR /app +COPY --from=build-env /app/out . +ENTRYPOINT ["dotnet", "worker-2.dll"] \ No newline at end of file diff --git a/tasks/nasybullov-ai/lab_3/worker-2/Program.cs b/tasks/nasybullov-ai/lab_3/worker-2/Program.cs new file mode 100644 index 0000000..05739f4 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-2/Program.cs @@ -0,0 +1,145 @@ + +List agrs = new() +{ + new Agreement() { Uuid= Guid.NewGuid(), Number = "75ИФ-61", Date = new DateOnly(), Sum = 50000, IdRequest = Guid.Parse("7184fa5f-b786-4478-863a-99cc000eb752") } +}; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.MapGet("/", () => +{ + return agrs.Select(r => new AgreementEntityDto() + { + Uuid = r.Uuid, + Number = r.Number, + Sum = r.Sum, + Date = r.Date, + IdRequest = r.IdRequest, + }); +}) +.WithName("GetAgreements") +.WithOpenApi(); + +app.MapGet("/{uuid}", (Guid uuid) => +{ + var agr = agrs.FirstOrDefault(r => r.Uuid == uuid); + if (agr == null) + return Results.NotFound(); + return Results.Json(new AgreementEntityDto() + { + Uuid = agr.Uuid, + Number = agr.Number, + Sum = agr.Sum, + Date = agr.Date, + IdRequest = agr.IdRequest, + }); +}) +.WithName("GetAgreementByGUID") +.WithOpenApi(); + +app.MapPost("/{number}/{date}/{sum}/{idRequest}", (string? number, DateOnly date, decimal sum, Guid idRequest) => +{ + Guid NewGuid = Guid.NewGuid(); + agrs.Add(new Agreement() { Uuid = NewGuid, Number = (string)number, Date = (DateOnly)date, Sum = (decimal)sum, IdRequest = (Guid)idRequest }); + + var agr = agrs.FirstOrDefault(r => r.Uuid == NewGuid); + if (agr == null) + return Results.NotFound(); + return Results.Json(new AgreementEntityDto() + { + Uuid = agr.Uuid, + Number = agr.Number, + Sum = agr.Sum, + Date = agr.Date, + IdRequest = agr.IdRequest, + }); +}) +.WithName("PostAgreement") +.WithOpenApi(); + +app.MapPatch("/{uuid}/{number}/{date}/{sum}/{idRequest}", (Guid uuid, string ?number, DateOnly date, decimal sum, Guid idRequest) => +{ + var agr = agrs.FirstOrDefault(r => r.Uuid == uuid); + if (agr == null) + return Results.NotFound(); + if (number != ",") agr.Number = number; + if (date != null)agr.Date = date; + if (sum != agr.Sum && sum != 0) agr.Sum = sum; + if (idRequest != agr.IdRequest) agr.IdRequest = idRequest; + + return Results.Json(new AgreementEntityDto() + { + Uuid = agr.Uuid, + Number = agr.Number, + Sum = agr.Sum, + Date = agr.Date, + IdRequest = agr.IdRequest, + }); +}) +.WithName("UpdateAgreement") +.WithOpenApi(); + +app.MapDelete("/{uuid}", (Guid uuid) => +{ + var agr = agrs.FirstOrDefault(r => r.Uuid == uuid); + if (agr == null) + return Results.NotFound(); + agrs.Remove(agr); + return Results.Json(new AgreementEntityDto() + { + Uuid = agr.Uuid, + Number = agr.Number, + Sum = agr.Sum, + Date = agr.Date, + IdRequest = agr.IdRequest, + }); +}) +.WithName("DeleteAgreement") +.WithOpenApi(); + +app.MapGet("/Requests/", async () => +{ + var httpClient = new HttpClient(); + var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8080/"); + + return secondWorkerResponse.ToArray(); +}) +.WithName("GetRequests") +.WithOpenApi(); + +app.Run(); + +public class Agreement +{ + public Guid Uuid { get; set; } + public string Number { get; set; } = string.Empty; + public DateOnly Date { get; set; } + public Guid IdRequest { get; set; } + public decimal Sum { get; set; } = 0; +} + +public class AgreementEntityDto : Agreement { } + +public class Request +{ + public Guid Uuid { get; set; } + public string Title { get; set; } = string.Empty; + public string SourceOfFunds { get; set; } = string.Empty; + public decimal Sum { get; set; } = 0; + public bool IsCompleted { get; set; } +} + +public class RequestEntityDto : Request { } \ No newline at end of file diff --git a/tasks/nasybullov-ai/lab_3/worker-2/Properties/launchSettings.json b/tasks/nasybullov-ai/lab_3/worker-2/Properties/launchSettings.json new file mode 100644 index 0000000..c0a3346 --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-2/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:36404", + "sslPort": 44384 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5101", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7125;http://localhost:5101", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/tasks/nasybullov-ai/lab_3/worker-2/appsettings.Development.json b/tasks/nasybullov-ai/lab_3/worker-2/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-2/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/tasks/nasybullov-ai/lab_3/worker-2/appsettings.json b/tasks/nasybullov-ai/lab_3/worker-2/appsettings.json new file mode 100644 index 0000000..b41ccef --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-2/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/tasks/nasybullov-ai/lab_3/worker-2/worker-2.csproj b/tasks/nasybullov-ai/lab_3/worker-2/worker-2.csproj new file mode 100644 index 0000000..9e8d22f --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-2/worker-2.csproj @@ -0,0 +1,15 @@ + + + + net8.0 + enable + enable + worker_2 + + + + + + + + diff --git a/tasks/nasybullov-ai/lab_3/worker-2/worker-2.sln b/tasks/nasybullov-ai/lab_3/worker-2/worker-2.sln new file mode 100644 index 0000000..8f8c96d --- /dev/null +++ b/tasks/nasybullov-ai/lab_3/worker-2/worker-2.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "worker-2", "worker-2.csproj", "{C9D63524-2C63-4E86-91B6-D86955CFA5F8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C9D63524-2C63-4E86-91B6-D86955CFA5F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9D63524-2C63-4E86-91B6-D86955CFA5F8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9D63524-2C63-4E86-91B6-D86955CFA5F8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9D63524-2C63-4E86-91B6-D86955CFA5F8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal