{"id":298092,"date":"2020-02-02T21:00:11","date_gmt":"2020-02-02T21:00:11","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=298092"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2020-02-02T21:00:11","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=298092","title":{"rendered":"BlazingPizza: \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Blazor \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u0427\u0430\u0441\u0442\u044c 1. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0440\u0435\u0434\u044b"},"content":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/486570\/\">\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e <b>Blazor<\/b>, \u043d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435. \u0422\u043e \u0432\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 12 \u0441\u0442\u0430\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u0442 \u0432\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 <s>\u0432\u0441\u0435 \u043a\u0440\u0443\u0433\u0438 \u0430\u0434\u0430<\/s> \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 <b>Blazor<\/b>. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0438\u0446\u0446\u0435\u0440\u0438\u0438, \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442\u043e\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0438\u0446\u0446\u0435\u0440\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0447\u0435\u043c \u0433\u043e\u0440\u0434\u0438\u0442\u044c\u0441\u044f;)<br \/>  <a name=\"habracut\"><\/a><br \/>   \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 <b>HelloWorld<\/b>. \u042f \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e \u043f\u043e\u0448\u0435\u043b \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0443\u0447\u0448\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0437\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0442\u0440\u0435\u0445\u0441\u043b\u043e\u0439\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430: <b>View-Domain-DataAccess<\/b>. <\/p>\n<p>   \u042f \u0441\u0447\u0438\u0442\u0430\u044e \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0435\u0439 \u0441\u0440\u0430\u0437\u0443, \u0447\u0435\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0438\u0441\u043a\u0443\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0435\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a \u0436\u0438\u0437\u043d\u0438. \u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u044e\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 HelloWorld \u0438 \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0443\u0432\u0438\u0434\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u043f\u0440\u0438\u043e\u0440\u0438 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439(\u043f\u0440\u0438\u0432\u0435\u0442 \u043c\u043e\u0435\u043c\u0443 ex-\u0421\u0430\u043c\u044b\u0439\u0417\u0435\u043b\u0435\u043d\u044b\u0439\u0411\u0430\u043d\u043a\u0421\u0442\u0440\u0430\u043d\u044b \u0438 \u0435\u0433\u043e <b>Service.cs <\/b> \u0441\u043e \u0432\u0441\u0435\u043c \u043a\u043e\u0434\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u043d\u0435 \u0448\u0443\u0447\u0443). <\/p>\n<p>   \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043c\u0430\u043f\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u043e\u044f\u043c\u0438 \u0431\u0435\u0437 \u0431\u043e\u043b\u0438 \u0438 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0432 Azure DevOps. \u0414\u0430, \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043c\u044b \u0432\u0441\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043b\u0435\u0442\u0430\u0435\u043c \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445, \u043a\u0442\u043e-\u0442\u043e \u0432 <b>on-premises<\/b>, \u043a\u0442\u043e-\u0442\u043e \u0432 <b>Azure<\/b> \u0438\u043b\u0438 <b>AWS<\/b>.<\/p>\n<p>   \u0422\u0430\u043a\u0436\u0435 \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0431\u044b\u043b\u0430 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u043e\u043c, \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430\u0436\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u043d\u043e\u043f\u043a\u0443 \u0432 <b>Visual Studio,<\/b> \u0430 \u043f\u043e\u0442\u043e\u043c \u0434\u0440\u0443\u0433\u0443\u044e, \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0443\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436 \u0438 \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430 <b>Linux<\/b>. <\/p>\n<p>   \u042f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e, \u0447\u0442\u043e \u0432\u044b \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u043d\u0438\u0435\u043c Asp.net, C#. \u0425\u043e\u0442\u044f \u044d\u0442\u043e HelloWorld, \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Program.cs.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043c, \u0447\u0442\u043e \u0435\u0449\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434 <b>Linux<\/b>.<br \/>  <b>Attention: <\/b> \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440\u0435 \u0430\u0431\u0437\u0430\u0446\u0435\u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043e \u043c\u043e\u0451 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Linux, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432\u0448\u0435\u0433\u043e \u0435\u0451 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043b\u0430\u0433\u0438\u0445 \u043f\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0439, \u0435\u0441\u043b\u0438 <b>Linux<\/b> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0443 \u0432\u0430\u0441 \u0432\u043e\u0441\u0442\u043e\u0440\u0436\u0435\u043d\u043d\u044b\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u0430 \u0438 \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0436\u0438\u0442\u044c \u043d\u0438 \u0434\u043d\u044f \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0442\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0432 \u0447\u0442\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438!<\/p>\n<h2>\u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432: Ubuntu<\/h2>\n<p>   \u041a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u043f\u0440\u0430\u0432\u0434\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043f\u043e\u0434 Linux \u0443 \u0432\u0430\u0441 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0435\u043b\u0435, \u043f\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 <b>Ubuntu 19.10<\/b>. \u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0451 \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0437\u0430, \u0445\u043e\u0440\u043e\u0448\u043e \u0447\u0442\u043e \u0445\u043e\u0442\u044c \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e. \u0418 \u0432\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438\u0441\u044c \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435. \u041a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b, \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u0446\u0435\u043b\u044b\u0439 \u0434\u0435\u043d\u044c \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 <b>OpenSuse<\/b>, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043d\u0435\u0441 \u0435\u0451. <\/p>\n<p>  \u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0434 <b>Linux<\/b>? \u041d\u0443 \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u043e\u0442\u043e\u043c\u0443-\u0447\u0442\u043e <b> .Net Core<\/b> \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0430\u0448 \u0440\u0430\u0431\u043e\u0442\u043e\u0434\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0438\u0442 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0434\u0435 \u0432\u0441\u0435 \u0432 Linux. \u0410 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434 \u0442\u043e\u0439 \u041e\u0421, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<h2>IDE \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c: Rider<\/h2>\n<p>   \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043b, \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e \u043f\u043e\u0434 <b>Linux<\/b> \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u043f\u043e \u0438\u0437 \u0432\u0441\u0435\u0445 \u0437\u043e\u043b, \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435\u0435, Rider.<\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u043d\u0435\u0451, \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0434\u0432\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0442\u043e-\u043b\u0438 <b>IDE<\/b> \u0442\u043e-\u043b\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b <b>MonoDevelop<\/b> \u0438 <b>Visual Studio Code<\/b>. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u0445 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<h3>MonoDevelop<\/h3>\n<p>  C\u0430\u043c\u0430\u044f \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u0430\u044f \u0438\u0437 \u0442\u0440\u0435\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432. \u0427\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u0448\u0440\u0438\u0444\u0442\u044b(\u043d\u0438\u0437\u043a\u043e\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0448\u0440\u0438\u0444\u0442\u044b \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u0431\u0440\u043e\u0441\u0438\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0435 \u043d\u0430 Linux). \u041d\u043e \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0437\u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u043e\u0439 \u043f\u0443\u0441\u0442\u043e\u0442\u0430, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 <b>.Net Core 2.1 \u0438 3.1<\/b>, <b>MonoDevelop<\/b> \u043c\u043d\u0435 \u0443\u043f\u043e\u0440\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0430 ConsoleApplication \u0441 \u0442\u0430\u0440\u0433\u0435\u0442 .Net Core 1.1. Blazor \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c, \u043d\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<h3>Visual Studio Code<\/h3>\n<p>  \u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u044d\u0442\u043e \u043d\u0435 <b>IDE<\/b>, \u044d\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u0438\u043b\u0434\u0430. \u0418\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 \u0441 3 \u0438\u043b\u0438 4\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438, VS Code \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043d\u043e\u044e \u043f\u0440\u043e\u0435\u043a\u0442 <b>WebAssembly<\/b>, \u043a\u043e\u0433\u0434\u0430 <b>MonoDevelop<\/b> \u0438 <b>Rider<\/b> \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c. \u042d\u0442\u043e \u043f\u043b\u044e\u0441. \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u0438\u043d\u0443\u0441\u044b: \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0438 \u043c\u0435\u043b\u043a\u0438\u0439 \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0448\u0440\u0438\u0444\u0442, \u0434\u0443\u043c\u0430\u044e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0432\u0430\u0448\u0438 \u0433\u043b\u0430\u0437\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0439\u0434\u0443\u0442 \u0441 \u0443\u043c\u0430. <\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0438\u043d\u0443\u0441 \u0432\u044b\u0442\u0435\u043a\u0430\u0435\u0442 \u0438\u0437 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432? \u0412\u0441\u0435 \u0447\u0442\u043e Visual Studio \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u043c\u044b \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u043e\u0435, \u0437\u0434\u0435\u0441\u044c \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e. <\/p>\n<h3>Rider<\/h3>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0443 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u0439 \u0432\u044b\u0448\u0435, Rider \u0434\u0430\u0436\u0435 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043c\u043d\u043e\u044e <b>template<\/b> \u0434\u043b\u044f <b>Blazor WebAssembly<\/b>. \u0418 \u0434\u0430\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u044d\u0442\u0430 IDE \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c. \u041d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0434\u0438 \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e\u0441\u0442\u0438, \u0447\u0442\u043e Blazor Server, \u0441\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. <\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 <b>Rider<\/b> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 git \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c <b>.gitignore<\/b> \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043f\u0443\u0441\u0442\u044b\u043c. <\/p>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0443\u0447\u043d\u043e\u0435 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e, \u0430 Rider \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u0443\u0435\u0442 \u0441 <b>VS<\/b> \u0438 <b>JetBrains<\/b> \u0431\u0435\u0440\u0435\u0442 \u0434\u0435\u043d\u044c\u0433\u0438 \u0437\u0430 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442. \u041d\u0443 \u0438 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0430 \u043b\u0438\u043d\u0443\u043a\u0441\u0435 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u044d\u0442\u043e \u043f\u043b\u043e\u0445\u0438\u0435 \u0448\u0440\u0438\u0444\u0442\u044b, \u043e\u043d\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u043e\u043d\u043a\u0438\u0435, \u043f\u043b\u043e\u0445\u043e \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0435. \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435 \u043c\u0435\u043b\u043a\u0438\u0435, \u0432 \u043d\u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0435 \u043f\u0440\u0438\u0446\u0435\u043b\u0438\u0442\u044c\u0441\u044f. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0437\u0430 \u0434\u0432\u0430 \u0434\u043d\u044f \u0440\u0430\u0431\u043e\u0442\u044b, <b>Rider<\/b> \u043f\u043e\u0432\u0435\u0441\u0438\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u043e\u0433\u043e solution. \u041a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c reset-\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043d\u0435 \u0435\u0441\u0442\u044c good (update: \u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0443\u0436\u0435 \u0440\u0430\u0437 \u043f\u044f\u0442\u044c).<\/p>\n<p>  \u041f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c \u0432 \u043d\u043e\u043c\u0438\u043d\u0430\u0446\u0438\u0438 \u041b\u0443\u0447\u0448\u0430\u044f<b> C# IDE <\/b>\u043f\u043e\u0434 <b>Linux<\/b>:<br \/>   Rider \u2014 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0441\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u0430 <b>IDE<\/b> \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430 \u043f\u0440\u043e\u0435\u043a\u0442(\u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e), \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435, Rider(\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u044b), \u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c <b>Blazor WebAssembly <\/b>\u043f\u0440\u043e\u0435\u043a\u0442, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043c \u0436\u0435 \u0441\u0430\u043c\u0438\u043c, \u0441 <b>MonoDevelop<\/b> \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/a4\/ab\/ia\/a4abiah4ltt2bsqbsrfomjxyv6q.png\"><\/p>\n<h2>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e, \u0437\u0430\u0447\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <b>Linux<\/b>?<\/h2>\n<p>   \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0446\u0435\u043b\u044c\u044e \u0431\u044b\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u043d\u0430 Linux \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. <\/p>\n<p>   \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043d\u0435\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0434 <b>Linux<\/b> \u043f\u043e\u0434\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441 \u043a \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0440\u0443\u0447\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <b>.Net <\/b>\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0438 \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430 \u043d\u0430\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u0430 \u0436\u0435 Visual Studio. <\/p>\n<h2>\u0427\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c?<\/h2>\n<p>   \u0412 \u043a\u043e\u043d\u0446\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u0430\u043a \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pt\/tp\/q8\/pttpq8joyyabngjyclb6lrzhet4.png\"><\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430 \u0434\u0435\u043b\u043e. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 .Net Core 3.1<\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 .Net Core 3.1<\/h2>\n<p>   <b>.Net Core 3.1.1 SDK<\/b> \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0435\u0440\u0441\u0438\u044f <b>SDK<\/b>, \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <b>Ubuntu<\/b>. <b>Blazor<\/b> \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441<b> Blazor WebAssembly <\/b>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e 3.1.1, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0438\u0437 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439.<\/p>\n<p>  \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447 \u041c\u0430\u0439\u043a\u0440\u043e\u0441\u043e\u0444\u0442 \u0438 \u0438\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 <b>Terminal<\/b>(\u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 <b>Win<\/b> \u0438 \u0432\u0432\u043e\u0434\u0438\u043c <b>Term<\/b>, \u043e\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3b\/yu\/9g\/3byu9g5hx7xgbpndx0ngqtsjg-q.png\"><\/p>\n<ol>\n<li>\n<pre><code class=\"bash\">wget -q https:\/\/packages.microsoft.com\/config\/ubuntu\/19.10\/packages-microsoft-prod.deb -O packages-microsoft-prod.deb<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"bash\">sudo dpkg -i packages-microsoft-prod.deb<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>   \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 .Net Core SDK:<\/p>\n<ol>\n<li>\n<pre><code class=\"bash\">sudo apt-get update<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"bash\">sudo apt-get install apt-transport-https<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"bash\">sudo apt-get update<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"bash\">sudo apt-get install dotnet-sdk-3.1<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>  <\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Blazor WebAssembly template<\/h2>\n<p>   \u0421 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439<b> .Net Core<\/b> \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <b>Blazor WebAssembly Template<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u043e\u043c\u043d\u044e \u043f\u043e\u043a\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0434\u0438\u0438 <b>Preview<\/b> \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u0432\u044b\u0439\u0434\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432 \u0440\u0435\u043b\u0438\u0437 \u0432 \u043c\u0430\u0435. \u0411\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0437\u0430 \u0434\u0435\u043d\u044c \u0434\u043e \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u044f \u043d\u0430\u0447\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e, 28\u043e\u0433\u043e \u044f\u043d\u0432\u0430\u0440\u044f \u0432\u044b\u0448\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f 3.2.0-preview1.20073.1(h)<\/p>\n<ol>\n<li>\n<pre><code class=\"bash\">dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.2.0-preview1.20073.1<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0431\u0438\u043b\u0434\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u043b\u0430\u0434\u0438\u0442\u044c\u0441\u044f, \u043a\u0430\u043a\u0438\u043c \u043d\u0438\u043a\u0430\u043a\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c(\u043f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0444\u0430\u0439\u043b\u0430 BlazingPizza.sln):<\/li>\n<li>\n<pre><code class=\"bash\">dotnet build<\/code><\/pre>\n<p>  \u0412\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 Server \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c:<\/li>\n<li>\n<pre><code class=\"bash\">dotnet run<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>   \u0418 \u0432\u0438\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ms\/dq\/dk\/msdqdkuiqhtryxnush-q4yocnb8.png\"><\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Git<\/h2>\n<p>   \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u0441\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <b>Git<\/b>, \u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e. \u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043f\u0435\u0440\u0432\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, <b>Ubuntu<\/b> \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u0432\u0430\u0441 \u0432\u0432\u0435\u0441\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c, \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439, \u043c\u044b \u043f\u0440\u0435\u0434\u0432\u043e\u0441\u0445\u0438\u0442\u0438\u043c \u0435\u0433\u043e=):<\/p>\n<ol>\n<li>\n<pre><code class=\"bash\">sudo su<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"bash\">add-apt-repository ppa:git-core\/ppa<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"bash\">apt update; apt install git<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>   \u042d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 <b>Blazor<\/b> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <b>Mono<\/b>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u0438 \u0435\u0433\u043e.<\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Mono<\/h2>\n<p>   \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <b>Mono<\/b> \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443:<\/p>\n<ol>\n<li>\n<pre><code class=\"bash\">sudo apt install gnupg ca-certificates<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"bash\">sudo apt-key adv --keyserver hkp:\/\/keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"bash\">echo &quot;deb https:\/\/download.mono-project.com\/repo\/ubuntu stable-bionic main&quot; | sudo tee \/etc\/apt\/sources.list.d\/mono-official-stable.list<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"bash\">sudo apt update<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>   \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c <b>Mono<\/b>:<\/p>\n<pre><code class=\"bash\">sudo apt install mono-complete<\/code><\/pre>\n<p>   \u042d\u0442\u043e \u043d\u0435\u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u044f\u043b \u043c\u0438\u043d\u0443\u0442 10, \u043d\u0430 \u043c\u043e\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Core-i5 6200U, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435.<\/p>\n<p>  \u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e! \u041c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Blazor WebAssembly \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443. <\/p>\n<p>  \u041d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u043e\u0445\u043d\u0451\u043c \u043e\u0442 \u0432\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u043e\u0441\u0432\u0435\u0436\u0438\u043c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 <b>Blazor WebAssembly.<\/b><\/p>\n<h2>Blazor WebAssembly \u0438 \u0441 \u0447\u0435\u043c \u0435\u0433\u043e \u0435\u0434\u044f\u0442<\/h2>\n<p>   <b>Blazor<\/b> \u044d\u0442\u043e <b>web framework<\/b> \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043b\u0438\u0431\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e WebAssembly(\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <b>.Net runtime<\/b>, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 <b>Mono<\/b> \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 .Net \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b), \u043b\u0438\u0431\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u043c \u0432 Asp.Net Core \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 SignalR(\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <b>Circuits<\/b> \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439).<\/p>\n<p>  \u041a\u0430\u043a \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438 \u0438\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u044b\u0448\u0435 <b>Blazor != .Net WebAssembly implementation. <\/b><br \/>  \u0415\u0441\u043b\u0438 \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0432\u044f\u0437\u043a\u0438 <b>WebAssembly<\/b>, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c Blazor Server \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u0432 <b>IE 11<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b \u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445 \u0438 \u0441\u043b\u0430\u0432\u0430 \u0431\u043e\u0433\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0443\u0441\u043b\u044b\u0448\u0438\u0442.<\/p>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 <b>Blazor WebAssembly<\/b>. \u0422\u043e \u0435\u0433\u043e \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<ol>\n<li>\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 index.html \u0412 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0442\u044d\u0433 <code>app<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410 \u0442\u0430\u043a \u0436\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 blazor.webassembly.js \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u0437\u0430u\u0440\u0443\u0437\u043a\u0443 \u0432\u0441\u0435\u0445 \u0441\u0431\u043e\u0440\u043e\u043a \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u0430\u043c\u043e\u0433\u043e <b>Blazor<\/b> \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 AutoMapper, AutoFac) \u0438 Mono \u0440\u0430\u043d\u0442\u0430\u0439\u043c.\n<p>  \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <b>Blazor<\/b> \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430\u0434 \u0442\u0435\u043c \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044e \u0441\u0431\u043e\u0440\u043e\u043a, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u044f \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043c\u0435\u0436\u0434\u0443 \u0432\u0432\u043e\u0434\u043e\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. <\/p>\n<p>  \u0415\u0449\u0451 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 <b>Blazor<\/b>(<b>3.1.0-preview4.19579.2<\/b>, \u0432\u044b\u0448\u0435\u0434\u0448\u0435\u0439 \u0434\u0432\u0430 \u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0437\u0430\u0434) \u043b\u0438\u043d\u043a\u0435\u0440 \u0432\u044b\u0447\u0438\u0449\u0430\u043b \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a .Net, \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a <b>Blazor<\/b>, \u0447\u0442\u043e \u0435\u0449\u0451 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/p>\n<p>  Blazor \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u043e\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0442\u0430\u043a \u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.<\/li>\n<li>\u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043c\u0438\u043d\u0443\u0441\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0430, \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430, \u0432\u044b \u0432 \u043d\u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0435\u0442\u0435, \u0445\u043e\u0442\u044f \u0434\u0443\u043c\u0430\u044e \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0432\u0435\u0434\u044c \u043c\u043e\u0436\u043d\u043e \u0436\u0435 \u0431\u044b\u043b\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u0432 \u0441\u0442\u0443\u0434\u0438\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a <b>IE<\/b> \u0438 \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c <b>JS<\/b> \u043a\u043e\u0434.\n<p>  \u041d\u0443 \u0438 \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043c\u0438\u043d\u0443\u0441, \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432, \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u0434\u0443\u043c\u0430\u044e \u0437\u0434\u0435\u0441\u044c \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/li>\n<li> \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u0441\u043b\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 <b>UI<\/b> \u043f\u043e\u0442\u043e\u043a\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0432\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 JS \u043a\u043e\u0434 \u0438\u0437 C# \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. <\/li>\n<\/ol>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0442 \u0432\u0430\u043c \u043e\u0434\u043d\u0430 \u043d\u0438\u0436\u0435 \ud83d\ude42<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mv\/sw\/iy\/mvswiyaubh7h73bblpgwbepecto.png\"><\/p>\n<h2>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 dotnet<\/h2>\n<p>   \u0414\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0438\u0437 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430 .Net Core SDK \u2014 dotnet.<\/p>\n<p>  \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439, \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u043b\u0438\u0448\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:<\/p>\n<pre><code class=\"bash\">dotnet build <\/code><\/pre>\n<p>  \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0430\u0448 \u0441\u043e\u043b\u044e\u0448\u0435\u043d, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 \u0441 \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u043e\u043c, \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f.<\/p>\n<pre><code class=\"bash\">dotnet new blazorwasm -ho -o BlazingPizza<\/code><\/pre>\n<p>  \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 template \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u043e\u0432\u0430 new, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e <b>blazorwasm<\/b>, \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c <b>classlib<\/b> \u0438\u043b\u0438 <b>console<\/b>.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0443\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e <b>-ho<\/b>, \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 <b>ASP.NET Core<\/b> \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0442\u0430\u043a\u0436\u0435 <b>.Net<\/b> \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0434\u043b\u044f \u043d\u0430\u0441 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <b>web api<\/b> \u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 Blazor \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043d\u043e \u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 -o \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u043f\u043a\u0443 \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u044d\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433.<\/p>\n<pre><code class=\"bash\">dotnet run <\/code><\/pre>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h2>\n<p>  \u0418 \u0442\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0430. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0430\u043f\u043a\u0430 RiderProjects, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043e\u0437\u0434\u0430\u043b <b>Rider IDE<\/b> \u0438 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043f\u0443\u0442\u0438 \/home\/{userName}:<\/p>\n<pre><code class=\"bash\">dotnet new blazorwasm -ho -o BlazingPizza<\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5p\/al\/zy\/5palzyowa6et3bprbxme4gu6pwu.png\"><\/p>\n<p>  \u041f\u043e-\u043c\u043e\u0435\u043c\u0443, \u043d\u0435 \u043b\u0443\u0447\u0448\u0430\u044f \u0441\u0445\u0435\u043c\u0430, \u043b\u0443\u0447\u0448\u0435 \u0435\u0441\u043b\u0438 \u043f\u0430\u043f\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0430, \u0442\u0430\u043a \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u0435\u0435(\u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0435\u0442 VisaulStudio \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432) \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0434\u043e\u043f. \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430. \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0441\u0442\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u043f\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0432 \u0441\u0435\u0431\u0435 <b>C# <\/b>\u043a\u043e\u0434\u0430, \u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 <b>Explorer<\/b>, \u0431\u0443\u0434\u0435\u0442 \u0442\u044f\u0436\u0435\u043b\u043e \u0441\u043e\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u0434\u0435 \u0447\u0442\u043e, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e <b>deploy<\/b> \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0442\u043e \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0438\u043c\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0438\u043c\u044f \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0430, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442, \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443-\u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u043b\u0435\u0442\u043d\u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <b>Visual Studio<\/b> \u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f. <\/p>\n<p>  \u0418 \u0442\u0430\u043a \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0438 \u043f\u0430\u043f\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442(\u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043c\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u043c \u043e\u0431 <b>IDE<\/b>, \u043c\u044b \u0436\u0435 \u0432 <b>Linux<\/b>, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u043e\u043d\u0430 \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0430\u043f\u043a\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443):<\/p>\n<p>  <b>Client =&gt; BlazingPizza.Client<br \/>  Server =&gt; BlazingPizza.Server<br \/>  Shared =&gt; BlazingPizza.Shared<\/b><br \/>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0430 <b>BlazingPizza.sln<\/b>. \u0422\u0430\u043c \u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u043f\u0443\u0442\u044c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 <b>\u00ab[Server]\\~\u00bb<\/b> \u0438 \u043d\u0438\u0436\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 <b>\u00abBlazingPizza.[Server]\\~\u00bb<\/b> \u043a\u0430\u043a \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043d\u0438\u0436\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4n\/1d\/qh\/4n1dqhz6sww2m_yerejl9yap2sy.png\"><\/p>\n<p>  \u041f\u0440\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 BlazingPizza.Server.csproj:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wc\/ws\/d0\/wcwsd0jvor3cyygkum1rlhihaaq.png\"><\/p>\n<p>  \u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 BlazingPizza.Client.csproj \u0442\u043e\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0443 \u0432\u0430\u0441 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442\u044c \u043a\u0430\u043a \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043d\u0438\u0436\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/t2\/o5\/bm\/t2o5bmeocwevinpyynvwudjsq2w.png\"><\/p>\n<p>  \u0421 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0445\u0432\u0430\u0442\u0438\u0442, \u0443 \u043d\u0430\u0441 \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0438\u0434\u043d\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u043d\u0430\u0448\u0443<b> IDE Rider <\/b>\u0438 \u0441\u043e\u043b\u044e\u0448\u0435\u043d, \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 Visual Studio, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u0432 \u0444\u0430\u0439\u043b \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0430.<\/p>\n<p>  \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f, \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043c\u0435\u043d\u044e <b>VCS =&gt; Enable Version Control Integration<\/b>. \u0418 \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c <b>Git<\/b>. Rider \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u043e\u043c \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442 \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043d\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439. <br \/>  \u041f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 <b>Rider<\/b> \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0437\u0430\u043a\u043e\u043c\u0438\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043f\u043e\u043a <b>bin<\/b> \u0438 <b>obj<\/b>, \u043d\u0430\u043c \u044d\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0432\u0441\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0444\u0430\u0439\u043b <b>.gitignore<\/b> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u043f\u0443\u0441\u0442\u043e\u0439. <b>\u041f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043c<\/b> \u0435\u0433\u043e \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043d\u0430 \u043e\u0434\u0438\u043d \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441 \u0444\u0430\u0439\u043b\u043e\u043c <b>BlazingPizza.sln<\/b> \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0438\u0437 \u043f\u043e\u0434 \u043a\u0430\u0442\u0430.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 .gitignore<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\"># Default ignored files \/workspace.xml ## 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 *.suo *.user *.userosscache *.sln.docstates  # User-specific files (MonoDevelop\/Xamarin Studio) *.userprefs  # Build results [Dd]ebug\/ [Dd]ebugPublic\/ [Rr]elease\/ [Rr]eleases\/ x64\/ x86\/ bld\/ [Bb]in\/ [Oo]bj\/ [Ll]og\/  # 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  # Build Results of an ATL Project [Dd]ebugPS\/ [Rr]eleasePS\/ dlldata.c  # Benchmark Results BenchmarkDotNet.Artifacts\/  # .NET Core project.lock.json project.fragment.lock.json artifacts\/ **\/Properties\/launchSettings.json  # StyleCop StyleCopReport.xml  # Files built by Visual Studio *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.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  # JustCode is a .NET coding add-in .JustCode  # TeamCity is a build add-in _TeamCity*  # DotCover is a Code Coverage Tool *.dotCover  # AxoCover is a Code Coverage Tool .axoCover\/* !.axoCover\/settings.json  # 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 # 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  # 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 &amp; 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  # 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\/  # JetBrains Rider .idea\/ *.sln.iml  # CodeRush .cr\/  # 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\/  # sqlite *.db  # Don't ignore server launchSettings.json. We need a specific port number for auth to work. !**\/BlazingPizza.Server\/Properties\/launchSettings.json <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435 \u0437\u0430\u043a\u043e\u043c\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0437\u043a\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u0441\u044f \u0434\u043e 31.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0430\u0448 \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Repository:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/op\/1q\/il\/op1qillbrks-dougddi10t2w0f4.png\"><\/p>\n<p>  \u0412\u0432\u043e\u0434\u0438\u043c \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0438\u0442\u0430 \u00abinitial commit\u00bb \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432 \u043a\u043e\u043c\u0438\u0442 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 <b>\u00abUnversioned files\u00bb<\/b> =&gt; <b>\u00abAdd to VCS\u00bb<\/b>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nt\/dk\/t3\/ntdkt3zpjihhnwi4szqo7bvxs98.png\"><\/p>\n<p>  \u0421 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043d\u0435\u0435 \u0433\u043e\u0442\u043e\u0432\u043e, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0430.<\/p>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 Solution<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td>BlazingPizza.Client<\/td>\n<td>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 UI \u043a\u043e\u043c\u043f\u043d\u043e\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a \u0436\u0435 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 <b>Startup.cs<\/b> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <b> &lt; \u0430pp &gt; <\/b> \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0438\u0439 \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0432 \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u041a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f App.razor \u043e\u043d \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u0442\u044d\u0433\u043e\u043c <b> &lt; \u0430pp &gt; <\/b> \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 index.html \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<br \/>  wwwroot\/index.html \u2014 \u043a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043e\u0431\u044b\u0447\u043d\u0443\u044e html \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c <b> &lt; app &gt; <\/b>.<br \/>   \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0437\u0434\u0435\u0441\u044c \u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442 <b>_framework\/blazor.webassembly.js<\/b> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 <b>.Net \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430<\/b>, \u0442\u043e \u0435\u0441\u0442\u044c <b>Mono<\/b> \u0438 \u0432\u0441\u0435\u0445 \u0441\u0431\u043e\u0440\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/td>\n<\/tr>\n<tr>\n<td>BlazingPizza.Server  <\/td>\n<td>\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0443 \u043d\u0430\u0441 \u0432 \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0435 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442\u0430 blazorwasm \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 -ho, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u201cHosted deployment with ASP.NET Core \u2013 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0445\u043e\u0441\u0442\u0438\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 <b>ASP.NET Core <\/b> \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0422\u0430\u043a \u0436\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <b>dotnet<\/b> \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f -ho \u0441\u043e\u0437\u0434\u0430\u043b\u0430 \u0434\u043b\u044f \u043d\u0430\u0441 <b>\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 web api. \u041e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0441\u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043d\u043e \u0438 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b. \u0412\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <b>Standalone hosting<\/b> \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 IIS, \u0435\u0433\u043e \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. <\/td>\n<\/tr>\n<tr>\n<td>BlazingPizza.Shared(\u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d \u0432 BlazingPizza.DomainModels)  <\/td>\n<td>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043b\u0430\u0441\u0441\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0448\u0430\u0440\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e. \u041f\u043e \u0438\u0434\u0435\u0435 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0430\u043c \u0432\u0440\u0435\u043c\u044f \u0438 \u0441\u0438\u043b\u044b. \u041d\u043e \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0431\u043b\u0430\u0433\u0438\u043c\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u044b\u0441\u0442\u043b\u0430\u043d\u0430 \u0434\u043e\u0440\u043e\u0433\u0430 \u0432 \u0430\u0434. <\/p>\n<p>  \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441 Pizza, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0438\u0446\u0446\u044b, \u0438 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c. \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e, \u043f\u043e\u0442\u043e\u043c \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u044f \u043d\u0430\u0432\u0435\u0441\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e <b>\u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0435 property<\/b>. \u041f\u043e\u0442\u043e\u043c \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442, \u0433\u0434\u0435 \u044d\u0442\u0430 \u043b\u043e\u0433\u0438\u043a\u0430 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u043d \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 <b>JavaScript<\/b> \u0438\u043b\u0438 <b>Kotlin<\/b>.  <\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442 <b>BlazingPizza.Shared <\/b>\u0432 <b>BlazingPizza.DomainModels<\/b>. \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e <b>Rider<\/b> \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044e \u043d\u0430 \u043f\u043e\u043c\u0435\u0442\u043a\u0443 experimental \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0447\u0442\u043e \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u043e\u043c\u0430\u043d\u043e<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fs\/qw\/3n\/fsqw3nh4oqxlw7anofq0_q7ozbs.png\"><\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043c\u0438\u0442 \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e Rider \u0441\u0434\u0435\u043b\u0430\u043b \u0437\u0430 \u043d\u0430\u0441, \u043d\u0430\u043f\u043e\u043c\u043d\u044e \u0435\u0441\u043b\u0438 \u0431\u044b \u044d\u0442\u043e \u0431\u044b\u043b <b>Visual Studio Code<\/b>, \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u0447\u043a\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u043c\u0443, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 diff \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043b\u0438\u043a\u043d\u0443\u0432 \u043d\u0430 \u043d\u0438\u0445.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/my\/if\/km\/myifkm56d5i37nrvprtt_zdmzgo.png\"><\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0435 Projects<\/h2>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043d\u0430\u0447\u043d\u0435\u043c \u0441 <b>BlazingPizza.ViewModels<\/b>. \u0412 \u043d\u0451\u043c \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435. \u0414\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u043a\u043d\u0435\u043c \u043d\u0430 \u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0438 \u0432\u044b\u0431\u0435\u0440\u0435\u043c <b>Add =&gt; New Project<\/b>(\u0442\u0438\u043f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 <b>Class Library<\/b>)<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/42\/jj\/iw\/42jjiw_qw5txfi5acdavchdmxga.png\">  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td>BlazingPizza.DataAccess.Models <\/td>\n<td> \u041c\u043e\u0434\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u0441\u043b\u043e\u0435 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 \u0411\u0414<\/td>\n<\/tr>\n<tr>\n<td>BlazingPizza.DataAccess.Infrastructure <\/td>\n<td> \u0412\u0441\u0435 \u0447\u0442\u043e, \u0447\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445<\/td>\n<\/tr>\n<tr>\n<td>BlazingPizza.Services.Interfaces<\/td>\n<td>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u044b \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u0447\u0442\u043e-\u0431\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0442 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0430\u0441\u043a\u0430\u0442\u044c \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u043e\u0431\u043e\u0439.<\/td>\n<\/tr>\n<tr>\n<td>BlazingPizza.Services<\/td>\n<td> \u0418\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <b>PizzaService<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0438\u0446\u0446\u0443 \u0432 <b>\u0411\u0414<\/b> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u043a\u0438\u0435 \u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u043e\u0439.<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u043a\u0430, <a href=\"https:\/\/github.com\/Sm1le291\/BlazingPizzaExtended\" rel=\"nofollow\">\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  \u041e\u0439 \u0434\u0430, \u0447\u0443\u0442\u044c \u043d\u0435 \u0437\u0430\u0431\u044b\u043b \ud83d\ude42 <a href=\"https:\/\/github.com\/dotnet-presentations\/blazor-workshop\" rel=\"nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 (MIT License)<\/a>.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/486570\/\"> https:\/\/habr.com\/ru\/post\/486570\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/486570\/\">\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e <b>Blazor<\/b>, \u043d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435. \u0422\u043e \u0432\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 12 \u0441\u0442\u0430\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u0442 \u0432\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 <s>\u0432\u0441\u0435 \u043a\u0440\u0443\u0433\u0438 \u0430\u0434\u0430<\/s> \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 <b>Blazor<\/b>. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0438\u0446\u0446\u0435\u0440\u0438\u0438, \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442\u043e\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0438\u0446\u0446\u0435\u0440\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0447\u0435\u043c \u0433\u043e\u0440\u0434\u0438\u0442\u044c\u0441\u044f;)  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-298092","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/298092","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=298092"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/298092\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=298092"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=298092"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=298092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}