۱. مرور کلی
ASP.NET Core یک چارچوب متنباز و چندسکویی جدید برای ساخت برنامههای مدرن مبتنی بر ابر و متصل به اینترنت با استفاده از زبان برنامهنویسی C# است.
در این آزمایش، شما یک برنامه ساده ASP.NET Core را در محیط انعطافپذیر App Engine مستقر خواهید کرد. این آزمایشگاه کد بر اساس ساخت و راهاندازی برنامه ASP.NET Core از آزمایشگاه کد Google Cloud Shell ساخته شده است. بهتر است قبل از انجام این آزمایش، ابتدا آن آزمایش را انجام دهید.
ایجاد، نگهداری و مقیاسپذیری برنامههای Google App Engine با توجه به تغییر نیازهای ترافیک و ذخیرهسازی دادهها آسان است. با App Engine، هیچ سروری برای مدیریت وجود ندارد. شما به سادگی برنامه خود را آپلود میکنید و آماده استفاده است.
اپلیکیشنهای App Engine به طور خودکار بر اساس ترافیک ورودی مقیاسپذیر میشوند. App Engine به صورت بومی از متعادلسازی بار، میکروسرویسها، احراز هویت، پایگاههای داده SQL و NoSQL، Memcache، تقسیم ترافیک، ثبت وقایع، جستجو، نسخهبندی، پیادهسازی و بازگرداندن نسخههای قدیمی به نسخههای جدید و اسکن امنیتی پشتیبانی میکند که همه آنها قابلیت سفارشیسازی بالایی دارند.
محیطهای App Engine، یعنی محیط استاندارد و محیط انعطافپذیر ، از زبانهای برنامهنویسی متعددی از جمله C#، جاوا، پایتون، PHP، Node.js، Go و موارد دیگر پشتیبانی میکنند. این دو محیط به کاربران حداکثر انعطافپذیری را در نحوه رفتار برنامهشان میدهند، زیرا هر محیط نقاط قوت خاصی دارد. برای اطلاعات بیشتر، انتخاب محیط App Engine را مطالعه کنید.
آنچه یاد خواهید گرفت
- چگونه یک برنامه ساده ASP.NET Core را به عنوان یک کانتینر داکر بستهبندی کنیم؟
- چگونه یک برنامه ساده ASP.NET Core را روی App Engine مستقر کنیم؟
آنچه نیاز دارید
چگونه از این آموزش استفاده خواهید کرد؟
تجربه خود را با پلتفرم ابری گوگل چگونه ارزیابی میکنید؟
۲. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



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

اگر قبلاً Cloud Shell را شروع نکردهاید، یک صفحه میانی (در پایین صفحه) به شما نمایش داده میشود که توضیح میدهد چیست. در این صورت، روی ادامه کلیک کنید (و دیگر هرگز آن را نخواهید دید). آن صفحه یکبار مصرف به این شکل است:

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

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما پر شده است. این ماشین یک دایرکتوری خانگی ۵ گیگابایتی دائمی ارائه میدهد و در فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. بخش عمدهای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را میتوان به سادگی با یک مرورگر یا کرومبوک انجام داد.
پس از اتصال به Cloud Shell، باید ببینید که از قبل احراز هویت شدهاید و پروژه از قبل روی شناسه پروژه شما تنظیم شده است.
- برای تأیید احراز هویت، دستور زیر را در 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`
- دستور زیر را در Cloud Shell اجرا کنید تا تأیید کنید که دستور gcloud از پروژه شما اطلاع دارد:
gcloud config list project
خروجی دستور
[core] project = <PROJECT_ID>
اگر اینطور نیست، میتوانید با این دستور آن را تنظیم کنید:
gcloud config set project <PROJECT_ID>
خروجی دستور
Updated property [core/project].
۳. یک برنامه ASP.NET Core در Cloud Shell ایجاد کنید
در اعلان Cloud Shell، میتوانید با فهرست کردن SDK های .NET نصب شده، تأیید کنید که ابزار خط فرمان 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.
۴. برنامه ASP.NET Core را اجرا کنید
تقریباً آماده اجرای برنامه خود هستیم. به پوشه برنامه بروید.
cd HelloWorldAspNetCore
در نهایت، برنامه را اجرا کنید.
dotnet run --urls=http://localhost:8080
برنامه شروع به گوش دادن به پورت ۸۰۸۰ میکند.
Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.
برای تأیید اجرای برنامه، روی دکمه پیشنمایش وب در بالا سمت راست کلیک کنید و «پیشنمایش روی پورت ۸۰۸۰» را انتخاب کنید.

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

وقتی مطمئن شدید که برنامه در حال اجرا است، Ctrl+C را فشار دهید تا برنامه بسته شود.
۵. برنامه ASP.NET Core را منتشر کنید
حالا، برنامه را منتشر کنید تا یک DLL مستقل با استفاده از دستور dotnet publish دریافت کنید.
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/
۶. ایجاد app.yaml برای موتور برنامه انعطافپذیر
فایل app.yaml نحوهی استقرار برنامه در App Engine، که در این مورد، محیط انعطافپذیر App Engine است، را شرح میدهد.
ابتدا، به پوشه publish بروید. این پوشه باید در پوشه bin/Release باشد، اما مسیر دقیق آن به نسخه .NET بستگی دارد:
cd bin/Release/netcoreapp3.1/publish/
یک فایل app.yaml درون پوشه publish ایجاد کنید:
cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT
توجه کنید که چگونه فایل app.yaml محیط را به عنوان flex و زمان اجرا را به عنوان aspnetcore مشخص میکند.
۷. استقرار در App Engine انعطافپذیر
شما آمادهاید تا برنامه خود را با استفاده از gcloud در App Engine flexible مستقر کنید. در داخل دایرکتوری 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]
پس از استقرار برنامه، با باز کردن آدرس اینترنتی http://<project-id>.appspot.com در مرورگر وب خود، از آن بازدید کنید.
صفحه وب پیشفرض ASP.NET Core را در یک تب جدید مشاهده خواهید کرد.

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

۸. نسخه جدیدی از سرویس خود را مستقر کنید
در برههای از زمان، برنامهای که به محیط عملیاتی منتقل کردهاید، نیاز به رفع اشکالات یا ویژگیهای اضافی خواهد داشت. App Engine اینجاست تا به شما کمک کند نسخه جدیدی را بدون تأثیر بر کاربران، به محیط عملیاتی منتقل کنید.
ابتدا، بیایید برنامه را تغییر دهیم. ویرایشگر کد را از Cloud Shell باز کنید.

به 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
پس از استقرار، میتوانید به بخش نسخههای App Engine در Google Cloud Console بروید تا نسخه جدید برنامه خود را که با پیام جدید به تمام ترافیک سرویس میدهد، مشاهده کنید.

۹. داشبوردها و تقسیم ترافیک
در App Engine، در بخش Dashboard، میتوانید تعدادی داشبورد برای برنامه خود از نظر تأخیر، CPU و غیره مشاهده کنید. خودتان آنها را بررسی کنید.

در بخش Versions، میتوانید نسخههای پیادهسازیشدهی برنامهی خود را مشاهده کنید و در بخش Traffic Splitting میتوانید ترافیک را بین نسخههای مختلف تقسیم کنید. بیایید ترافیک را بین دو نسخه تقسیم کنیم:

۱۰. تبریک میگویم!
پاکسازی C
وقت آن است که برنامه را خاموش کنید تا در هزینهها صرفهجویی کنید و در کل یک شهروند ابری خوب باشید.
به بخش نسخههای App Engine بروید.

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

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

آنچه ما پوشش دادهایم
خب! شما یک برنامه ASP.NET Core ایجاد کردهاید، آن را به عنوان یک کانتینر Docker بستهبندی کردهاید و آن را در Google App Engine Flexible مستقر کردهاید.
- چگونه یک برنامه ساده ASP.NET Core را به عنوان یک کانتینر داکر بستهبندی کنیم؟
- چگونه یک برنامه ساده ASP.NET Core را روی App Engine مستقر کنیم؟
مراحل بعدی
- درباره ویندوز روی پلتفرم ابری گوگل بیشتر بدانید.
- درباره .NET در پلتفرم ابری گوگل بیشتر بدانید.
- درباره SQL Server در پلتفرم ابری گوگل بیشتر بدانید.
- درباره ابزارهای ابری برای ویژوال استودیو بیشتر بدانید.
- درباره ابزارهای ابری برای PowerShell بیشتر بدانید.
مجوز
این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.