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. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
- شناسه پروژه باید در تمام پروژههای Google Cloud منحصربهفرد باشد و تغییرناپذیر باشد (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان
PROJECT_ID
شناخته میشود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا میتوانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود. - یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعملهای «پاکسازی» را که در انتهای Codelab یافت میشود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
Cloud Shell را فعال کنید
- از Cloud Console، روی Activate Cloud Shell کلیک کنید
.
اگر قبلاً Cloud Shell را راهاندازی نکردهاید، یک صفحه میانی (در زیر تاشو) برای شما نمایش داده میشود که آن را توصیف میکند. اگر اینطور است، روی Continue کلیک کنید (و دیگر آن را نخواهید دید). در اینجا به نظر می رسد که آن صفحه یک بار مصرف:
تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.
این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما بارگذاری شده است. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد شبکه و احراز هویت را بسیار افزایش می دهد. بیشتر، اگر نه همه، کار شما در این کد لبه را می توان به سادگی با یک مرورگر یا Chromebook انجام داد.
پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی ID پروژه شما تنظیم شده است.
- برای تایید احراز هویت، دستور زیر را در 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].
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» را انتخاب کنید.
صفحه وب پیش فرض ASP.NET Core را خواهید دید:
هنگامی که تأیید کردید که برنامه در حال اجرا است، 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 را در یک تب جدید خواهید دید.
همچنین می توانید نگاهی به تصویر کانتینری که در فضای ابری برای شما ایجاد شده است بیاندازید. در کنسول ابری، به Container Registry > Images بروید و سپس در پوشه appengine، باید تصویر برنامه خود را ببینید.
8. یک نسخه جدید از سرویس خود را مستقر کنید
در برخی موارد، برنامهای که برای تولید به کار گرفتهاید به رفع اشکال یا ویژگیهای اضافی نیاز دارد. 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
پس از استقرار، میتوانید به بخش نسخههای موتور برنامه در Google Cloud Console بروید تا نسخه جدید برنامه خود را ببینید که با پیام جدید به تمام ترافیک سرویس میدهد.
9. داشبورد و تقسیم ترافیک
در App Engine، در بخش داشبورد، میتوانید تعدادی داشبورد برای برنامهتان برای تأخیر، CPU و غیره مشاهده کنید. خودتان آنها را کاوش کنید.
در بخش نسخهها، میتوانید نسخههای توسعهیافته برنامه خود را ببینید و میتوانید ترافیک را بین نسخههای مختلف در بخش تقسیم ترافیک تقسیم کنید. بیایید ترافیک را بین دو نسخه تقسیم کنیم:
10. تبریک می گویم!
C leanup
زمان آن رسیده است که برنامه را خاموش کنید تا در هزینه صرفه جویی کنید و در کل شهروند ابری خوبی باشید.
به بخش نسخه های App Engine بروید.
نسخه را انتخاب کنید و آن را متوقف کنید.
پس از توقف نسخه، نمونه های پشتیبان حذف خواهند شد و باید تعداد نمونه ها را مشاهده کنید تا به صفر برسند.
آنچه را پوشش داده ایم
آنجا! شما یک برنامه ASP.NET Core ایجاد کرده اید، آن را به عنوان یک ظرف Docker بسته بندی کرده اید و آن را در Google App Engine Flexible مستقر کرده اید.
- چگونه یک برنامه ساده ASP.NET Core را به عنوان یک ظرف Docker بسته بندی کنیم.
- نحوه استقرار یک برنامه ساده ASP.NET Core در App Engine.
مراحل بعدی
- درباره Windows در Google Cloud Platform بیشتر بیاموزید.
- درباره .NET در Google Cloud Platform بیشتر بیاموزید.
- درباره SQL Server در Google Cloud Platform بیشتر بیاموزید.
- درباره Cloud Tools for Visual Studio بیشتر بیاموزید.
- درباره Cloud Tools for PowerShell بیشتر بیاموزید.
مجوز
این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.