1. نظرة عامة
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# وJava وPython وPHP وNode.js وGo وغيرها. تمنح البيئتان المستخدمين أقصى قدر من المرونة في كيفية عمل التطبيق، حيث إن كل بيئة لها نقاط قوة معينة. للمزيد من المعلومات، يُرجى قراءة المقالة اختيار بيئة App Engine.
ما ستتعرَّف عليه
- كيفية تجميع تطبيق ASP.NET Core بسيط كحاوية Docker.
- كيفية نشر تطبيق ASP.NET Core بسيط على App Engine.
المتطلبات
كيف ستستخدم هذا البرنامج التعليمي؟
ما هو تقييمك لتجربتك مع Google Cloud Platform؟
2. الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي عبارة عن سلسلة أحرف لا تستخدمها Google APIs، ويمكنك تحديثها في أي وقت.
- يجب أن يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الرجوع إلى رقم تعريف المشروع (والذي يتم تحديده عادةً على أنّه
PROJECT_ID
). لذلك، إذا لم يعجبك، يمكنك إنشاء رقم تعريف عشوائي آخر أو يمكنك تجربة رقم تعريف المشروع الخاص بك ومعرفة ما إذا كان متاحًا. بعد ذلك تكون الحالة "مجمّدة". بعد إنشاء المشروع. - هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. لإيقاف تشغيل الموارد حتى لا تتحمل الفوترة بعد أكثر من هذا البرنامج التعليمي، اتبع أي عملية "تنظيف". التعليمات الموجودة في نهاية الدرس التطبيقي حول الترميز. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.
تفعيل Cloud Shell
- من Cloud Console، انقر على تفعيل Cloud Shell .
إذا لم يسبق لك بدء تشغيل Cloud Shell، ستظهر لك شاشة وسيطة (الجزء السفلي غير المرئي من الصفحة) تصف ماهيتها. إذا كان الأمر كذلك، فانقر على متابعة (ولن تراه مرة أخرى مطلقًا). إليك ما تبدو عليه هذه الشاشة التي تُستخدم لمرة واحدة:
من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بخدمة Cloud Shell بضع دقائق فقط.
يتم تحميل هذا الجهاز الافتراضي مع جميع أدوات التطوير التي تحتاجها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ معظم عملك، إن لم يكن كلّه، في هذا الدرس التطبيقي حول الترميز باستخدام متصفّح أو جهاز Chromebook.
بعد الربط بخدمة 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].
3- إنشاء تطبيق ASP.NET Core في Cloud Shell
في طلب Cloud Shell، يمكنك التأكّد من أنّ أداة سطر الأوامر "dotnet
" مثبَّتة من قبل من خلال إدراج حِزم تطوير البرامج (SDK) .NET المُثبَّتة:
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
.
dotnet publish -c Release
يعرض تشغيل publish
بعض الرسائل التي تحتوي على مكتبة الربط الديناميكي التي تم نشرها بنجاح في نهاية العملية.
...
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
ولكن يعتمد المسار الدقيق على إصدار .NET:
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 في علامة تبويب جديدة.
يمكنك أيضًا إلقاء نظرة على صورة الحاوية التي تمّ إنشاؤها لك في السحابة الإلكترونية. في Cloud Console، انتقِل إلى Container Registry > الصور، ثم في مجلد 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,
انشر التطبيق للحصول على مكتبة الربط الديناميكي.
dotnet publish -c Release
انتقِل إلى دليل النشر.
cd bin/Release/netcoreapp3.1/publish/
يمكنك الآن نشر إصدار جديد من تطبيقك (v1
في هذه الحالة).
gcloud app deploy --version v1
وبعد نشر الإصدار، يمكنك الانتقال إلى قسم "إصدارات App Engine" في Google Cloud Console للاطّلاع على الإصدار الجديد من تطبيقك الذي يخدم جميع الزيارات من خلال الرسالة الجديدة.
9. لوحات المعلومات وتقسيم الزيارات
في App Engine، ضمن قسم لوحة البيانات، يمكنك مشاهدة عدد من لوحات التحكم لتطبيقك بشأن وقت الاستجابة ووحدة المعالجة المركزية وما إلى ذلك. يمكنك استكشافها بنفسك.
ضمن قسم "الإصدارات"، يمكنك الاطّلاع على الإصدارات المنشورة من تطبيقك، ويمكنك تقسيم عدد الزيارات بين الإصدارات المختلفة في قسم "تقسيم الزيارات". لنقسم عدد الزيارات بين إصدارين:
10. تهانينا!
تنظيف
حان الوقت لإيقاف التطبيق لتوفير التكاليف وللبقاء في المواطن الصالح العام على السحابة الإلكترونية.
انتقِل إلى قسم "الإصدارات" في App Engine.
حدد الإصدار وأوقفه.
بعد إيقاف الإصدار، سيتم حذف النُسخ الافتراضية، ومن المفترض أن يقل عدد المثيلات إلى صفر.
النقاط التي تناولناها
هناك! لقد أنشأت تطبيق ASP.NET Core، وحزمته كحاوية Docker، ونشرته في بيئة Google App Engine المرنة.
- كيفية تجميع تطبيق ASP.NET Core بسيط كحاوية Docker.
- كيفية نشر تطبيق ASP.NET Core بسيط على App Engine.
الخطوات التالية
- مزيد من المعلومات حول Windows على Google Cloud Platform.
- مزيد من المعلومات حول .NET على Google Cloud Platform
- تعرَّف على المزيد من المعلومات عن SQL Server على Google Cloud Platform.
- مزيد من المعلومات حول أدوات السحابة الإلكترونية في Visual Studio
- تعرَّف على مزيد من المعلومات حول أدوات السحابة الإلكترونية لـ PowerShell.
الترخيص
هذا العمل مرخّص بموجب رخصة المشاع الإبداعي 2.0 مع نسب العمل إلى مؤلف عام.