From d2143a80348d4f99ef1998cabb8f47a39be6ec6c Mon Sep 17 00:00:00 2001 From: Savitskiy_ISEbd-41 Date: Fri, 15 Dec 2023 14:17:16 +0400 Subject: [PATCH] lab 3 --- tasks/savitskiy-al/lab_3/.gitignore | 456 ++++++++++++++++++ tasks/savitskiy-al/lab_3/README.md | 117 +++++ tasks/savitskiy-al/lab_3/docker-compose.yml | 15 + tasks/savitskiy-al/lab_3/nginx.conf | 26 + tasks/savitskiy-al/lab_3/pic/1.png | Bin 0 -> 37993 bytes tasks/savitskiy-al/lab_3/pic/2.png | Bin 0 -> 34033 bytes tasks/savitskiy-al/lab_3/pic/3.png | Bin 0 -> 29064 bytes tasks/savitskiy-al/lab_3/pic/4.png | Bin 0 -> 8385 bytes tasks/savitskiy-al/lab_3/pic/5.png | Bin 0 -> 23646 bytes tasks/savitskiy-al/lab_3/pic/6.png | Bin 0 -> 24518 bytes tasks/savitskiy-al/lab_3/static/index.html | 12 + tasks/savitskiy-al/lab_3/worker-1/Dockerfile | 11 + .../Models/Aeroplane/Create/AeroplaneForm.cs | 13 + .../Models/Aeroplane/Get/AeroplaneResult.cs | 15 + .../Aeroplane/GetList/AeroplaneResult.cs | 15 + .../Models/Aeroplane/Update/AeroplaneForm.cs | 13 + tasks/savitskiy-al/lab_3/worker-1/Program.cs | 131 +++++ .../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 + .../savitskiy-al/lab_3/worker-1/worker-1.sln | 22 + tasks/savitskiy-al/lab_3/worker-2/Dockerfile | 11 + .../Models/Pilots/Create/PilotForm.cs | 13 + .../worker-2/Models/Pilots/Get/PilotResult.cs | 15 + .../Models/Pilots/GetList/PilotResult.cs | 15 + .../Models/Pilots/Update/PilotForm.cs | 13 + tasks/savitskiy-al/lab_3/worker-2/Program.cs | 182 +++++++ .../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 + .../savitskiy-al/lab_3/worker-2/worker-2.sln | 22 + 33 files changed, 1257 insertions(+) create mode 100644 tasks/savitskiy-al/lab_3/.gitignore create mode 100644 tasks/savitskiy-al/lab_3/README.md create mode 100644 tasks/savitskiy-al/lab_3/docker-compose.yml create mode 100644 tasks/savitskiy-al/lab_3/nginx.conf create mode 100644 tasks/savitskiy-al/lab_3/pic/1.png create mode 100644 tasks/savitskiy-al/lab_3/pic/2.png create mode 100644 tasks/savitskiy-al/lab_3/pic/3.png create mode 100644 tasks/savitskiy-al/lab_3/pic/4.png create mode 100644 tasks/savitskiy-al/lab_3/pic/5.png create mode 100644 tasks/savitskiy-al/lab_3/pic/6.png create mode 100644 tasks/savitskiy-al/lab_3/static/index.html create mode 100644 tasks/savitskiy-al/lab_3/worker-1/Dockerfile create mode 100644 tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Create/AeroplaneForm.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Get/AeroplaneResult.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/GetList/AeroplaneResult.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Update/AeroplaneForm.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-1/Program.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-1/Properties/launchSettings.json create mode 100644 tasks/savitskiy-al/lab_3/worker-1/appsettings.Development.json create mode 100644 tasks/savitskiy-al/lab_3/worker-1/appsettings.json create mode 100644 tasks/savitskiy-al/lab_3/worker-1/worker-1.csproj create mode 100644 tasks/savitskiy-al/lab_3/worker-1/worker-1.sln create mode 100644 tasks/savitskiy-al/lab_3/worker-2/Dockerfile create mode 100644 tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Create/PilotForm.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Get/PilotResult.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/GetList/PilotResult.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Update/PilotForm.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-2/Program.cs create mode 100644 tasks/savitskiy-al/lab_3/worker-2/Properties/launchSettings.json create mode 100644 tasks/savitskiy-al/lab_3/worker-2/appsettings.Development.json create mode 100644 tasks/savitskiy-al/lab_3/worker-2/appsettings.json create mode 100644 tasks/savitskiy-al/lab_3/worker-2/worker-2.csproj create mode 100644 tasks/savitskiy-al/lab_3/worker-2/worker-2.sln diff --git a/tasks/savitskiy-al/lab_3/.gitignore b/tasks/savitskiy-al/lab_3/.gitignore new file mode 100644 index 0000000..3c395b3 --- /dev/null +++ b/tasks/savitskiy-al/lab_3/.gitignore @@ -0,0 +1,456 @@ +var/result/ + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# 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 +*.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 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/ + +# 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 + +## +## 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 + +# JetBrains Rider +.idea/ +*.sln.iml + +## +## Visual Studio Code +## +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git a/tasks/savitskiy-al/lab_3/README.md b/tasks/savitskiy-al/lab_3/README.md new file mode 100644 index 0000000..61e3a9f --- /dev/null +++ b/tasks/savitskiy-al/lab_3/README.md @@ -0,0 +1,117 @@ +# Отчет по лабораторной работе №3 + +Выполнил студент гр. ИСЭбд-41 Савицкий А.В. + +## REST API, Gateway и синхронный обмен между микросервисами + +## Создание микросервисов + +1. С помощью команды `dotnet new web -n worker-1` в терминале создал первый микросервис +2. Добавил решение командой `dotnet new sln` +3. Связал решение и проект командой `dotnet sln worker-1.sln add worker-1.csproj` +4. Повторил действие для второго микросервиса +5. Добавил библиотеку Swagger и OpenAi в проекты и запустил с помощью команды `dotnet run` +6. Заложил в приложения следующую логику : + + worker-1 - CRUD для сущности Aeroplan + + worker-2 - CRUD для сущности Pilot + + К одному Aeroplan относится много Pilot + +Скриншоты API обоих приложений: +![](pic/1.png) +![](pic/2.png) + +## Реализация синхронного обмена + +Реализовал хранение данных в оперативной памяти с хранилещем спректированым по паттерну Singleton. Хранилище при инициализации сихронно вызывает данные из соседнего микросервиса. +Далее эти данные используются при обработке запросов к API + +```cs +public class Storage +{ + private static Random rand = new Random(); + + public AiroplaneDal[] Airoplanes { get; set; } + + public List Pilots { get; set; } + + public static Storage Instance { get; set; } + + private Storage() { } + + + public static async Task GetInstance() + { + if(Instance is not null) + { + return Instance; + } + + var client = new HttpClient(); + string reqUrl = $"http://worker-1:8080/Aeroplanes/"; + Instance = new Storage(); + Instance.Airoplanes = await client.GetFromJsonAsync(reqUrl); + Instance.Pilots = new List() + { + new PilotDal() { PilotId = Guid.NewGuid(), BirthDate = DateTime.Today.AddDays(-100), AeroplaneId = Instance.Airoplanes[rand.Next(Instance.Airoplanes.Length)].AeroplaneId, FullName = "Савицкий Александр Вячеславович", Experience = 10 }, + new PilotDal() { PilotId = Guid.NewGuid(), BirthDate = DateTime.Today.AddDays(-150), AeroplaneId = Instance.Airoplanes[rand.Next(Instance.Airoplanes.Length)].AeroplaneId, FullName = "Гайдулян Максим Петрович", Experience = 15 } + }; + + return Instance; + } +} +``` + +## Реализация 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 на localhost:8080: + +![](pic/4.png) + +worker-1: + +![](pic/5.png) + +worker-2: +companyId - берется из другого приложения. Идентификаторы совпали -> все отработало корректно +![](pic/6.png) \ No newline at end of file diff --git a/tasks/savitskiy-al/lab_3/docker-compose.yml b/tasks/savitskiy-al/lab_3/docker-compose.yml new file mode 100644 index 0000000..e9ca4b9 --- /dev/null +++ b/tasks/savitskiy-al/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/savitskiy-al/lab_3/nginx.conf b/tasks/savitskiy-al/lab_3/nginx.conf new file mode 100644 index 0000000..f649a4a --- /dev/null +++ b/tasks/savitskiy-al/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/savitskiy-al/lab_3/pic/1.png b/tasks/savitskiy-al/lab_3/pic/1.png new file mode 100644 index 0000000000000000000000000000000000000000..01e06c4832f93a7e4737ab9bc972bc3a84344426 GIT binary patch literal 37993 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 C-Pq{> literal 0 HcmV?d00001 diff --git a/tasks/savitskiy-al/lab_3/pic/2.png b/tasks/savitskiy-al/lab_3/pic/2.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e1b3de346da97d577a597916fd13fd316bf468 GIT binary patch literal 34033 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 literal 0 HcmV?d00001 diff --git a/tasks/savitskiy-al/lab_3/pic/3.png b/tasks/savitskiy-al/lab_3/pic/3.png new file mode 100644 index 0000000000000000000000000000000000000000..5a85f7ed7a71ddebbd7240257db41c0eea937115 GIT binary patch literal 29064 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

R}{|Ru2uU84@Jjx0muj5Ft=fYG~Awu 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 literal 0 HcmV?d00001 diff --git a/tasks/savitskiy-al/lab_3/pic/5.png b/tasks/savitskiy-al/lab_3/pic/5.png new file mode 100644 index 0000000000000000000000000000000000000000..2dfd87daa969a447bd437a872d186f60d5d056bb GIT binary patch literal 23646 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 F{{WNT%MJhl literal 0 HcmV?d00001 diff --git a/tasks/savitskiy-al/lab_3/pic/6.png b/tasks/savitskiy-al/lab_3/pic/6.png new file mode 100644 index 0000000000000000000000000000000000000000..6db1e0054270803b21e1688e4e4b0ffe57ef5a27 GIT binary patch literal 24518 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 literal 0 HcmV?d00001 diff --git a/tasks/savitskiy-al/lab_3/static/index.html b/tasks/savitskiy-al/lab_3/static/index.html new file mode 100644 index 0000000..b1c99dd --- /dev/null +++ b/tasks/savitskiy-al/lab_3/static/index.html @@ -0,0 +1,12 @@ + + + + + + Тестовое приложение для л/р 3 + + +

Савицкий А.В. ИСЭбд-41.

+

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

+

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

+ \ No newline at end of file diff --git a/tasks/savitskiy-al/lab_3/worker-1/Dockerfile b/tasks/savitskiy-al/lab_3/worker-1/Dockerfile new file mode 100644 index 0000000..7a8ce23 --- /dev/null +++ b/tasks/savitskiy-al/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/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Create/AeroplaneForm.cs b/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Create/AeroplaneForm.cs new file mode 100644 index 0000000..d96fb23 --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Create/AeroplaneForm.cs @@ -0,0 +1,13 @@ +namespace worker_1.Models.Aeroplane.Create +{ + public class AeroplaneForm + { + public string Name { get; set; } + + public DateTime ProductionDate { get; set; } + + public int Weght { get; set; } + + public int Lenght { get; set; } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Get/AeroplaneResult.cs b/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Get/AeroplaneResult.cs new file mode 100644 index 0000000..c83c89c --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Get/AeroplaneResult.cs @@ -0,0 +1,15 @@ +namespace worker_1.Models.Aeroplane.Get +{ + public class AeroplaneResult + { + public Guid AeroplaneId { get; set; } + + public string Name { get; set; } + + public DateTime ProductionDate { get; set; } + + public int Weght { get; set; } + + public int Lenght { get; set; } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/GetList/AeroplaneResult.cs b/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/GetList/AeroplaneResult.cs new file mode 100644 index 0000000..5bc3d4b --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/GetList/AeroplaneResult.cs @@ -0,0 +1,15 @@ +namespace worker_1.Models.Aeroplane.GetList +{ + public class AeroplaneResult + { + public Guid AeroplaneId { get; set; } + + public string Name { get; set; } + + public DateTime ProductionDate { get; set; } + + public int Weght { get; set; } + + public int Lenght { get; set; } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Update/AeroplaneForm.cs b/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Update/AeroplaneForm.cs new file mode 100644 index 0000000..96abfc0 --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-1/Models/Aeroplane/Update/AeroplaneForm.cs @@ -0,0 +1,13 @@ +namespace worker_1.Models.Aeroplane.Update +{ + public class AeroplaneForm + { + public string Name { get; set; } + + public DateTime ProductionDate { get; set; } + + public int Weght { get; set; } + + public int Lenght { get; set; } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-1/Program.cs b/tasks/savitskiy-al/lab_3/worker-1/Program.cs new file mode 100644 index 0000000..1f70ff0 --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-1/Program.cs @@ -0,0 +1,131 @@ +using Microsoft.AspNetCore.Mvc; + +List aeroplanes = new() +{ + new AeroplaneDal() { AeroplaneId = Guid.NewGuid(), Name = "Boeing 747", Weght = 41140, Lenght = 40, ProductionDate = new DateTime(2010, 4, 15)}, + new AeroplaneDal() { AeroplaneId = Guid.NewGuid(), Name = "Ту-154", Weght = 55300, Lenght = 48, ProductionDate = new DateTime(2005, 3, 20)}, + new AeroplaneDal() { AeroplaneId = Guid.NewGuid(), Name = "Ил-86", Weght = 117500, Lenght = 60, ProductionDate = new DateTime(2005, 9, 7)}, +}; + + + +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("/Aeroplanes/", () => +{ + var result = aeroplanes.Select(r => new worker_1.Models.Aeroplane.GetList.AeroplaneResult() + { + AeroplaneId = r.AeroplaneId, + Name = r.Name, + Lenght = r.Lenght, + ProductionDate = r.ProductionDate, + Weght = r.Weght, + }).ToArray(); + + return Results.Ok(result); +}) +.WithName("List") +.WithOpenApi(); + +app.MapGet("/Aeroplanes/{aeroplaneId}", (Guid aeroplaneId) => +{ + var aeroplane = aeroplanes.FirstOrDefault(r => r.AeroplaneId == aeroplaneId); + if (aeroplane is null) + { + return Results.NotFound($"Не найдена самолет {aeroplaneId}"); + } + + return Results.Json(new worker_1.Models.Aeroplane.Get.AeroplaneResult() + { + AeroplaneId = aeroplane.AeroplaneId, + Name = aeroplane.Name, + Lenght = aeroplane.Lenght, + ProductionDate = aeroplane.ProductionDate, + Weght = aeroplane.Weght, + }); +}) +.WithName("Get") +.WithOpenApi(); + +app.MapPost("/Aeroplanes/", ([FromBody] worker_1.Models.Aeroplane.Create.AeroplaneForm request) => +{ + Guid aeroplaneId = Guid.NewGuid(); + aeroplanes.Add(new AeroplaneDal() + { + AeroplaneId = aeroplaneId, + Lenght = request.Lenght, + ProductionDate = request.ProductionDate, + Weght = request.Weght, + Name = request.Name, + }); + + return Results.Ok(aeroplaneId); +}) +.WithName("Create") +.WithOpenApi(); + +app.MapPatch("/Aeroplanes/{aeroplaneId}", (Guid aeroplaneId, [FromBody] worker_1.Models.Aeroplane.Create.AeroplaneForm request) => +{ + var aeroplane = aeroplanes.FirstOrDefault(r => r.AeroplaneId == aeroplaneId); + if (aeroplane is null) + { + return Results.NotFound($"Не найден самолет {aeroplaneId}"); + } + + if (!string.IsNullOrEmpty(request.Name)) + { + aeroplane.Name = request.Name; + } + + aeroplane.ProductionDate = request.ProductionDate; + aeroplane.Lenght = request.Lenght; + aeroplane.Weght = request.Weght; + + return Results.Ok(aeroplane); +}) +.WithName("Update") +.WithOpenApi(); + +app.MapDelete("/Aeroplanes/{aeroplaneId}", (Guid aeroplaneId) => +{ + var aeroplane = aeroplanes.FirstOrDefault(r => r.AeroplaneId == aeroplaneId); + if (aeroplane is null) + { + return Results.NotFound($"Не найден самолет {aeroplaneId}"); + } + + aeroplanes.Remove(aeroplane); + return Results.Ok(aeroplaneId); +}) +.WithName("Delete") +.WithOpenApi(); + +app.Run(); + + + +public class AeroplaneDal +{ + public Guid AeroplaneId { get; set; } + + public string Name { get; set; } + + public DateTime ProductionDate { get; set; } + + public int Weght { get; set; } + + public int Lenght { get; set; } +} \ No newline at end of file diff --git a/tasks/savitskiy-al/lab_3/worker-1/Properties/launchSettings.json b/tasks/savitskiy-al/lab_3/worker-1/Properties/launchSettings.json new file mode 100644 index 0000000..bab6706 --- /dev/null +++ b/tasks/savitskiy-al/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/savitskiy-al/lab_3/worker-1/appsettings.Development.json b/tasks/savitskiy-al/lab_3/worker-1/appsettings.Development.json new file mode 100644 index 0000000..3b823ef --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-1/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-1/appsettings.json b/tasks/savitskiy-al/lab_3/worker-1/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-1/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/tasks/savitskiy-al/lab_3/worker-1/worker-1.csproj b/tasks/savitskiy-al/lab_3/worker-1/worker-1.csproj new file mode 100644 index 0000000..795c30e --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-1/worker-1.csproj @@ -0,0 +1,15 @@ + + + + net8.0 + enable + enable + worker_1 + + + + + + + + diff --git a/tasks/savitskiy-al/lab_3/worker-1/worker-1.sln b/tasks/savitskiy-al/lab_3/worker-1/worker-1.sln new file mode 100644 index 0000000..fc4131f --- /dev/null +++ b/tasks/savitskiy-al/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/savitskiy-al/lab_3/worker-2/Dockerfile b/tasks/savitskiy-al/lab_3/worker-2/Dockerfile new file mode 100644 index 0000000..7f6b963 --- /dev/null +++ b/tasks/savitskiy-al/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/savitskiy-al/lab_3/worker-2/Models/Pilots/Create/PilotForm.cs b/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Create/PilotForm.cs new file mode 100644 index 0000000..d996f92 --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Create/PilotForm.cs @@ -0,0 +1,13 @@ +namespace worker_2.Models.Pilots.Create +{ + public class PilotForm + { + public string FullName { get; set; } + + public Guid AeroplaneId { get; set; } + + public DateTime? BirthDate { get; set; } + + public int Experience { get; set; } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Get/PilotResult.cs b/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Get/PilotResult.cs new file mode 100644 index 0000000..78a7e8b --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Get/PilotResult.cs @@ -0,0 +1,15 @@ +namespace worker_2.Models.Pilots.Get +{ + public class PilotResult + { + public Guid PilotId { get; set; } + + public string FullName { get; set; } + + public Guid AeroplaneId { get; set; } + + public DateTime? BirthDate { get; set; } + + public int Experience { get; set; } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/GetList/PilotResult.cs b/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/GetList/PilotResult.cs new file mode 100644 index 0000000..7486f5e --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/GetList/PilotResult.cs @@ -0,0 +1,15 @@ +namespace worker_2.Models.Pilots.GetList +{ + public class PilotResult + { + public Guid PilotId { get; set; } + + public string FullName { get; set; } + + public Guid AeroplaneId { get; set; } + + public DateTime? BirthDate { get; set; } + + public int Experience { get; set; } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Update/PilotForm.cs b/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Update/PilotForm.cs new file mode 100644 index 0000000..4a1d309 --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-2/Models/Pilots/Update/PilotForm.cs @@ -0,0 +1,13 @@ +namespace worker_2.Models.Pilots.Update +{ + public class PilotForm + { + public string FullName { get; set; } + + public Guid AeroplaneId { get; set; } + + public DateTime? BirthDate { get; set; } + + public int Experience { get; set; } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-2/Program.cs b/tasks/savitskiy-al/lab_3/worker-2/Program.cs new file mode 100644 index 0000000..3b0d3fd --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-2/Program.cs @@ -0,0 +1,182 @@ + +using Microsoft.AspNetCore.Mvc; +using System.Text; + + +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("/Pilots/", async () => +{ + var result = (await Storage.GetInstance()).Pilots.Select(r => new worker_2.Models.Pilots.GetList.PilotResult() + { + AeroplaneId = r.AeroplaneId, + FullName = r.FullName, + BirthDate = r.BirthDate, + Experience = r.Experience, + PilotId = r.PilotId, + }).ToArray(); + + return Results.Ok(result); +}) +.WithName("List") +.WithOpenApi(); + +app.MapGet("/Pilots/{pilotId}", async (Guid pilotId) => +{ + var pilot = (await Storage.GetInstance()).Pilots.FirstOrDefault(r => r.PilotId == pilotId); + if (pilot is null) + { + return Results.NotFound($"Не найден пилот {pilotId}"); + } + + return Results.Json(new worker_2.Models.Pilots.Get.PilotResult() + { + AeroplaneId = pilot.AeroplaneId, + FullName = pilot.FullName, + BirthDate = pilot.BirthDate, + Experience = pilot.Experience, + PilotId = pilot.PilotId, + }); +}) +.WithName("Get") +.WithOpenApi(); + +app.MapPost("/Pilots/", async ([FromBody] worker_2.Models.Pilots.Create.PilotForm request) => +{ + if ((await Storage.GetInstance()).Airoplanes.FirstOrDefault(x => x.AeroplaneId == request.AeroplaneId) is null) + { + return Results.NotFound($"Не найден самолет {request.AeroplaneId}"); + } + Guid pilotId = Guid.NewGuid(); + (await Storage.GetInstance()).Pilots.Add(new PilotDal() + { + PilotId = pilotId, + BirthDate = request.BirthDate, + AeroplaneId = request.AeroplaneId, + FullName = request.FullName, + Experience = request.Experience, + }); + + return Results.Ok(pilotId); +}) +.WithName("Create") +.WithOpenApi(); + +app.MapPatch("/Pilots/{pilotId}", async (Guid pilotId, [FromBody] worker_2.Models.Pilots.Create.PilotForm request) => +{ + var pilot = (await Storage.GetInstance()).Pilots.FirstOrDefault(r => r.PilotId == pilotId); + if (pilot is null) + { + return Results.NotFound($"Не найден пилот {pilotId}"); + } + + if((await Storage.GetInstance()).Airoplanes.FirstOrDefault(x => x.AeroplaneId == request.AeroplaneId) is null) + { + return Results.NotFound($"Не найдена самолет {request.AeroplaneId}"); + } + + if (!string.IsNullOrEmpty(request.FullName)) + { + pilot.FullName = request.FullName; + } + + pilot.AeroplaneId = request.AeroplaneId; + pilot.Experience = request.Experience; + pilot.BirthDate = request.BirthDate; + + return Results.Ok(pilot); +}) +.WithName("Update") +.WithOpenApi(); + +app.MapDelete("/Pilots/{pilotId}", async (Guid pilotId) => +{ + var pilot = (await Storage.GetInstance()).Pilots.FirstOrDefault(r => r.PilotId == pilotId); + if (pilot is null) + { + return Results.NotFound($"Не найден пилот {pilotId}"); + } + + (await Storage.GetInstance()).Pilots.Remove(pilot); + return Results.Ok(pilotId); +}) +.WithName("Delete") +.WithOpenApi(); + +app.Run(); + + +public class PilotDal +{ + public Guid PilotId { get; set; } + + public string FullName { get; set; } + + public Guid AeroplaneId { get; set; } + + public DateTime? BirthDate { get; set; } + + public int Experience { get; set; } +} + +public class AiroplaneDal +{ + public Guid AeroplaneId { get; set; } + + public string Name { get; set; } + + public DateTime ProductionDate { get; set; } + + public int Weght { get; set; } + + public int Lenght { get; set; } + +} + +public class Storage +{ + private static Random rand = new Random(); + + public AiroplaneDal[] Airoplanes { get; set; } + + public List Pilots { get; set; } + + public static Storage Instance { get; set; } + + private Storage() { } + + + public static async Task GetInstance() + { + if(Instance is not null) + { + return Instance; + } + + var client = new HttpClient(); + string reqUrl = $"https://localhost:7027/Aeroplanes/"; + Instance = new Storage(); + Instance.Airoplanes = await client.GetFromJsonAsync(reqUrl); + Instance.Pilots = new List() + { + new PilotDal() { PilotId = Guid.NewGuid(), BirthDate = DateTime.Today.AddDays(-100), AeroplaneId = Instance.Airoplanes[rand.Next(Instance.Airoplanes.Length)].AeroplaneId, FullName = "Савицкий Александр Вячеславович", Experience = 10 }, + new PilotDal() { PilotId = Guid.NewGuid(), BirthDate = DateTime.Today.AddDays(-150), AeroplaneId = Instance.Airoplanes[rand.Next(Instance.Airoplanes.Length)].AeroplaneId, FullName = "Гайдулян Максим Петрович", Experience = 15 } + }; + + return Instance; + } +} + diff --git a/tasks/savitskiy-al/lab_3/worker-2/Properties/launchSettings.json b/tasks/savitskiy-al/lab_3/worker-2/Properties/launchSettings.json new file mode 100644 index 0000000..c0a3346 --- /dev/null +++ b/tasks/savitskiy-al/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/savitskiy-al/lab_3/worker-2/appsettings.Development.json b/tasks/savitskiy-al/lab_3/worker-2/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-2/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/tasks/savitskiy-al/lab_3/worker-2/appsettings.json b/tasks/savitskiy-al/lab_3/worker-2/appsettings.json new file mode 100644 index 0000000..b41ccef --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-2/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/tasks/savitskiy-al/lab_3/worker-2/worker-2.csproj b/tasks/savitskiy-al/lab_3/worker-2/worker-2.csproj new file mode 100644 index 0000000..9e8d22f --- /dev/null +++ b/tasks/savitskiy-al/lab_3/worker-2/worker-2.csproj @@ -0,0 +1,15 @@ + + + + net8.0 + enable + enable + worker_2 + + + + + + + + diff --git a/tasks/savitskiy-al/lab_3/worker-2/worker-2.sln b/tasks/savitskiy-al/lab_3/worker-2/worker-2.sln new file mode 100644 index 0000000..8f8c96d --- /dev/null +++ b/tasks/savitskiy-al/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