From 3fdbc641513cca8a1fda5cd13e3aab8b83a4b848 Mon Sep 17 00:00:00 2001 From: oleggitea Date: Mon, 18 Dec 2023 16:35:00 +0400 Subject: [PATCH 1/4] commit1 --- tasks/dunaev-oi/.gitignore | 484 ++++++++++++++++++ tasks/dunaev-oi/README.md | 80 +++ tasks/dunaev-oi/docker-compose.yml | 15 + tasks/dunaev-oi/nginx.conf | 26 + tasks/dunaev-oi/pic/1.png | Bin 0 -> 18979 bytes tasks/dunaev-oi/pic/2.png | Bin 0 -> 47115 bytes tasks/dunaev-oi/pic/3.png | Bin 0 -> 19818 bytes tasks/dunaev-oi/pic/4.png | Bin 0 -> 18783 bytes tasks/dunaev-oi/pic/5.png | Bin 0 -> 13214 bytes tasks/dunaev-oi/static/index.html | 13 + tasks/dunaev-oi/worker-1/Dockerfile | 11 + tasks/dunaev-oi/worker-1/Program.cs | 112 ++++ .../worker-1/Properties/launchSettings.json | 38 ++ .../worker-1/appsettings.Development.json | 8 + tasks/dunaev-oi/worker-1/appsettings.json | 9 + tasks/dunaev-oi/worker-1/worker-1.csproj | 15 + tasks/dunaev-oi/worker-1/worker-1.sln | 22 + tasks/dunaev-oi/worker-2/Dockerfile | 11 + tasks/dunaev-oi/worker-2/Program.cs | 139 +++++ .../worker-2/Properties/launchSettings.json | 38 ++ .../worker-2/appsettings.Development.json | 8 + tasks/dunaev-oi/worker-2/appsettings.json | 9 + tasks/dunaev-oi/worker-2/worker-2.csproj | 15 + tasks/dunaev-oi/worker-2/worker-2.sln | 22 + 24 files changed, 1075 insertions(+) create mode 100644 tasks/dunaev-oi/.gitignore create mode 100644 tasks/dunaev-oi/README.md create mode 100644 tasks/dunaev-oi/docker-compose.yml create mode 100644 tasks/dunaev-oi/nginx.conf create mode 100644 tasks/dunaev-oi/pic/1.png create mode 100644 tasks/dunaev-oi/pic/2.png create mode 100644 tasks/dunaev-oi/pic/3.png create mode 100644 tasks/dunaev-oi/pic/4.png create mode 100644 tasks/dunaev-oi/pic/5.png create mode 100644 tasks/dunaev-oi/static/index.html create mode 100644 tasks/dunaev-oi/worker-1/Dockerfile create mode 100644 tasks/dunaev-oi/worker-1/Program.cs create mode 100644 tasks/dunaev-oi/worker-1/Properties/launchSettings.json create mode 100644 tasks/dunaev-oi/worker-1/appsettings.Development.json create mode 100644 tasks/dunaev-oi/worker-1/appsettings.json create mode 100644 tasks/dunaev-oi/worker-1/worker-1.csproj create mode 100644 tasks/dunaev-oi/worker-1/worker-1.sln create mode 100644 tasks/dunaev-oi/worker-2/Dockerfile create mode 100644 tasks/dunaev-oi/worker-2/Program.cs create mode 100644 tasks/dunaev-oi/worker-2/Properties/launchSettings.json create mode 100644 tasks/dunaev-oi/worker-2/appsettings.Development.json create mode 100644 tasks/dunaev-oi/worker-2/appsettings.json create mode 100644 tasks/dunaev-oi/worker-2/worker-2.csproj create mode 100644 tasks/dunaev-oi/worker-2/worker-2.sln diff --git a/tasks/dunaev-oi/.gitignore b/tasks/dunaev-oi/.gitignore new file mode 100644 index 0000000..0d46714 --- /dev/null +++ b/tasks/dunaev-oi/.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 \ No newline at end of file diff --git a/tasks/dunaev-oi/README.md b/tasks/dunaev-oi/README.md new file mode 100644 index 0000000..f21e688 --- /dev/null +++ b/tasks/dunaev-oi/README.md @@ -0,0 +1,80 @@ +# Отчет по лабораторной работе №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) +![](pic/4.png) + +## Реализация синхронного обмена + +Реализовал код, который вызывает сихронно данные из соседнего микросервиса. + +```cs +//worker-2 +app.MapGet("/Locations/", async () => +{ + var httpClient = new HttpClient(); + var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8080/"); + + return secondWorkerResponse.ToArray(); +}) +.WithName("GetBreeds") +.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) + +![](pic/5.png) + + + diff --git a/tasks/dunaev-oi/docker-compose.yml b/tasks/dunaev-oi/docker-compose.yml new file mode 100644 index 0000000..e9ca4b9 --- /dev/null +++ b/tasks/dunaev-oi/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/dunaev-oi/nginx.conf b/tasks/dunaev-oi/nginx.conf new file mode 100644 index 0000000..f649a4a --- /dev/null +++ b/tasks/dunaev-oi/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/dunaev-oi/pic/1.png b/tasks/dunaev-oi/pic/1.png new file mode 100644 index 0000000000000000000000000000000000000000..6043d51b99ac3824276ffd71170f1b749352ae16 GIT binary patch literal 18979 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 literal 0 HcmV?d00001 diff --git a/tasks/dunaev-oi/pic/2.png b/tasks/dunaev-oi/pic/2.png new file mode 100644 index 0000000000000000000000000000000000000000..476cbe9e131ec5674b172943a693408b8cb6f5f4 GIT binary patch literal 47115 zcmeFZXH=72*9M3MP$QzEsI;IcC{;Rw5JZtKC?!A$y;qT5BOoFoAiYiu4Xr zLkp1(2}Pun1SUR@zVm%Q=EtmAvu4d&?_P_Ln>(EQoPGA*XP;|dC!rcI6zDE6U7(_( zqEk|Q_KJ#%#)69K4BI&x%3s!6sTe4~PPx2NkfSQ?XIZ6OoV9wQ_JoS6A`(C{p{87) zf32wJLPd3{<@e924ySx`Dk@~A(z7R8o`!4K^QqTH>-V;-bl#c7u(O9Pfj8O4s@^(|}UAx;U#xC94 zyAIne*ubZ6Ox#RPPr~hQkLA5cn=G>H^&!lr#*CIi(XVcs!O1qIFMO*DAcZD-JyuFZ z$5qgne%#H1Gn9@}QN;~aV;v`#SFodRaL>E@0Vlw5$`~`FvtN~v--I=IZ~HhH90nE1 zL!*bQZH60bgoIRw5sxI-S1lcFxXMpXObbT7LJ`Os+dX%uOaHXkZ55!pxjj|jOz^c> zyxd7eW&57&q};@IXzTHsp#)l|Jtel)hbYa;QKgY0;QH!}IiWK(1sVWOCl{4}8eorO zvsy3EA>PQ}jEo!%1w8_XGq1J6w9ZrIi;Fo;Wh!NmG&fIhMf%(FSxYio;gBFypa$nt zGHL0wn{-0}gqskCVYZo1W)XGJE+*63JHxvs+!6H-QyZBMGml>?ITs*ENUcbEgH2oR z&FbM7ni(>FBUw*roxBczEqd=wSiw!(E|gvT-4|Ktc39)uyqlhTM<~NN$}Ea@2PWBZ z((R#yeAWewYV}91zZ1HJkFMo2C@7{s9&JteL@m@;5YIR6EDe_uhf=<5 ze7MLN_{p@y{8fdHK$Gm!+ha)m8?WT*nGI@j#@6v;9+2A1={(Prkp}g22zLhjdxGhSb>r6j9tZ0rPyypM|<``2(N?VLji^gLwj zjK#ca-~8Ac81K?v><*7JoA0i3ciO&yehk^oSWk96evXVy4d*ax3IpZLMT(o1*zy*i z{{xugGrWs1`obfRw$(Hz`67M<`% ztQYH5b-&X%7CZKDs_MR3$_TY==CXu5P-Wj74l}5|R z9YGzdtSASDy0Ra8GHCGBSU0s8R^3ywl7Ukix?zh%sBgR9G`r`AiMM1)K)GC>U8$xb9(MnH55P zlTk=FELN-OQ}7i|y_+U(?iZ)To$G<`bphArLzo!fjU$eyOI!Bn-*X-7iu?00!yus7 z6%~#oszDGxYF;49VwZ5=C@cfq0sTQ$U>R5YPChGWuPME=pt(#b7YkjQ+fn?u%sl_ z`6=<)9zj@j-T*2zD(#OIH;TM?R6=u+DQ^JU*I)Hqz{qC#&2U^9-Upd`G`)-Ite`wc zmEz!>QsQ3RrnkFsFzgsWi&uA*Jf&t>A1+`P1FRfR6l}6!R?hTj-jjvjv-= zH{`C;D%E{cXXuwUoJYA2;$Wl49$hp#Mb0QClG+iGkH2VP6XXdoEK{wlpsiyMxqTP6 z1ZtrKLMgT5An(mQO&$xq(`FDk?m;T++qi8tq>h=EHbh4^#hg(bXw_3z;40kaNY_FRB< zn>NX79r#{1oOcSea>|}*R9fpVN!~Xq{pnR2+UNvu;lAz~$Kxe#WvCI$n`t`)0dviq zh)N*|s7)^10{nihyK z(^npyCSIo93OWgp&Uk(Syu@|Gsa>>!R{FfBxI1gzKC zm_b_otNbSq0ZcuUjNx*pGZlLa9|X~x@~XgE8ZS;!ca@h~C{LT+kT)75*?#)E-K=TA zM>hrcU+X8koFMDNw(Er5upW#Lf#PdD{yoW<4I4J>{_hn8m25g2M9s*UtozW^0`UB5 zN8A>ge;bmjn`uJ2+zL#%H-4vW6UBQoc09KD`bXgBaYFy$M5&;s zFKD5H9HZvWk`fI^oua7!vtB!$-!ov10q3tLGD-x9w{c{qOp1+ehGX)|d&^K)z?eb{TO@DC zBjPz$W7>~wTnHo6u#8NI|J>=&yF__y&l7R{!8iX!L#yx6p;2b?=uZILu6neznpDGy z0cqLGw+2z{(r&mASfFUT9_#gylDg=rHw5=z#{x^G z4)DCbAbntQh8x|$nSj21U>$Q~W1IjAT!!=0Uyz{sJUio0bf9CA(BOFf>9wdJqSOvk zs)RZ9p0YsLlO(_^tEdD{-Ywk^x(Z`%gnv@=&tx#)WsDd{_$!**gBo{Vd>%cV zno4|#sE2C4HZpT-?_UM-Oe{FjQYM!@CVV?Ea-8X$vAXYq~RSfErJR2|uw$Q!qJ@Nl=nxT)RP8SAY5 z`2I1UUnb!Yj)J6^$(k>&jUSufLrYXDz&(DBkr1y!b)#M}oC5%bQ= z;XsfKzi)*Fz|Nk$GWZ3`cR5mn^Na(19O{*xe^_F8QPIq9qML(d@n~QF5-mfMpds(q ziXScXMuD^PbKU?Y(yqUvS%AWw6Wu57EC6SFABYpi_*59H@Ga0zg#&5b!3cEi*FD6+ zZ%5OhHGuhkg+I%bf4?V_dv!ict{oi`~3J=JkBN>&j(-RD+(Q$%mb3x2V#tY_poXEW)Lu;kePn zl&fgrs?v@Zes_JRji3oax?7O*()%+c*#lSoU*Bk{Yy%=#rSQd7{l5Z}rX10I088G_ zwLby@b+VR|)i#bQnY_P)nsK+-;u05S9Tjn4J#P_c);m&79fP!)FYNRxY@r8#0@@$& z=@-w8anam8c1QH*8s9KR*puFJb#C_ac9yAJ)PA*vEX$t~JYkDY`@K<sKJz3jRK2oaJ z-*2>grhlhx4eGKA4wv}x&~Cj_ck{9MD1g%&D5|J1PG4gj$LYyub*DtZeeg^P^mre4!Ahbn0@wA`yZrQO}7O2LnSdsm0J{_ z^}rPi!>;r5-^@Gj*qbOVr7LdQw9!L)ATMr_yDP|aWn65`Lhs(0Tk6GtDzrUN-0>3C zhTmODfV_#g;}@9w+G9u@c2-74#xF{UN!oDWFL>yZqbpEfWdj<{)cZB?QL>j z&!T~_C+q-R!YlvYR-g{I%2tXyU{Vl7GICqb_0P?a5+A z6FF!K0eZO57gG^08D~>s_9PIb69zOKpN=n)5&SH8>p9(u#A@y)7ce?3deO%zK>pM&6+X-Wmqo9y1%+$kXj9M>a zMRr%5Eg@S9{+5#Jw;JK1Lo0}r#2+IidTS)-eW1)fz#>BdzR~zRe7HQM+Yqcr$sioN z%0v%*EKfJWm8;vraB#5hYf{1){}TbSG}Dj7&L70%Omf`N(M|Gd_RmAon9vyB!v1c4 zDBe3Fy`(%xa@Av}CxCtiYb5^Yh@i^$;{_1qs3DTuE6W3gfggk#zqr?tj7EF>w21a$hQQ()FF+mC} zGy(9!pJ8TRs@v}0ZVz7_D}lJ$-(+ru{rDCzXhA^r;)@BD;mqRgqqiDWgw5u^k4s7+ z9PDBmOZv!N5$hQsXPW}s6bXQ*U%_1J}1V_>#zM`b(MY`&wt;XX$?`~{RiQBJW+6$Q=F#>_K$ZvWD~ zT=n{mB9GOLQGC20qrq9)xw2kQ0kQnXil!sJ)}Q+o-T-l4Qu&XTF{Bet2DRp7Mx-Do z_=Dp9_;seznz;*3^>IPOsjW2wM1RD52=B32I|5Asn6fd~E*h_~Anb`pyNHZ+rw+vS zK(eUHz~k*t$bTmJv!UA5dhX0JQqz6r#ZA(6DveD&o+NrUXhAp+?6qh<&q_mad}XFZ z(}KecJ9&&Qsn5apW=e62a0-!NUl}hbdaF}6j4p-uQ~m=+{aCJ>pU(DNuXxLGv-5y= z`saX+Nr(f3Il(@~ocI3LnJXanO4N_(3%br(yxaJxT~Icx;M0XOXY(0ClK!R#|T8f5yB2$38QP8ryj7gDB2z{i>a{t8EImX zGW_Z{(D7Sr>Giua^?4=A-+nutWKJ?}3cLhzeTcB14GKQbD0c89Y;?k14Cy`9Pp?c` zXV8Pb1_ESB+XuWNm68BK()^Kq+WID~@Du;<<{i}zflXl*7E*?D{#^$ctBz`~&qh{L z2b650s^URsDQ;})8T(&=4-Uw>SlHHl3c&LznAu;^gjccLf-)DR&uzLB&F5gS42R7S zPDBR$Y=u|lI@y8YY1lJF2C!52r%4B(@>_dEjII*~kF>2Iud@Xf&qO!`ypUgGa_|AX z44e(CAd_7V*1U`Rb6aIQ_mJKxT!z21wco;CHRyM%uk4GJe*5Ddm|$U01|W$~v;t#V=aUF-^-j+3|a zf8h%B>%9nc1sGA zH8xd61zu_?B4aPfmkM+w%uITTJ&vQf-!Fix>_oeq${JXm*i-+wp@t2`>UX*cn=4-) zZBGyNdngWU94)@hsLlCUU%Q~}N9yBnd{D(ww=6H|y@|$N{qw-D?TJFN(g_=~?c;}Q zb#YN$0iP=Ds_f4Gd;9Ij%iUCz-MC&nS6mQQ0vP!S|~4X)dD!)%%VF5v$gi0+mrMa^ zql=M(miz=Lv*$%=z_0nWlht+2aY4@s)2(JpY$ab{dxe*r z!$Md{P~Oji=Lz9Zo)SuF^B;)~(V)3yozBK4p{vlLW+s9wDJhdHTC&0CH?9_D-N4tZ zxI9wf%J3_2tRs8%9og1TRlZ^5GsG)DARVb_OQ*i=&Z ztl~?u9ee|XuTH4?f4d1Dh#;ra0nAoy+lKO$Cp~Sq0 zn|mZ@9fN^8qOJ^VFbG~s{$u0pZ#8H-&5LG6(-Ni&LvCEJ{rJnlaHo#Heql2iKBgUO zMsY^4@@x*5+dRiGR*u?RT$=%`I`Y+v9<0ni>Slk*Z(jLI$l6$YiW9(Zwr{@J^U+n* zSvW|?;Z4i-x(nRAOWBg^?Vu!xT4L|jqW=~gH7-#aeHuLDqrV?#b8W~Vh`&~wAy4&t z%5d{=EOGZ+5_WXFWH)#z9CNTQ=lGzOGaO)0K;v8fGQ~h}Fn8Al`k+<|GbjO52Y)K>ZsQ0fJ^E9np28Q40jj z*!bk+eKZoKRA>3e*3aFEJtZ_UHv!}p)LC`k3r8KjX34Q#-||KZStCUIn4gYiQ4sx&=|ZVCD1J@_XqBCm?(Y8Lh(Avo(xK2=nY8D zhNw%L9W|dhXCjj$-0!V^4r<(%OBojw_?}1Lb9E+d^ktj8;Qcv4divTv$H|1vz@e|wj>>I3{Aj6~QdT<{u((|fo^r=eFE1bUIV%)FAfQ`{Cc7d~ zpS_!XZ^Cj1?(GxyjBZ#TSM3vKmzQmh-`^=PaoK&mvMjm1A2eD8cMw&lr>_$|))&>F zS7pw1bbOGlQRUdEfoX`7m{E2~b0=a^HC7+v*^8EK@Lv-|$XNMgB-z%`Axpk1DJwNR>Wi=-6oQ*JMlg6-8f07QJvU{;WJK7IkYk!^(`kBsRuqEYlE5aBf4+KN1fAgK6z zHQMky+EFlRo|d&F!xcBc*Vbz!Y*@zM@SX3GSguOS-9CfIfSpwct#?+h06pK(lkl$& zgb+eQWxcAoS)Nw=w>KOsP*3)D7|mSL}06r5=;{*TeHv+-F7 zDOEY*r-tMFfPG_iC8aD@^$n?-i1W>J0`VxSdrjGg-c#58(&$$W_kzgpbCSKMa+o~# z=ui%8=;T{;=BiN*hH$On4B!`)kW0f|81=z9I!Emshe1+E=}3;*^7BAIm0SIi@6WnY z)PDE^CcPOcaI7XCci#Nh$Z|9!hE}L8IQis2RB~et;n^c zX-Are(&2I1>m+-tHbGQbub^4Lr^A(b=^e}RUDasW_R=`nKM_UN%lbi#$ymK-&((mjW7LfsQZUl!Els9N{mOoOe9_^rqL z`H+ujq>n;2xQD;zc!pcfxCc4<3LKc!KlZ}AB(WWc!qI3@C*barlJjpVUWIo&ra`kaClHJZpATSex8987Hlz-*C3~$k)cenBmA3k&AxwEd9mf z$3L(5W2KURzM4}YcN!mpGbW)9OsGQA65ey)6wE8IHGF04sW&pOeEYqYdf)!pljwyfJin?0VC1@F4 zF+b(S%}jwNcFH%Jx<3h40Vd$%qE{$%sDI=i+<)Zo=a>0> z+ZyCB-o+8tLma=SZC|C?8`#V)+GNS4WXJF1lSQR(zpmtOJGzHPo_3R3zq{+Kaz#E_ z#Lj94b7}msx*5L`+bcRyJ>KNA+dcP*HY=|zB}_kP?{sW&F)tF~Z4Z-*U>%6C>nO|b zsnja=Dc`=Nw?KWHh>&Ok$XCXehOjmy{H$F|b$3M5pczrTe;h{R`o*1$(2vWjvkXq7 z!T~ItCm3<-NuU8CzV!(<#qDKApnNjCo3Ddzu2FGb9sR^i%#-I%1WI|hRC>g16mB?N zhSET`EncE#a^Jj3cmAxnMX}FQ@pM6MnO>VcyKsL?#bQYH-7|9#yXav@nB0v7sbk;D zfa4f~`wZ6m$B4V*gHUtKWsj54=v1E*lVs0LS$XDkEn9yZ%*tD6NW4(e{XBGp1m^(Xvv-#L;Rt`d$6Wpz`y~G$QQp#?s!fqi9*m^<>f^qP zG(sk1`gO*0cXg~^CcS45DTK(=@#(MSrJpy$S+^+rrMxb!^e^W3sWqib1g(bu>hRU8 ztyIMrdK365)m>c$uC(ZPPmGF3#7h(P`)0tkV!eYcH)fJWK3DKB|3M)sU%+a-_wi03a*b?Z>1h=)Eu$?G;^EYG)7(%B+m!W_+q &%+1o%yz0^dz`mZt+25 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 Z9ErpqHEV3rFWT!B16`BrMc163{tMAb`VIg9 literal 0 HcmV?d00001 diff --git a/tasks/dunaev-oi/pic/3.png b/tasks/dunaev-oi/pic/3.png new file mode 100644 index 0000000000000000000000000000000000000000..4dc6a1a09df7826c595ee4aa14fbfa6568566692 GIT binary patch literal 19818 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 literal 0 HcmV?d00001 diff --git a/tasks/dunaev-oi/pic/4.png b/tasks/dunaev-oi/pic/4.png new file mode 100644 index 0000000000000000000000000000000000000000..b9450ce0b1404e8da61f2e45a7716464a58f874e GIT binary patch literal 18783 zcmeIaXHb)Ew?B&dh|ePecBCsR*Z`$U4N4PfA_~$)dP}4mAc=}nL_kD9N!wSKEi67N`<3Llg> zC?FspYAA#T#}XooVEbg)>73Q8gk*&FvvdKt@p4%5O}4o z-Lo}LIE1s_-cCD|k}Rp&#iWvE>?f{8ZTgA>pfQ|F^zl%9I5+aDTG;Mt6Tx-;GJiRL z=v13p*f2p1H>xFk=uk((k+Yt2T^aQ;+aX$yDe=FMUlyrcBIoKF5VP|8WMzIyj5 z{SDUN8(Feb^{Q>JUTck7)EpIWPK88YSW;(#pc}dMkA5BmpJR%ZR%N!T+Lp!4}KNTCT+Y`V6xbn4u!I$yzuv6y}zo_^xMswgXVLh zuq{K5)!>iBV{@tn+pqJYSDV*$P#TXmPpNcgDyGk*=veWVYj|BuE6(_WzJj&x`U|)| zdklZu&8;9We8fTHFo#6uY4AqY=m;dHSFlzYwW6Z6kQW-*-$+ms7{AP`kKWcfC9z`r zUket%)J8Fuw`!CYCC@bViYDkH?|61|?~+=a1vT{KAx^SsSVht9uk-E2u#FixC)uRZ zpn-d&N2Niyx!l#`;t8la5f$Nk0dMRT9qNBX#6+(rxm_{OQpzB6<~238DDxDb z_`-rxUa{a4K;YYDJ>;t^PRc4>m4gXX?@4)8YC`O{dDXMMlH+}BWMK~Ll+Dz=%3 z91lryj;1!z8w$9U`QB5-1p|FitjTB)r^-cA@9DL3tGHdL)<%!&T#_57FfW4Wr!ksq z5`S~6FA{sUVC#p%>;b^mGpe|*^CDa)6~OxvNNhA4sd7?~<@`P{_aRo~trG}ypGk)8 zZrM&Cq1>okC9s+v!?W;41f$Cyd)JjsBoJ{Mi?zqtRAd2{Z4KM8ouWNlC}c+#K;n4S zn*ZLw2LItp%`_}~MSW6@y^5-#=7s-$cA$+GX0`8Yy1eBpw{YKwn2t6{BZP9+9Jz*uZdjk9P9@OKM9 z&rHS3B4D!7D|L(yw4Y*bfkWE`yW0g+%9O>%w|%0zhjGi;{5g4HeavcjO_Cd;3F<8w8wC)ZOVM-3=< z2EVi8B!O?zt+YE&%4xs*dOpip&W*cl@Aa$PMguMjo=w{t!q~`PsCYTifY-lFi&@a2 zZuY3+M?LBja4RafP(E9_cX_nkwi>~BrU>ES>tk3GgbMq(fWTMQlql?h5{^UP8vfnS zd^VyAUsL}h-7%45NTm0geb8v_H~qK4Up@!9UTS(~S?}>sS==2}3`|!TdHvRyMSVlc zT6tp%RdpQM1@onu_U73$s4DEMg^ni$k+V6BxJ^!|yGtQosb|El z;tCh|wpoi{DaE1pw;PEn1<&zr( z+B$o4$hw<_+lAyZdBuhx3VP}$0cFusdQ9&h0l>~;5uJ&|x$qcnyXw#~b=bNX%)RVN zOM}|!a##K)lU@v>dqj>$1BxJSJ#Y1M0K3wALr_0=xEIh*~==@o@OL1HqO|mzP@v(ZmbrE?tV)aZ#c}jf|Zyv;JJ{5&58YYr==vg=^{2%NSu?KS2>%)jbkxAg&^XBZ?IN4!OQbd|P4<=_Sb*X;g zdfNR8W0~!ywggSH-KQO|?#m^u9&=br&(U3P{FKTH5S^A*d9U}hX|ezQ&MzoPWPc;q3=VR|Dxm}uC8Vn5YfEM*yP~QacB;DWIWqs_HIOMhOD-oeHop5&A zURe8FSdA%28rUKs;9B?SC3?vcw0wQ5V)I6?y&EK)^Z7=!>&`dBiEJonYAwYdPSc-R zC5{ko(+ZgY$_8z%`uoI43qb8nG24_ibf=lOLz&wryJaAUnV3+_a*4>c$X5A@T~G?! zYI`m2p2Om}=oVWw!1Cg7W3Gyq zYpK0q7m8sz1fPhG@t&^ms)~&C12oFvOa2WXyFm$A<9eDkSN#Hy`V`Ce+od΋wk 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 Xb{{@VEgAc>A7;i@M%6bTKL39JH8u3G literal 0 HcmV?d00001 diff --git a/tasks/dunaev-oi/pic/5.png b/tasks/dunaev-oi/pic/5.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ae85df453b22b7b2c24268cab468166639797e GIT binary patch literal 13214 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 + + + + + Тестовое приложение для л/р 3 + + +

Дунаев О.И. ИСЭбд-41.

+

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

+

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

+ + \ No newline at end of file diff --git a/tasks/dunaev-oi/worker-1/Dockerfile b/tasks/dunaev-oi/worker-1/Dockerfile new file mode 100644 index 0000000..13313fb --- /dev/null +++ b/tasks/dunaev-oi/worker-1/Dockerfile @@ -0,0 +1,11 @@ +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env +WORKDIR /app + +COPY . ./ +RUN dotnet restore +RUN dotnet publish -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:7.0 +WORKDIR /app +COPY --from=build-env /app/out . +ENTRYPOINT ["dotnet", "worker-1.dll"] \ No newline at end of file diff --git a/tasks/dunaev-oi/worker-1/Program.cs b/tasks/dunaev-oi/worker-1/Program.cs new file mode 100644 index 0000000..47a070f --- /dev/null +++ b/tasks/dunaev-oi/worker-1/Program.cs @@ -0,0 +1,112 @@ + +List pets = new() +{ + new Pets() { Uuid= Guid.Parse("6a1b4a72-5669-41fe-8d5b-106dc86f58bd"), Animals = "Кот", Breed = "Бигль"}, + new Pets() { Uuid= Guid.Parse("464bbdb8-39c0-4644-b9c0-3df1c484ea7e"), Animals = "Собака", Breed = "Мейн-Кун"}, + new Pets() { Uuid= Guid.Parse("f8692bea-b7e6-4164-b564-a921f16c35c9"), Animals = "Хомяк", Breed = "Лемминг"}, +}; + +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 pets.Select(r => new PetEntityDto() + { + Uuid = r.Uuid, + Animals = r.Animals, + Breed = r.Breed, + }); +}) +.WithName("GetPets") +.WithOpenApi(); + +app.MapGet("/{uuid}", (Guid uuid) => +{ + var pet = pets.FirstOrDefault(r => r.Uuid == uuid); + if (pet == null) + return Results.NotFound(); + return Results.Json(new PetEntityDto() + { + Uuid = pet.Uuid, + Animals = pet.Animals, + Breed = pet.Breed, + }); +}) +.WithName("GetPetByGUID") +.WithOpenApi(); + +app.MapPost("/{animals}/{breed}", (string Animals, string Breed) => +{ + Guid NewGuid = Guid.NewGuid(); + pets.Add(new Pets() { Uuid = NewGuid, Animals = (string)Animals, Breed = (string)Breed}); + + var pet = pets.FirstOrDefault(r => r.Uuid == NewGuid); + if (pet == null) + return Results.NotFound(); + return Results.Json(new PetEntityDto() + { + Uuid = pet.Uuid, + Animals = pet.Animals, + Breed = pet.Breed, + }); +}) +.WithName("PostPet") +.WithOpenApi(); + +app.MapPatch("/{uuid}/{animals}/{breed}", (Guid uuid, string ?animals, string ?breed) => +{ + var pet = pets.FirstOrDefault(r => r.Uuid == uuid); + if (pet == null) + return Results.NotFound(); + if (animals != null) pet.Animals = animals; + if (breed != null) pet.Breed = breed; + + return Results.Json(new PetEntityDto() + { + Uuid = pet.Uuid, + Animals = pet.Animals, + Breed = pet.Breed, + }); +}) +.WithName("UpdatePet") +.WithOpenApi(); + +app.MapDelete("/{uuid}", (Guid uuid) => +{ + var pet = pets.FirstOrDefault(r => r.Uuid == uuid); + if (pet == null) + return Results.NotFound(); + pets.Remove(pet); + return Results.Json(new PetEntityDto() + { + Uuid = pet.Uuid, + Animals = pet.Animals, + Breed = pet.Breed, + }); +}) +.WithName("DeletePetByGUID") +.WithOpenApi(); + +app.Run(); + +public class Pets +{ + public Guid Uuid { get; set; } + public string Animals { get; set; } = string.Empty; + public string Breed { get; set; } = string.Empty; +} + +public class PetEntityDto : Pets { } \ No newline at end of file diff --git a/tasks/dunaev-oi/worker-1/Properties/launchSettings.json b/tasks/dunaev-oi/worker-1/Properties/launchSettings.json new file mode 100644 index 0000000..bab6706 --- /dev/null +++ b/tasks/dunaev-oi/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/dunaev-oi/worker-1/appsettings.Development.json b/tasks/dunaev-oi/worker-1/appsettings.Development.json new file mode 100644 index 0000000..3b823ef --- /dev/null +++ b/tasks/dunaev-oi/worker-1/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/tasks/dunaev-oi/worker-1/appsettings.json b/tasks/dunaev-oi/worker-1/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/tasks/dunaev-oi/worker-1/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/tasks/dunaev-oi/worker-1/worker-1.csproj b/tasks/dunaev-oi/worker-1/worker-1.csproj new file mode 100644 index 0000000..4390277 --- /dev/null +++ b/tasks/dunaev-oi/worker-1/worker-1.csproj @@ -0,0 +1,15 @@ + + + + net7.0 + enable + enable + worker_1 + + + + + + + + diff --git a/tasks/dunaev-oi/worker-1/worker-1.sln b/tasks/dunaev-oi/worker-1/worker-1.sln new file mode 100644 index 0000000..fc4131f --- /dev/null +++ b/tasks/dunaev-oi/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/dunaev-oi/worker-2/Dockerfile b/tasks/dunaev-oi/worker-2/Dockerfile new file mode 100644 index 0000000..8f44787 --- /dev/null +++ b/tasks/dunaev-oi/worker-2/Dockerfile @@ -0,0 +1,11 @@ +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env +WORKDIR /app + +COPY . ./ +RUN dotnet restore +RUN dotnet publish -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:7.0 +WORKDIR /app +COPY --from=build-env /app/out . +ENTRYPOINT ["dotnet", "worker-2.dll"] \ No newline at end of file diff --git a/tasks/dunaev-oi/worker-2/Program.cs b/tasks/dunaev-oi/worker-2/Program.cs new file mode 100644 index 0000000..402c6ed --- /dev/null +++ b/tasks/dunaev-oi/worker-2/Program.cs @@ -0,0 +1,139 @@ + +List locations = new() +{ + new Location() { Uuid= Guid.NewGuid(), Habitat = "Америка", IsSingleLocation = true, IdBreed = Guid.Parse("6a1b4a72-5669-41fe-8d5b-106dc86f58bd") }, + new Location() { Uuid= Guid.NewGuid(), Habitat = "Россия", IsSingleLocation = false, IdBreed = Guid.Parse("f8692bea-b7e6-4164-b564-a921f16c35c9") }, + new Location() { Uuid= Guid.NewGuid(), Habitat = "Китай", IsSingleLocation = false, IdBreed = Guid.Parse("464bbdb8-39c0-4644-b9c0-3df1c484ea7e") }, + new Location() { Uuid= Guid.NewGuid(), Habitat = "Хорватия", IsSingleLocation = true, IdBreed = Guid.Parse("464bbdb8-39c0-4644-b9c0-3df1c484ea7e") }, +}; + +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 locations.Select(r => new LocationEntityDto() + { + Uuid = r.Uuid, + Habitat = r.Habitat, + IsSingleLocation = r.IsSingleLocation, + IdBreed = r.IdBreed, + }); +}) +.WithName("GetLocations") +.WithOpenApi(); + +app.MapGet("/{uuid}", (Guid uuid) => +{ + var location = locations.FirstOrDefault(r => r.Uuid == uuid); + if (location == null) + return Results.NotFound(); + return Results.Json(new LocationEntityDto() + { + Uuid = location.Uuid, + Habitat = location.Habitat, + IsSingleLocation = location.IsSingleLocation, + IdBreed = location.IdBreed, + }); +}) +.WithName("GetLocationByGUID") +.WithOpenApi(); + +app.MapPost("/{habitat}/{isSingleLocation}/{idBreed}", (string? Habitat, bool IsSingleLocation, Guid IdBreed) => +{ + Guid NewGuid = Guid.NewGuid(); + locations.Add(new Location() { Uuid = NewGuid, Habitat = (string)Habitat, IsSingleLocation = (bool)IsSingleLocation, IdBreed = (Guid)IdBreed }); + + var location = locations.FirstOrDefault(r => r.Uuid == NewGuid); + if (location == null) + return Results.NotFound(); + return Results.Json(new LocationEntityDto() + { + Uuid = location.Uuid, + Habitat = location.Habitat, + IsSingleLocation = location.IsSingleLocation, + IdBreed = location.IdBreed, + }); +}) +.WithName("PostLocation") +.WithOpenApi(); + +app.MapPatch("/{uuid}/{habitat}/{isSingleLocation}/{idBreed}", (Guid uuid, string ?habitat, bool isSingleLocation, Guid idBreed) => +{ + var location = locations.FirstOrDefault(r => r.Uuid == uuid); + if (location == null) + return Results.NotFound(); + if (habitat != ",") location.Habitat = habitat; + if (isSingleLocation != location.IsSingleLocation) location.IsSingleLocation = isSingleLocation; + if (idBreed != location.IdBreed) location.IdBreed = idBreed; + + return Results.Json(new LocationEntityDto() + { + Uuid = location.Uuid, + Habitat = location.Habitat, + IsSingleLocation = location.IsSingleLocation, + IdBreed = location.IdBreed, + }); +}) +.WithName("UpdateLocation") +.WithOpenApi(); + +app.MapDelete("/{uuid}", (Guid uuid) => +{ + var location = locations.FirstOrDefault(r => r.Uuid == uuid); + if (location == null) + return Results.NotFound(); + locations.Remove(location); + return Results.Json(new LocationEntityDto() + { + Uuid = location.Uuid, + Habitat = location.Habitat, + IsSingleLocation = location.IsSingleLocation, + IdBreed = location.IdBreed, + }); +}) +.WithName("DeleteLocation") +.WithOpenApi(); + +app.MapGet("/Locations/", async () => +{ + var httpClient = new HttpClient(); + var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8080/"); + + return secondWorkerResponse.ToArray(); +}) +.WithName("GetBreeds") +.WithOpenApi(); + +app.Run(); + +public class Location +{ + public Guid Uuid { get; set; } + public string Habitat { get; set; } = string.Empty; + public bool IsSingleLocation { get; set; } + public Guid IdBreed { get; set; } +} + +public class LocationEntityDto : Location { } + +public class Breeds +{ + public Guid Uuid { get; set; } + public string Animals { get; set; } = string.Empty; + public string Breed { get; set; } = string.Empty; +} + +public class BreedEntityDto : Breeds { } \ No newline at end of file diff --git a/tasks/dunaev-oi/worker-2/Properties/launchSettings.json b/tasks/dunaev-oi/worker-2/Properties/launchSettings.json new file mode 100644 index 0000000..c0a3346 --- /dev/null +++ b/tasks/dunaev-oi/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/dunaev-oi/worker-2/appsettings.Development.json b/tasks/dunaev-oi/worker-2/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/tasks/dunaev-oi/worker-2/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/tasks/dunaev-oi/worker-2/appsettings.json b/tasks/dunaev-oi/worker-2/appsettings.json new file mode 100644 index 0000000..b41ccef --- /dev/null +++ b/tasks/dunaev-oi/worker-2/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/tasks/dunaev-oi/worker-2/worker-2.csproj b/tasks/dunaev-oi/worker-2/worker-2.csproj new file mode 100644 index 0000000..74f764c --- /dev/null +++ b/tasks/dunaev-oi/worker-2/worker-2.csproj @@ -0,0 +1,15 @@ + + + + net7.0 + enable + enable + worker_2 + + + + + + + + diff --git a/tasks/dunaev-oi/worker-2/worker-2.sln b/tasks/dunaev-oi/worker-2/worker-2.sln new file mode 100644 index 0000000..8f8c96d --- /dev/null +++ b/tasks/dunaev-oi/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 From 57ba19a35ab7722f663aa79535e028075d5d12d1 Mon Sep 17 00:00:00 2001 From: oleggitea Date: Thu, 21 Dec 2023 00:36:09 +0400 Subject: [PATCH 2/4] =?UTF-8?q?commit=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- distributed-computing.sln | 43 ++++++++++++++++++ tasks/dunaev-oi/{ => lab3}/.gitignore | 0 tasks/dunaev-oi/{ => lab3}/README.md | 0 tasks/dunaev-oi/{ => lab3}/docker-compose.yml | 0 tasks/dunaev-oi/{ => lab3}/nginx.conf | 0 tasks/dunaev-oi/{ => lab3}/pic/1.png | Bin tasks/dunaev-oi/{ => lab3}/pic/2.png | Bin tasks/dunaev-oi/{ => lab3}/pic/3.png | Bin tasks/dunaev-oi/{ => lab3}/pic/4.png | Bin tasks/dunaev-oi/{ => lab3}/pic/5.png | Bin tasks/dunaev-oi/{ => lab3}/static/index.html | 0 .../dunaev-oi/{ => lab3}/worker-1/Dockerfile | 0 .../dunaev-oi/{ => lab3}/worker-1/Program.cs | 0 .../worker-1/Properties/launchSettings.json | 0 .../worker-1/appsettings.Development.json | 0 .../{ => lab3}/worker-1/appsettings.json | 0 .../{ => lab3}/worker-1/worker-1.csproj | 0 .../{ => lab3}/worker-1/worker-1.sln | 0 .../dunaev-oi/{ => lab3}/worker-2/Dockerfile | 0 .../dunaev-oi/{ => lab3}/worker-2/Program.cs | 0 .../worker-2/Properties/launchSettings.json | 0 .../worker-2/appsettings.Development.json | 0 .../{ => lab3}/worker-2/appsettings.json | 0 .../{ => lab3}/worker-2/worker-2.csproj | 0 .../{ => lab3}/worker-2/worker-2.sln | 0 25 files changed, 43 insertions(+) create mode 100644 distributed-computing.sln rename tasks/dunaev-oi/{ => lab3}/.gitignore (100%) rename tasks/dunaev-oi/{ => lab3}/README.md (100%) rename tasks/dunaev-oi/{ => lab3}/docker-compose.yml (100%) rename tasks/dunaev-oi/{ => lab3}/nginx.conf (100%) rename tasks/dunaev-oi/{ => lab3}/pic/1.png (100%) rename tasks/dunaev-oi/{ => lab3}/pic/2.png (100%) rename tasks/dunaev-oi/{ => lab3}/pic/3.png (100%) rename tasks/dunaev-oi/{ => lab3}/pic/4.png (100%) rename tasks/dunaev-oi/{ => lab3}/pic/5.png (100%) rename tasks/dunaev-oi/{ => lab3}/static/index.html (100%) rename tasks/dunaev-oi/{ => lab3}/worker-1/Dockerfile (100%) rename tasks/dunaev-oi/{ => lab3}/worker-1/Program.cs (100%) rename tasks/dunaev-oi/{ => lab3}/worker-1/Properties/launchSettings.json (100%) rename tasks/dunaev-oi/{ => lab3}/worker-1/appsettings.Development.json (100%) rename tasks/dunaev-oi/{ => lab3}/worker-1/appsettings.json (100%) rename tasks/dunaev-oi/{ => lab3}/worker-1/worker-1.csproj (100%) rename tasks/dunaev-oi/{ => lab3}/worker-1/worker-1.sln (100%) rename tasks/dunaev-oi/{ => lab3}/worker-2/Dockerfile (100%) rename tasks/dunaev-oi/{ => lab3}/worker-2/Program.cs (100%) rename tasks/dunaev-oi/{ => lab3}/worker-2/Properties/launchSettings.json (100%) rename tasks/dunaev-oi/{ => lab3}/worker-2/appsettings.Development.json (100%) rename tasks/dunaev-oi/{ => lab3}/worker-2/appsettings.json (100%) rename tasks/dunaev-oi/{ => lab3}/worker-2/worker-2.csproj (100%) rename tasks/dunaev-oi/{ => lab3}/worker-2/worker-2.sln (100%) diff --git a/distributed-computing.sln b/distributed-computing.sln new file mode 100644 index 0000000..4c13b1b --- /dev/null +++ b/distributed-computing.sln @@ -0,0 +1,43 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tasks", "tasks", "{3DD28E1E-BF65-4A84-B958-119AC05CB9F1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "moiseev-vv", "moiseev-vv", "{A4DA5D04-2810-4123-9E79-81A75954DF92}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lab_2", "lab_2", "{9E89D26D-D1D0-4C6A-9123-B4D0F78F2B8E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "worker-1", "tasks\moiseev-vv\lab_2\worker-1\worker-1.csproj", "{961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "worker-2", "tasks\moiseev-vv\lab_2\worker-2\worker-2.csproj", "{F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}.Release|Any CPU.Build.0 = Release|Any CPU + {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {A4DA5D04-2810-4123-9E79-81A75954DF92} = {3DD28E1E-BF65-4A84-B958-119AC05CB9F1} + {9E89D26D-D1D0-4C6A-9123-B4D0F78F2B8E} = {A4DA5D04-2810-4123-9E79-81A75954DF92} + {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7} = {9E89D26D-D1D0-4C6A-9123-B4D0F78F2B8E} + {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2} = {9E89D26D-D1D0-4C6A-9123-B4D0F78F2B8E} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0D6B15FE-84E3-4AD3-86FC-0FDEA1FAFAC8} + EndGlobalSection +EndGlobal diff --git a/tasks/dunaev-oi/.gitignore b/tasks/dunaev-oi/lab3/.gitignore similarity index 100% rename from tasks/dunaev-oi/.gitignore rename to tasks/dunaev-oi/lab3/.gitignore diff --git a/tasks/dunaev-oi/README.md b/tasks/dunaev-oi/lab3/README.md similarity index 100% rename from tasks/dunaev-oi/README.md rename to tasks/dunaev-oi/lab3/README.md diff --git a/tasks/dunaev-oi/docker-compose.yml b/tasks/dunaev-oi/lab3/docker-compose.yml similarity index 100% rename from tasks/dunaev-oi/docker-compose.yml rename to tasks/dunaev-oi/lab3/docker-compose.yml diff --git a/tasks/dunaev-oi/nginx.conf b/tasks/dunaev-oi/lab3/nginx.conf similarity index 100% rename from tasks/dunaev-oi/nginx.conf rename to tasks/dunaev-oi/lab3/nginx.conf diff --git a/tasks/dunaev-oi/pic/1.png b/tasks/dunaev-oi/lab3/pic/1.png similarity index 100% rename from tasks/dunaev-oi/pic/1.png rename to tasks/dunaev-oi/lab3/pic/1.png diff --git a/tasks/dunaev-oi/pic/2.png b/tasks/dunaev-oi/lab3/pic/2.png similarity index 100% rename from tasks/dunaev-oi/pic/2.png rename to tasks/dunaev-oi/lab3/pic/2.png diff --git a/tasks/dunaev-oi/pic/3.png b/tasks/dunaev-oi/lab3/pic/3.png similarity index 100% rename from tasks/dunaev-oi/pic/3.png rename to tasks/dunaev-oi/lab3/pic/3.png diff --git a/tasks/dunaev-oi/pic/4.png b/tasks/dunaev-oi/lab3/pic/4.png similarity index 100% rename from tasks/dunaev-oi/pic/4.png rename to tasks/dunaev-oi/lab3/pic/4.png diff --git a/tasks/dunaev-oi/pic/5.png b/tasks/dunaev-oi/lab3/pic/5.png similarity index 100% rename from tasks/dunaev-oi/pic/5.png rename to tasks/dunaev-oi/lab3/pic/5.png diff --git a/tasks/dunaev-oi/static/index.html b/tasks/dunaev-oi/lab3/static/index.html similarity index 100% rename from tasks/dunaev-oi/static/index.html rename to tasks/dunaev-oi/lab3/static/index.html diff --git a/tasks/dunaev-oi/worker-1/Dockerfile b/tasks/dunaev-oi/lab3/worker-1/Dockerfile similarity index 100% rename from tasks/dunaev-oi/worker-1/Dockerfile rename to tasks/dunaev-oi/lab3/worker-1/Dockerfile diff --git a/tasks/dunaev-oi/worker-1/Program.cs b/tasks/dunaev-oi/lab3/worker-1/Program.cs similarity index 100% rename from tasks/dunaev-oi/worker-1/Program.cs rename to tasks/dunaev-oi/lab3/worker-1/Program.cs diff --git a/tasks/dunaev-oi/worker-1/Properties/launchSettings.json b/tasks/dunaev-oi/lab3/worker-1/Properties/launchSettings.json similarity index 100% rename from tasks/dunaev-oi/worker-1/Properties/launchSettings.json rename to tasks/dunaev-oi/lab3/worker-1/Properties/launchSettings.json diff --git a/tasks/dunaev-oi/worker-1/appsettings.Development.json b/tasks/dunaev-oi/lab3/worker-1/appsettings.Development.json similarity index 100% rename from tasks/dunaev-oi/worker-1/appsettings.Development.json rename to tasks/dunaev-oi/lab3/worker-1/appsettings.Development.json diff --git a/tasks/dunaev-oi/worker-1/appsettings.json b/tasks/dunaev-oi/lab3/worker-1/appsettings.json similarity index 100% rename from tasks/dunaev-oi/worker-1/appsettings.json rename to tasks/dunaev-oi/lab3/worker-1/appsettings.json diff --git a/tasks/dunaev-oi/worker-1/worker-1.csproj b/tasks/dunaev-oi/lab3/worker-1/worker-1.csproj similarity index 100% rename from tasks/dunaev-oi/worker-1/worker-1.csproj rename to tasks/dunaev-oi/lab3/worker-1/worker-1.csproj diff --git a/tasks/dunaev-oi/worker-1/worker-1.sln b/tasks/dunaev-oi/lab3/worker-1/worker-1.sln similarity index 100% rename from tasks/dunaev-oi/worker-1/worker-1.sln rename to tasks/dunaev-oi/lab3/worker-1/worker-1.sln diff --git a/tasks/dunaev-oi/worker-2/Dockerfile b/tasks/dunaev-oi/lab3/worker-2/Dockerfile similarity index 100% rename from tasks/dunaev-oi/worker-2/Dockerfile rename to tasks/dunaev-oi/lab3/worker-2/Dockerfile diff --git a/tasks/dunaev-oi/worker-2/Program.cs b/tasks/dunaev-oi/lab3/worker-2/Program.cs similarity index 100% rename from tasks/dunaev-oi/worker-2/Program.cs rename to tasks/dunaev-oi/lab3/worker-2/Program.cs diff --git a/tasks/dunaev-oi/worker-2/Properties/launchSettings.json b/tasks/dunaev-oi/lab3/worker-2/Properties/launchSettings.json similarity index 100% rename from tasks/dunaev-oi/worker-2/Properties/launchSettings.json rename to tasks/dunaev-oi/lab3/worker-2/Properties/launchSettings.json diff --git a/tasks/dunaev-oi/worker-2/appsettings.Development.json b/tasks/dunaev-oi/lab3/worker-2/appsettings.Development.json similarity index 100% rename from tasks/dunaev-oi/worker-2/appsettings.Development.json rename to tasks/dunaev-oi/lab3/worker-2/appsettings.Development.json diff --git a/tasks/dunaev-oi/worker-2/appsettings.json b/tasks/dunaev-oi/lab3/worker-2/appsettings.json similarity index 100% rename from tasks/dunaev-oi/worker-2/appsettings.json rename to tasks/dunaev-oi/lab3/worker-2/appsettings.json diff --git a/tasks/dunaev-oi/worker-2/worker-2.csproj b/tasks/dunaev-oi/lab3/worker-2/worker-2.csproj similarity index 100% rename from tasks/dunaev-oi/worker-2/worker-2.csproj rename to tasks/dunaev-oi/lab3/worker-2/worker-2.csproj diff --git a/tasks/dunaev-oi/worker-2/worker-2.sln b/tasks/dunaev-oi/lab3/worker-2/worker-2.sln similarity index 100% rename from tasks/dunaev-oi/worker-2/worker-2.sln rename to tasks/dunaev-oi/lab3/worker-2/worker-2.sln From fc694e32d5fbd12081b8fe1e49e7605a45888742 Mon Sep 17 00:00:00 2001 From: oleggitea Date: Thu, 21 Dec 2023 00:41:47 +0400 Subject: [PATCH 3/4] commit --- tasks/dunaev-oi/lab3/README.md | 2 +- tasks/dunaev-oi/lab3/worker-1/Properties/launchSettings.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/dunaev-oi/lab3/README.md b/tasks/dunaev-oi/lab3/README.md index f21e688..ea6afeb 100644 --- a/tasks/dunaev-oi/lab3/README.md +++ b/tasks/dunaev-oi/lab3/README.md @@ -6,7 +6,7 @@ ## Создание микросервисов -1. С помощью команды `dotnet new web -n worker-2` в терминале создал первый микросервис +1. С помощью команды `dotnet new web -n worker-2` в терминале создал первый микросервис. 2. Добавил решение командой `dotnet new sln` 3. Связал решение и проект командой `dotnet sln worker-2.sln add worker-2.csproj` 4. Повторил действие для второго микросервиса diff --git a/tasks/dunaev-oi/lab3/worker-1/Properties/launchSettings.json b/tasks/dunaev-oi/lab3/worker-1/Properties/launchSettings.json index bab6706..8328d7c 100644 --- a/tasks/dunaev-oi/lab3/worker-1/Properties/launchSettings.json +++ b/tasks/dunaev-oi/lab3/worker-1/Properties/launchSettings.json @@ -31,7 +31,7 @@ "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" + "ASPNETCORE_ENVIRONMENT": "Development" } } } From a0adf05443c07f4c6310462f389f9285c2eeb12c Mon Sep 17 00:00:00 2001 From: oleggitea Date: Thu, 21 Dec 2023 17:06:33 +0400 Subject: [PATCH 4/4] =?UTF-8?q?Commit=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=20=D1=84=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- distributed-computing.sln | 43 --------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 distributed-computing.sln diff --git a/distributed-computing.sln b/distributed-computing.sln deleted file mode 100644 index 4c13b1b..0000000 --- a/distributed-computing.sln +++ /dev/null @@ -1,43 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.5.002.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tasks", "tasks", "{3DD28E1E-BF65-4A84-B958-119AC05CB9F1}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "moiseev-vv", "moiseev-vv", "{A4DA5D04-2810-4123-9E79-81A75954DF92}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lab_2", "lab_2", "{9E89D26D-D1D0-4C6A-9123-B4D0F78F2B8E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "worker-1", "tasks\moiseev-vv\lab_2\worker-1\worker-1.csproj", "{961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "worker-2", "tasks\moiseev-vv\lab_2\worker-2\worker-2.csproj", "{F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7}.Release|Any CPU.Build.0 = Release|Any CPU - {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {A4DA5D04-2810-4123-9E79-81A75954DF92} = {3DD28E1E-BF65-4A84-B958-119AC05CB9F1} - {9E89D26D-D1D0-4C6A-9123-B4D0F78F2B8E} = {A4DA5D04-2810-4123-9E79-81A75954DF92} - {961ACF9F-5C98-45C1-B1DC-4ACE2778F9E7} = {9E89D26D-D1D0-4C6A-9123-B4D0F78F2B8E} - {F8ECF288-C3E7-430F-B7FD-A0ECE8BFD8F2} = {9E89D26D-D1D0-4C6A-9123-B4D0F78F2B8E} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0D6B15FE-84E3-4AD3-86FC-0FDEA1FAFAC8} - EndGlobalSection -EndGlobal