یک برنامه ASP.NET Core را در App Engine اجرا کنید

1. بررسی اجمالی

ASP.NET Core یک چارچوب جدید منبع باز و کراس پلتفرم برای ساخت اپلیکیشن های مدرن مبتنی بر ابر و متصل به اینترنت با استفاده از زبان برنامه نویسی C# است.

در این آزمایشگاه، یک برنامه ساده ASP.NET Core را در محیط انعطاف پذیر App Engine قرار می دهید. این Codelab بر روی ساخت و راه اندازی برنامه ASP.NET Core از Google Cloud Shell Codelab ساخته شده است. ممکن است بخواهید قبل از اقدام به این آزمایشگاه ابتدا آن آزمایشگاه را انجام دهید.

برنامه‌های Google App Engine برای ایجاد، نگهداری و مقیاس‌بندی آسان هستند زیرا نیازهای ترافیک و ذخیره‌سازی داده شما تغییر می‌کند. با App Engine، هیچ سروری برای مدیریت وجود ندارد. شما به سادگی برنامه خود را آپلود می کنید و آماده است.

برنامه های App Engine به طور خودکار بر اساس ترافیک ورودی مقیاس می شوند. App Engine به طور بومی از تعادل بار، میکروسرویس‌ها، مجوز، پایگاه‌های داده SQL و NoSQL، Memcache، تقسیم ترافیک، ورود به سیستم، جستجو، نسخه‌سازی، رول کردن و بازگردانی و اسکن امنیتی پشتیبانی می‌کند که همه آنها بسیار قابل تنظیم هستند.

محیط‌های App Engine، محیط استاندارد و محیط انعطاف‌پذیر ، از زبان‌های برنامه‌نویسی زیادی مانند C#، Java، Python، PHP، Node.js، Go و غیره پشتیبانی می‌کنند. این دو محیط حداکثر انعطاف پذیری را در نحوه عملکرد برنامه به کاربران می دهند، زیرا هر محیط دارای نقاط قوت خاصی است. برای اطلاعات بیشتر، انتخاب محیط موتور برنامه را بخوانید.

چیزی که یاد خواهید گرفت

  • چگونه یک برنامه ساده ASP.NET Core را به عنوان یک ظرف Docker بسته بندی کنیم.
  • نحوه استقرار یک برنامه ساده ASP.NET Core در App Engine.

آنچه شما نیاز دارید

چگونه از این آموزش استفاده خواهید کرد؟

فقط از طریق آن را بخوانید آن را بخوانید و تمرینات را کامل کنید

تجربه خود را با Google Cloud Platform چگونه ارزیابی می کنید؟

تازه کار متوسط مسلط

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
  • شناسه پروژه باید در تمام پروژه‌های Google Cloud منحصربه‌فرد باشد و تغییرناپذیر باشد (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان PROJECT_ID شناخته می‌شود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا می‌توانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود.
  • یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعمل‌های «پاک‌سازی» را که در انتهای Codelab یافت می‌شود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

Cloud Shell را فعال کنید

  1. از Cloud Console، روی Activate Cloud Shell کلیک کنید 4292cbf4971c9786.png .

bce75f34b2c53987.png

اگر قبلاً Cloud Shell را راه‌اندازی نکرده‌اید، یک صفحه میانی (در زیر تاشو) برای شما نمایش داده می‌شود که آن را توصیف می‌کند. اگر اینطور است، روی Continue کلیک کنید (و دیگر آن را نخواهید دید). در اینجا به نظر می رسد که آن صفحه یک بار مصرف:

70f315d7b402b476.png

تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.

fbe3a0674c982259.png

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما بارگذاری شده است. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد شبکه و احراز هویت را بسیار افزایش می دهد. بیشتر، اگر نه همه، کار شما در این کد لبه را می توان به سادگی با یک مرورگر یا Chromebook انجام داد.

پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی ID پروژه شما تنظیم شده است.

  1. برای تایید احراز هویت، دستور زیر را در Cloud Shell اجرا کنید:
gcloud auth list

خروجی فرمان

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. دستور زیر را در Cloud Shell اجرا کنید تا تأیید کنید که دستور gcloud از پروژه شما اطلاع دارد:
gcloud config list project

خروجی فرمان

[core]
project = <PROJECT_ID>

اگر اینطور نیست، می توانید آن را با این دستور تنظیم کنید:

gcloud config set project <PROJECT_ID>

خروجی فرمان

Updated property [core/project].

3. یک برنامه ASP.NET Core در Cloud Shell ایجاد کنید

در اعلان Cloud Shell، می توانید با فهرست کردن SDK های دات نت نصب شده، تأیید کنید که ابزار خط فرمان dotnet قبلاً نصب شده است:

dotnet --list-sdks

در مرحله بعد، یک برنامه وب ASP.NET Core جدید با چارچوب هدف netcoreapp3.1 ایجاد کنید:

dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1

این باید یک پروژه ایجاد کند و وابستگی های آن را بازیابی کند. شما باید یک پیام مشابه زیر را ببینید.

Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.

Restore succeeded.

4. برنامه ASP.NET Core را اجرا کنید

ما تقریباً آماده اجرای برنامه خود هستیم. به پوشه برنامه بروید.

cd HelloWorldAspNetCore

در نهایت برنامه را اجرا کنید.

dotnet run --urls=http://localhost:8080

برنامه شروع به گوش دادن در پورت 8080 می کند.

Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.

برای تأیید اینکه برنامه در حال اجرا است، روی دکمه پیش‌نمایش وب در بالا سمت راست کلیک کنید و «پیش‌نمایش در پورت 8080» را انتخاب کنید.

Capture.PNG

صفحه وب پیش فرض ASP.NET Core را خواهید دید:

f579a9baedc108a9.png

هنگامی که تأیید کردید که برنامه در حال اجرا است، Ctrl+C را فشار دهید تا برنامه خاموش شود.

5. برنامه ASP.NET Core را منتشر کنید

اکنون، برنامه را منتشر کنید تا با استفاده از دستور dotnet publish یک DLL مستقل دریافت کنید.

dotnet publish -c Release

اجرای publish برخی از پیام‌ها را با یک DLL با موفقیت منتشر شده در پایان فرآیند نمایش می‌دهد.

...
  HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.dll
  HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.Views.dll
  HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/publish/

6. ایجاد app.yaml برای App Engine انعطاف پذیر

فایل app.yaml نحوه استقرار برنامه را در App Engine توضیح می دهد، در این مورد، محیط انعطاف پذیر App Engine.

ابتدا به پوشه publish بروید. این باید در پوشه bin/Release باشد اما مسیر دقیق بستگی به نسخه دات نت دارد:

cd bin/Release/netcoreapp3.1/publish/

یک فایل app.yaml در پوشه publish ایجاد کنید:

cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT

توجه کنید که چگونه فایل app.yaml محیط را به عنوان flex و زمان اجرا را به عنوان aspnetcore مشخص می کند.

7. استقرار به App Engine انعطاف پذیر

شما آماده استقرار برنامه خود در App Engine انعطاف پذیر با استفاده از gcloud هستید. در داخل پوشه publish ، موارد زیر را اجرا کنید:

gcloud app deploy --version v0

در طول استقرار، ممکن است از شما خواسته شود که یک منطقه را برای برنامه خود انتخاب کنید. منطقه ای را انتخاب کنید که می خواهید برنامه شما در آن اجرا شود.

Please choose a region for your application. After choosing a region, 
you cannot change it. Which region would you like to choose?
 [1] europe-west   (supports standard and flexible)
 [2] us-central    (supports standard and flexible)
 [3] us-east1      (supports standard and flexible)
 [4] asia-northeast1 (supports standard and flexible)
 [5] cancel

این یک تصویر برای برنامه شما در فضای ابری ایجاد می کند، آن تصویر را در Google Container Registry ذخیره می کند و در App Engine مستقر می کند. در حین استقرار، در واقع می توانید تصویر کانتینر در حال ساخت را مشاهده کنید:

Operation completed over 1 objects/571.8 KiB.
BUILD
Step #0: Pulling image: gcr.io/gcp-runtimes/aspnetcorebuild@sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb
Step #0: sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb: Pulling from gcp-runtimes/aspnetcorebuild

در پایان، باید ببینید که برنامه مستقر شده است.

...
Deployed service [default] to [https://<project-id>.appspot.com]

پس از استقرار برنامه، با باز کردن URL http://<project-id>.appspot.com در مرورگر وب خود از آن دیدن کنید.

صفحه وب پیش‌فرض ASP.NET Core را در یک تب جدید خواهید دید.

f579a9baedc108a9.png

همچنین می توانید نگاهی به تصویر کانتینری که در فضای ابری برای شما ایجاد شده است بیاندازید. در کنسول ابری، به Container Registry > Images بروید و سپس در پوشه appengine، باید تصویر برنامه خود را ببینید.

de788f4949d0c5a.png

8. یک نسخه جدید از سرویس خود را مستقر کنید

در برخی موارد، برنامه‌ای که برای تولید به کار گرفته‌اید به رفع اشکال یا ویژگی‌های اضافی نیاز دارد. App Engine اینجاست تا به شما کمک کند تا یک نسخه جدید را بدون تأثیرگذاری بر کاربران خود به تولید بفرستید.

ابتدا بیایید برنامه را اصلاح کنیم. ویرایشگر کد را از Cloud Shell باز کنید.

868c4f615e2331fe.png

به Index.cshtml در پوشه Views/Home HelloWorldAspNetCore بروید و پیام پیش‌فرض را به این مورد به‌روزرسانی کنید:

Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!

تغییرات را ذخیره کنید و سپس به Cloud Shell برگردید. در داخل HelloWorldAspNetCore, برنامه را منتشر کنید تا یک DLL مستقل دریافت کنید.

dotnet publish -c Release

به دایرکتوری انتشار بروید.

cd bin/Release/netcoreapp3.1/publish/

اکنون می توانید یک نسخه جدید از برنامه خود را اجرا کنید (در این مورد v1 ).

gcloud app deploy --version v1

پس از استقرار، می‌توانید به بخش نسخه‌های موتور برنامه در Google Cloud Console بروید تا نسخه جدید برنامه خود را ببینید که با پیام جدید به تمام ترافیک سرویس می‌دهد.

8cc0cc992b4e07ed.png

9. داشبورد و تقسیم ترافیک

در App Engine، در بخش داشبورد، می‌توانید تعدادی داشبورد برای برنامه‌تان برای تأخیر، CPU و غیره مشاهده کنید. خودتان آنها را کاوش کنید.

5c879431935b080d.png

در بخش نسخه‌ها، می‌توانید نسخه‌های توسعه‌یافته برنامه خود را ببینید و می‌توانید ترافیک را بین نسخه‌های مختلف در بخش تقسیم ترافیک تقسیم کنید. بیایید ترافیک را بین دو نسخه تقسیم کنیم:

176a2e22e755b6d3.png

10. تبریک می گویم!

C leanup

زمان آن رسیده است که برنامه را خاموش کنید تا در هزینه صرفه جویی کنید و در کل شهروند ابری خوبی باشید.

به بخش نسخه های App Engine بروید.

7e9b3b4406e785b9.png

نسخه را انتخاب کنید و آن را متوقف کنید.

7f80d9ff2c959e0.png

پس از توقف نسخه، نمونه های پشتیبان حذف خواهند شد و باید تعداد نمونه ها را مشاهده کنید تا به صفر برسند.

29f3cb5c71225b2d.png

آنچه را پوشش داده ایم

آنجا! شما یک برنامه ASP.NET Core ایجاد کرده اید، آن را به عنوان یک ظرف Docker بسته بندی کرده اید و آن را در Google App Engine Flexible مستقر کرده اید.

  • چگونه یک برنامه ساده ASP.NET Core را به عنوان یک ظرف Docker بسته بندی کنیم.
  • نحوه استقرار یک برنامه ساده ASP.NET Core در App Engine.

مراحل بعدی

مجوز

این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.