סביבת זמן הריצה של .NET היא מחסנית התוכנה שאחראית להתקנת קוד האפליקציה והתלות שלה, ולאחר מכן להפעלת האפליקציה בסביבה הגמישה.
גרסאות .NET
.NET 10 מבוסס על buildpacks. רשימה מלאה של גרסאות .NET הנתמכות וגרסאות Ubuntu התואמות שלהן זמינה בלוח הזמנים של תמיכה בזמן ריצה.
כדי להשתמש בגרסת .NET נתמכת, צריך:
מעדכנים את קובץ הפרויקט עם גרסת .NET שרוצים להשתמש בה.
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> <ItemGroup> <None Update="app.yaml"> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </None> </ItemGroup> </Project>מתקינים את גרסה 420.0.0 ואילך של ה-CLI של gcloud. כדי לעדכן את כלי ה-CLI, מריצים את הפקודה gcloud components update. כדי לראות את הגרסה המותקנת, אפשר להריץ את הפקודה gcloud version.
מציינים את ההגדרה
operating_systemבקובץapp.yaml:runtime: aspnetcore env: flex runtime_config: operating_system: "ubuntu24"אפשר גם לציין גרסה של זמן ריצה על ידי הוספת ההגדרה
runtime_versionלקובץapp.yaml. כברירת מחדל, אם לא מציינים את ההגדרהruntime_version, App Engine משתמש בגרסת ה-LTS העדכנית ביותר של .NET שזמינה. לדוגמה, קובץapp.yamlנראה כך כשמציינים .NET 10 ב-Ubuntu 24:runtime: aspnetcore env: flex runtime_config: runtime_version: "10" operating_system: "ubuntu24"
גרסאות קודמות של זמן הריצה
כדי לטרגט גרסה ספציפית של .NET SDK, צריך לעדכן את קובץ הפרויקט. למידע נוסף, ראו העברה מ-ASP.NET Core 3.1 ל-6.0.
אם רוצים להשתמש ב-GKE או במארחי Docker אחרים, צריך ליצור Dockerfile שמעתיק את קוד האפליקציה ומתקין תלות. מידע נוסף זמין במאמר בנושא סביבות ריצה בהתאמה אישית.
כדי לפרוס את אפליקציית ה- .NET, מריצים את הפקודות הבאות מהספרייה הבסיסית שבה נמצאת האפליקציה:
dotnet restore
dotnet publish -c Release
gcloud app deploy
תמיכה בסביבות זמן ריצה אחרות של .NET
אם אתם צריכים להשתמש בגרסת .NET שלא נתמכת, אתם יכולים ליצור סביבת ריצה בהתאמה אישית ולבחור תמונת בסיס תקינה עם גרסת .NET שאתם צריכים.
לגבי תמונות בסיס שסופקו על ידי Google או תמונות בסיס של Docker .NET, אפשר לעיין במאמר בנושא יצירת סביבות ריצה בהתאמה אישית.
פרוטוקול HTTPS ושרתי proxy להעברה
App Engine מפסיק את חיבור ה-HTTPS במאזן העומסים ומעביר את הבקשה לאפליקציה. אפליקציות יכולות לבדוק את X-Forwarded-Proto כדי לראות אם הפרוטוקול המקורי היה HTTP או HTTPS.
יש גם אפליקציות שצריכות לזהות את כתובת ה-IP של המשתמש. האפשרות הזו זמינה בכותרת הרגילה X-Forwarded-For.
הארכת זמן הריצה
אפשר להשתמש בסביבה הגמישה של זמן הריצה של .NET כדי ליצור זמן ריצה בהתאמה אישית.
זמני ריצה בהתאמה אישית מוגדרים באמצעות Dockerfile.
אתם יכולים להתאים אישית את המקשים Dockerfile ו-.dockerignore כמו שאתם רוצים. לבסוף, תצטרכו לציין runtime: custom במקום runtime: aspnetcore ב-app.yaml. מידע נוסף זמין במאמר בנושא התאמה אישית של .NET Runtime.
משתני סביבה
משתני הסביבה הבאים מוגדרים על ידי סביבת זמן הריצה:
| משתנה הסביבה | תיאור |
|---|---|
GAE_INSTANCE |
השם של המופע הנוכחי. |
GAE_MEMORY_MB |
נפח הזיכרון שזמין לתהליך האפליקציה. |
GAE_SERVICE |
שם השירות שצוין בקובץ app.yaml
של האפליקציה, או אם לא צוין שם שירות, הוא מוגדר כ-default. |
GAE_VERSION |
תווית הגרסה של האפליקציה הנוכחית. |
GOOGLE_CLOUD_PROJECT |
מזהה הפרויקט שמשויך לאפליקציה, שמופיע במסוף Google Cloud |
PORT |
היציאה שתקבל בקשות HTTP. |
אפשר להגדיר משתני הגדרה נוספים באמצעות appsettings.json.
שרת מטא-נתונים
כל מופע של האפליקציה יכול להשתמש בשרת המטא-נתונים של Compute Engine כדי לשלוח שאילתות לגבי המופע, כולל שם המארח, כתובת ה-IP החיצונית, מזהה המופע, מטא-נתונים מותאמים אישית ופרטי חשבון השירות. ב-App Engine אי אפשר להגדיר מטא-נתונים מותאמים אישית לכל מופע, אבל אפשר להגדיר מטא-נתונים מותאמים אישית ברמת הפרויקט ולקרוא אותם מהמופעים של App Engine ו-Compute Engine.
הפונקציה בדוגמה הזו משתמשת בשרת המטא-נתונים כדי לקבל את כתובת ה-IP החיצונית של המכונה: