- توفر صفحات Razor نموذجًا يركز على الصفحة فوق ASP.NET Core، حيث تشترك في نفس التوجيه القوي والبرامج الوسيطة ومحرك عرض Razor مثل MVC.
- تتمحور المشاريع الحقيقية حول مجلد الصفحات، wwwroot، appsettings.json و Program.cs، حيث يتم تكوين الخدمات والبرامج الوسيطة ومعالجة الأخطاء.
- تعمل أدوات مثل Visual Studio و Rider و VS Code على تبسيط عملية التطوير وتصحيح الأخطاء والتنقل وإعادة هيكلة النماذج والعروض وبنية Razor.
- يعمل ASP.NET Core على تبسيط نشر تطبيقات Razor إلى IIS أو Azure أو الخوادم المخصصة أو Docker، مما يتيح عمليات نشر قابلة للتوسع والتكرار.

إذا كنت قادمًا من Angular بالإضافة إلى ASP.NET Web API وبدأت تستمتع بـ C# في الواجهة الخلفية، فإن Razor Pages هي طريقة طبيعية بشكل لا يصدق لجلب تلك المتعة إلى الواجهة الأمامية دون التخلي عن معرفتك الحالية بـ JavaScript. بدلاً من القفز مباشرة إلى مجموعة أدوات واجهة مستخدم مختلفة تمامًا، يمكنك البقاء في منطقة ASP.NET Core المألوفة، واستخدام بناء جملة Razor للعرض من جانب الخادم، ولا تزال تستخدم JavaScript أينما كان ذلك منطقيًا.
تُعد صفحات ASP.NET Core Razor هي النهج الموصى به من قبل Microsoft لبناء تطبيقات الويب الحديثة على .NET، حيث تقدم نموذجًا نظيفًا قائمًا على الصفحات ويعتمد على خط أنابيب ASP.NET Core القوي. يتميز هذا النظام بتوافقه مع مختلف المنصات، ويعمل بسلاسة مع أدوات مثل Visual Studio وVisual Studio Code وJetBrains Rider، ويتيح التوسع من النماذج الأولية الصغيرة إلى التطبيقات الجاهزة للإنتاج والمدعومة بقواعد البيانات. في هذا الدليل، سنشرح بالتفصيل كيفية بناء تطبيقات Razor Pages العملية، وكيف يربط ملف Program.cs جميع المكونات معًا، وكيفية عمل الملفات الثابتة والتكوين، بالإضافة إلى دور الأدوات وتصحيح الأخطاء والنشر.
ما هي صفحات ASP.NET Core Razor Pages في الواقع (وكيف تقارن بـ MVC)
صفحات Razor هي ميزة في ASP.NET Core تتيح لك إنشاء تطبيقات الويب حول الصفحات بدلاً من وحدات التحكم، مما يوفر نموذجًا ذهنيًا أبسط مع الاستمرار في استخدام نفس الإطار الأساسي مثل MVC. يعمل النظام من الداخل على نفس مجموعة التوجيه والبرمجيات الوسيطة والاستضافة مثل وحدات التحكم والعروض، ولكن كل صفحة تتعامل مع سلوكها الخاص بدلاً من مركزة كل شيء في فئات وحدة التحكم.
يتم تمثيل كل صفحة Razor عادةً بزوج من الملفات: ملف .cshtml للترميز وملف .cshtml.cs لمنطق C# الخاص بالصفحة. يحتوي ملف .cshtml على HTML الخاص بك ممزوجًا بصيغة Razor (على سبيل المثال الحلقات والشروط ومساعدي HTML)، بينما يحتوي ملف .cshtml.cs الخاص بالرمز الخلفي على طرق المعالجة مثل OnGet و OnPost وخصائص النموذج وأي منطق مطلوب لعرض الصفحة أو معالجتها.
قبل ظهور صفحات Razor، كان النمط السائد في ASP.NET هو MVC، حيث تقوم وحدات التحكم بإرجاع طرق العرض وتوجيه جميع الطلبات من خلال أساليب الإجراءات. لا يزال نمط MVC مدعومًا بالكامل وهو نمط تم اختباره في المعارك وله اتفاقيات قوية، ولكن في العديد من السيناريوهات يكون من الأسهل التفكير في صفحات Razor لأن الكود الذي يقوم بتحميل ومعالجة الصفحة موجود فعليًا بجوار ترميزها بدلاً من أن يكون مدفونًا في وحدة تحكم منفصلة.
على الرغم من أن صفحات Razor تحول التركيز بعيدًا عن وحدات التحكم، إلا أنها لا تزال تستخدم نفس محرك عرض Razor وتدعم كلاً من HtmlHelpers و TagHelpers لإنشاء HTML ديناميكي. تُعدّ TagHelpers مفيدة للغاية: فهي تُوسّع علامات HTML العادية بسمات مثل asp-action, asp-controller or asp-route وبالتالي يمكنك ربط الروابط والنماذج بنقاط النهاية الخلفية دون كتابة مجموعة من عناوين URL اليدوية أو جافا سكريبت المضمنة.
بالنسبة للمطورين الذين يعرفون بالفعل لغة جافا سكريبت وعاشوا في أطر عمل SPA، تقدم صفحات Razor نهجًا هجينًا: HTML يتم عرضه من جانب الخادم لتحميل سريع في البداية وتحسين محركات البحث، مع وضع جافا سكريبت ومكتبات الواجهة الأمامية فوقها عند الحاجة. أنت لست مقيدًا بأي إطار عمل JS معين، ويمكنك الاحتفاظ بالواجهة الخلفية والواجهة الأمامية في نفس الحل، مما يبسط عملية النشر والصيانة.
إنشاء وتشغيل تطبيق ويب باستخدام صفحات Razor
عند إنشاء مشروع ASP.NET Core Razor Pages جديد باستخدام Visual Studio أو Visual Studio Code أو Rider، يقوم القالب بربط تطبيق بسيط ولكنه كامل، بما في ذلك Program.cs ومجلد Pages وملفات التكوين وجذر الويب الثابت. بمجرد إخراجها من العلبة، ستحصل على موقع جاهز للعمل يمكنك تشغيله على الفور ثم تطويره إلى شيء أكثر تطوراً مثل كتالوج أفلام أو أي تطبيق آخر يعتمد على البيانات.
قبل تشغيل التطبيق على HTTPS، يحتاج ASP.NET Core إلى استخدام شهادة تطوير يثق بها نظام التشغيل الخاص بك، وفي المرة الأولى التي تقوم فيها بتشغيل المشروع، قد ترى مربع حوار يطلب منك الوثوق به. عند ظهور مربع الحوار هذا، اختر نعم يشير هذا إلى أنك موافق على استخدام شهادة التطوير المحلية لحركة مرور HTTPS على جهازك، وهو أمر مطلوب لإجراء اختبار صحيح لنقاط النهاية الآمنة دون ظهور تحذيرات من المتصفح.
في أنظمة التشغيل ويندوز، ماك أو إس، أو لينكس، يتيح لك برنامج Visual Studio Code تشغيل التطبيق بالضغط على CTRL+F5 لتشغيل البرنامج بدون تصحيح الأخطاء، أو باستخدام لوحة التشغيل والتصحيح إذا كنت ترغب في إرفاق مصحح الأخطاء. في المرة الأولى، قد يطلب منك برنامج VS Code تحديد نوع مصحح الأخطاء مثل C#, .NET 5+ و .NET Core أو تكوين إطلاق محدد مثل سي شارب: RazorPagesMovie [https] RazorPagesMovie يعتمد ذلك على إصدار .NET وتكوين مساحة العمل الخاصة بك.
بعد التشغيل، يفتح متصفحك الافتراضي على عنوان URL مشابه لـ https://localhost:<port>، حيث يتم تعيين المنفذ بشكل عشوائي أو تحديده في ملف launchSettings.json، وأنت تنظر إلى الصفحة الرئيسية التي يقدمها تطبيق Razor Pages. في بعض القوالب، سترى بدلاً من ذلك http://localhost:5001 أو ميناء آخر؛ الأمر الأساسي هو أن localhost يشير ذلك إلى أنه جهازك الخاص وليس جهازًا خارجيًا.
بعد الانتهاء من الاختبار، يمكنك إيقاف تشغيل التطبيق من بيئة التطوير المتكاملة (IDE): في Visual Studio Code، استخدم قائمة "تشغيل" وحدد "إيقاف التصحيح" أو اضغط على زر "إيقاف". تغير+F5بينما في Visual Studio لنظام التشغيل Mac، يمكنك استخدام Debug > Stop Debugging. يؤدي هذا إلى إيقاف تشغيل خادم الويب Kestrel الذي تم تشغيله للجلسة، ويحرر المنفذ لعمليات التشغيل الأخرى.
فهم بنية المشروع: المجلدات والملفات الرئيسية
يتم تنظيم تطبيقات Razor Pages الواقعية حول عدد قليل من المجلدات المهمة وملفات التكوين التي ستعمل معها باستمرار: Pages و wwwroot و appsettings.json و Program.cs (وفي الإصدارات الأقدم، Startup.cs). يُعدّ التمرّس في التعامل مع هذه الأجزاء أمرًا بالغ الأهمية لأن كل برنامج تعليمي أو نموذج أو مشروع إنتاجي تقريبًا يستخدم نفس الاصطلاحات.
يُعد مجلد الصفحات هو قلب مشروع Razor Pages، حيث يحتوي على جميع صفحات .cshtml وملفات التعليمات البرمجية .cshtml.cs الخاصة بها بالإضافة إلى التخطيط المشترك والعروض الجزئية. يمثل كل زوج من الصفحات (على سبيل المثال Index.cshtml و Index.cshtml.cs) نقطة نهاية قابلة للاستدعاء في تطبيقك، والملفات الخاصة التي تبدأ بشرطة سفلية، مثل _Layout.cshtml، تحديد المحتوى المعاد استخدامه عبر صفحات متعددة.
ملف التخطيط، والذي يُسمى عادةً _Layout.cshtml، يحدد عناصر واجهة المستخدم لموقعك، مثل شريط التنقل العلوي والتذييل وإشعار حقوق النشر، ويوفر مكانًا لعرض محتوى كل صفحة على حدة. عند تغيير التخطيط، فإنك تؤثر على الفور على مظهر وشعور جميع صفحات Razor التي تستخدمه، لذا فهو المكان الأمثل لتحرير القوائم والعلامات التجارية والبرامج النصية أو الأنماط المشتركة.
مجلد wwwroot هو جذر الويب المخصص حيث توجد الأصول الثابتة، بما في ذلك ملفات CSS و JavaScript والصور وملفات HTML العادية التي يمكن تقديمها مباشرة بواسطة خادم الويب. يمكن الوصول إلى أي شيء يتم وضعه تحت wwwroot بواسطة المتصفح (رهناً بتكوين ملفك الثابت)، مما يجعله المكان المناسب لأوراق أنماط الموقع ومكتبات جانب العميل والصور المشار إليها في ترميزك.
يتم تخزين إعدادات التطبيق عادةً في appsettings.json (والمتغيرات الخاصة بالبيئة مثل appsettings.Development.json)، والتي تحتوي على إعدادات مثل سلاسل الاتصال وعلامات الميزات. يقوم نظام تكوين ASP.NET Core بتحميل هذه الملفات ودمجها مع متغيرات البيئة وموفري الخدمات الآخرين، مما يجعل من السهل ربط الأقسام بفئات الخيارات ذات الأنواع القوية في التعليمات البرمجية الخاصة بك.
Program.cs و ASP.NET Core pipeline
يحتوي ملف Program.cs على نقطة الدخول لتطبيق Razor Pages الخاص بك ويحدد كيفية تكوين مضيف الويب والخدمات وخط أنابيب البرامج الوسيطة قبل وصول الطلب الأول إلى موقعك. في الإصدارات الحديثة من ASP.NET Core، يستخدم ملف Program.cs نموذج "استضافة مبسطة" مع عبارة رئيسية تقوم بإنشاء WebApplicationBuilder ثم يقوم ببناء وتكوين WebApplication حتة.
يبدأ النمط النموذجي في ملف Program.cs بـ var builder = WebApplication.CreateBuilder(args); والذي يقوم بإعداد مضيف بإعدادات افتراضية شائعة، ثم يستدعي builder.Services.AddRazorPages(); لتسجيل صفحات Razor مع حاوية حقن التبعية. بعد تهيئة الخدمات، var app = builder.Build(); يقوم بإنشاء كائن التطبيق الذي تقوم بعد ذلك بربطه بالبرامج الوسيطة ونقاط النهاية.
يعتمد التعامل مع الأخطاء وسلوك الأمان بشكل كبير على البيئة، لذلك عادةً ما ترى فحصًا للبيئة مثل if (!app.Environment.IsDevelopment()) لتمكين ميزات بجودة الإنتاج. ستجد عادةً داخل تلك الحالة app.UseExceptionHandler("/Error"); والذي يرسل الأخطاء غير المعالجة إلى صفحة مخصصة للأخطاء، و app.UseHsts(); والذي يقوم بتفعيل بروتوكول أمان النقل الصارم (HSTS) لتوجيه المتصفحات لاستخدام HTTPS دائمًا لنطاقك.
ثم يتم تجميع خط أنابيب البرمجيات الوسيطة باستخدام استدعاءات مثل app.UseHttpsRedirection();, app.UseStaticFiles(); or app.MapStaticAssets();, app.UseRouting(); واختياريا app.UseAuthorization(); متبوعًا بربط نقاط النهاية. تُجبر إعادة توجيه HTTPS طلبات HTTP غير الآمنة على الترقية إلى HTTPS، وتسمح البرامج الوسيطة للملفات الثابتة (أو تعيين الأصول الثابتة الأحدث في .NET 9) بتقديم الموارد مباشرة من wwwroot، ويحدد التوجيه نقطة النهاية التي تتعامل مع كل عنوان URL وارد.
وأخيرًا، يتم ربط صفحات Razor بالتوجيه باستخدام app.MapRazorPages(); يمكن ربطها اختيارياً بـ .WithStaticAssets(); في القوالب الأحدث لدمج تحسين الأصول الثابتة، ويتم تشغيل التطبيق باستخدام app.Run();. عند هذه النقطة، يستمع التطبيق على المنافذ المُكوّنة ويكون خادم Kestrel جاهزًا للتعامل مع الطلبات الحقيقية، سواء محليًا في بيئة التطوير أو على مضيف إنتاج مثل IIS أو Azure App Service أو Docker.
صفحات Razor، والنماذج، ونماذج العرض في التطبيقات الحقيقية
خلف كل تطبيق Razor Pages غير تافه توجد مجموعة من نماذج المجال ونماذج العرض التي تمثل بياناتك وكيفية عرضها، سواء كنت تدير كتالوج أفلام أو مدونة أو لوحة معلومات أعمال. عادةً ما ترتبط النماذج ارتباطًا وثيقًا بكيانات قاعدة البيانات، في حين يمكن تصميم نماذج العرض لشاشة معينة أو تدفق مستخدم واحد، حيث تجمع بين نماذج متعددة أو قيم منسقة مسبقًا لتسهيل العرض.
تتمثل إحدى طرق سير العمل الشائعة في التطوير في البدء بفئات C# بسيطة تستخدم الحقول وتوقيعات الأساليب كقوالب، وتطويرها تدريجياً إلى نماذج مناسبة ذات خصائص مغلفة وسمات التحقق من الصحة والمنطق. أدوات مثل JetBrains Rider تجعل هذا التطور أكثر سلاسة من خلال إجراءات النية التي تحول الحقول تلقائيًا إلى خصائص، وتنشئ أنواعًا مشتقة لتسلسلات الوراثة، وتطبق عمليات إعادة هيكلة أخرى أثناء تحسين نموذج الكائن الخاص بك.
تساعد الوراثة والواجهات في فرض بنية متماسكة لنماذجك، ومواءمتها مع قواعد العمل الحقيقية، وتمكين تعدد الأشكال حيث يتم مشاركة سلوكيات معينة ولكن تختلف التطبيقات. على سبيل المثال، قد يكون لديك قاعدة ContentItem نوع مشتق Movie, Series و Documentary فئات، لكل منها اختلافات طفيفة ولكن بعقد مشترك يستخدم في جميع أنحاء تطبيقك.
بمجرد وضع نماذجك في مكانها، يمكن إنشاء صفحات Razor أو طرق عرض MVC إما يدويًا أو عبر أدوات إنشاء القوالب التي تولد صفحات لعرض وإنشاء وتحرير وحذف الكيانات. تعمل السقالات بشكل كبير على تسريع عملية التطوير المبكرة وتضمن أن التوجيه وربط النموذج والتحقق من الصحة يتم توصيلها بشكل صحيح، والتي يمكنك بعد ذلك تخصيصها باستخدام علاماتك وأسلوبك الخاص.
تتكامل صيغة Razor المستخدمة في ملفات .cshtml بسلاسة مع النماذج ذات الأنواع القوية ونماذج العرض، مما يسمح لك بعرض البيانات وتشغيل الحلقات والشروط وإنشاء الروابط والنماذج باستخدام HtmlHelpers أو TagHelpers دون فقدان الأمان في وقت الترجمة. هذا المزيج من لغة C# و لغة الترميز يحافظ على الكثير من المنطق من جانب الخادم ولكنه لا يزال ينتج HTML نظيفًا في المتصفح يعمل بشكل جيد مع CSS و JavaScript.
العمل مع بنية Razor، وTagHelpers، والتنقل في Rider
تُعدّ لغة Razor طبقةً خفيفةً فوق لغة HTML يتم تفعيلها عند الحاجة. @ يظهر الرمز، مما يسهل تضمين تعبيرات أو عبارات أو استدعاءات مساعدة C# مباشرة في ترميزك. يمكنك المرور عبر قوائم العناصر، أو إظهار أو إخفاء العناصر بناءً على الشروط، أو عرض القيم والتواريخ المنسقة دون كتابة لغة قوالب منفصلة أو استخدام جافا سكريبت في كل مكان.
تبدو TagHelpers وكأنها امتداد طبيعي للغة HTML حيث تبدأ السمات الخاصة بـ asp- تعديل سلوك أو مخرجات العناصر، وغالبًا ما يحل محل طرق HtmlHelper القديمة ويزيل الحاجة إلى ربط البرامج النصية المضمنة. ومن الأمثلة على ذلك asp-action و asp-controller لتوجيه علامات الربط والنماذج إلى إجراءات محددة، أو توجيه سمات مثل asp-route-id لتمرير المعلمات بشكل سليم في عناوين URL.
يُعد دعم بيئة التطوير المتكاملة (IDE) أمرًا بالغ الأهمية عندما تكون متعمقًا في لغة HTML، ويوفر Rider ميزات مفيدة مثل مسارات التنقل في أسفل المحرر لإظهار موقعك الحالي في بنية المستند. يمكن تخصيص مسارات التنقل ضمن التفضيلات أو الخيارات في قسم المحرر، وهي تجعل التنقل في ملفات Razor الطويلة ذات العلامات المتداخلة أقل إيلامًا بكثير.
في مشاريع MVC، يفهم Rider أيضًا الاتفاقيات التي تربط وحدات التحكم والإجراءات والعروض، لذا فإن تمرير مؤشر الماوس فوق نتائج الإجراءات يمكن أن يُظهر لك مسارات العرض الممكنة و السيطرة + انقر (أو انقر مع الضغط على مفتاح Cmd (على نظام macOS) ينتقل مباشرة إلى ملف .cshtml المقابل. اختصارات مثل CTRL + B or أمر-ب يوفر طريقة سريعة للتنقل عبر قاعدة التعليمات البرمجية الخاصة بك دون الحاجة إلى البحث في مستكشفات الحلول.
بالإضافة إلى الأدوات الخاصة بـ Razor، يتضمن Rider مجموعة واسعة من النوايا والإصلاحات السريعة لـ HTML و CSS و JavaScript التي تساعدك على كتابة كود نظيف ومنظم جيدًا من جانب العميل داخل نفس بيئة التطوير المتكاملة (IDE) مثل الواجهة الخلفية C# الخاصة بك. يمكن لهذا التكامل الوثيق أن يوفر الكثير من عمليات تبديل السياق عند بناء واجهة مستخدم تفاعلية معقدة لا تزال تعتمد على طرق عرض أو صفحات Razor التي يتم عرضها بواسطة الخادم.
تصحيح أخطاء صفحات Razor وتطبيقات ASP.NET Core
يعد تصحيح الأخطاء نشاطًا يوميًا في تطوير الويب، وتطبيقات ASP.NET Core التي تعمل بصفحات Razor ليست استثناءً، لذا فإن وجود دعم قوي لتصحيح الأخطاء في بيئة التطوير المتكاملة الخاصة بك أمر ضروري. يوفر كل من Visual Studio و Rider أدوات تصحيح الأخطاء التفاعلية التي يمكنها الاتصال بعملية Kestrel الخاصة بك، والتنقل خطوة بخطوة عبر كود C#، وفحص المتغيرات وتقييم التعبيرات أثناء تشغيل التطبيق.
يدعم مصحح الأخطاء في Rider على نظام التشغيل Windows ميزة التحرير والمتابعة، والتي تتيح لك تعديل التعليمات البرمجية أثناء توقف التطبيق عند نقطة توقف وتطبيق التغييرات دون إعادة تشغيل جلسة تصحيح الأخطاء بأكملها. إن القدرة على إصلاح الأخطاء الصغيرة أو التجربة أثناء عملية تصحيح الأخطاء تسرع عملية استكشاف الأخطاء وإصلاحها بشكل كبير، خاصة في المشاريع الكبيرة ذات أوقات بدء التشغيل غير البسيطة.
يتم تمكين صفحة استثناءات المطور الافتراضية في ASP.NET Core تلقائيًا عند ضبط البيئة على التطوير، مما يوفر لك تتبعًا تفصيليًا للمكدس ومعلومات الطلب والتشخيصات كلما حدثت استثناءات غير معالجة. تُعد هذه الطريقة مفيدة للغاية أثناء تصحيح الأخطاء محليًا، ولكنها خطيرة في بيئة الإنتاج لأنها قد تكشف تفاصيل داخلية حول تطبيقك وبيئتك.
لحماية المعلومات الحساسة، تقوم بيئات الإنتاج والاختبار عادةً بتعطيل صفحة استثناءات المطورين وتستخدم بدلاً منها مسار معالج الاستثناءات المُكوّن، وغالبًا ما يكون ذلك /Error، لعرض شاشة خطأ سهلة الاستخدام أثناء تسجيل التفاصيل الحقيقية على جانب الخادم. يتم التحكم في هذا السلوك في ملف Program.cs من خلال فحص البيئة واستدعاءات إلى UseExceptionHandler و UseHsts.
عندما تخرج الأمور عن مسارها ولا تتطابق الدروس التعليمية مع سلوكك، فمن المفيد غالبًا مقارنة مشروعك بعينة جيدة معروفة مقدمة من مايكروسوفت أو مصادر موثوقة أخرى. تنشر العديد من الدروس التعليمية الرسمية لـ Razor Pages مشروعًا نموذجيًا مكتملًا يمكنك عرضه أو تنزيله لمقارنته مع التعليمات البرمجية الخاصة بك واكتشاف التكوين المفقود أو الأخطاء المطبعية أو الملفات الموضوعة في غير مكانها.
نشر وتطبيق تطبيقات ASP.NET Core Razor الحقيقية
إن نشر تطبيق Razor Pages الخاص بك هو المكان الذي تؤتي فيه كل البنية والتكوين السابقين ثمارهما، لأن ASP.NET Core يدعم العديد من خيارات النشر التي تناسب بيئات الاستضافة المختلفة وسير العمل. سواء كنت تفضل IIS على نظام التشغيل Windows، أو حاويات Linux في Docker، أو منصة مُدارة مثل Azure App Service، يمكن تشغيل عملية النشر بواسطة MSBuild ودمجها في مسارات CI/CD الخاصة بك.
يوفر كل من Visual Studio و Rider ملفات تعريف النشر التي يمكنها تجميع تطبيقك ونشره على IIS باستخدام Web Deploy (MSDeploy)، أو نسخه إلى مجلد محلي أو على الشبكة، أو دفعه مباشرة إلى خادم بعيد عبر FTP أو FTPS أو SFTP. يؤدي إنشاء ملف تعريف للنشر إلى ترميز إعدادات النشر الخاصة بك بحيث تكون عمليات النشر المستقبلية بسيطة مثل اختيار ملف التعريف والنقر فوق زر أو تشغيل أمر.
بالنسبة لسيناريوهات الحوسبة السحابية، تعد خدمة تطبيقات Azure هدفًا شائعًا، وتدمج بيئات التطوير المتكاملة أدوات Azure لإنشاء ونشر تطبيقات الويب مباشرة من مشروعك، مع الاعتماد مرة أخرى على MSBuild وMSDeploy في الخلفية. يحافظ هذا النهج على اتساق عملية البناء والنشر بين البيئات المحلية والسحابية ويمكن أتمتته في Azure DevOps أو GitHub Actions أو أنظمة التكامل المستمر الأخرى.
يُعد Docker خيارًا ممتازًا آخر لـ ASP.NET Core، حيث يتيح لك وضع تطبيق Razor Pages الخاص بك في حاوية بحيث يمكن تشغيله بشكل متوقع في أي بيئة تدعم الحاويات. يمكن لـ Rider و Visual Studio مساعدتك في إنشاء ملفات Dockerfiles وتكوينات docker-compose، مما يتيح سير عمل يمكنك من خلاله تطوير وتصحيح ونشر تطبيقك داخل الحاويات، سواء محليًا أو في أدوات التنسيق مثل Kubernetes.
بغض النظر عن الهدف، تقوم خطوة النشر بتجميع كود C# الخاص بك، وتجميع طرق عرض Razor، ونسخ الأصول الثابتة، واعتمادًا على الإعدادات، قد تقوم أيضًا بإنشاء وقت تشغيل مستقل بحيث لا يحتاج الجهاز المضيف إلى تثبيت .NET مشترك. هذا التجميع هو ما يحول مشروع التطوير الخاص بك إلى منتج قابل للنشر وجاهز للاستخدام من قبل المستخدمين الحقيقيين.
من خلال وضع كل هذه الأجزاء معًا - بدءًا من شهادات التطوير و Program.cs، مرورًا بالصفحات و wwwroot، وصولًا إلى تصحيح الأخطاء والنشر - توفر Razor Pages طريقة عملية لبناء تطبيقات ويب ASP.NET Core واقعية قابلة للصيانة وذات أداء عالٍ ومريحة للمطورين الذين يستمتعون بالفعل بالعمل بلغة C# وليسوا مستعدين للمراهنة بشكل كامل على إطار عمل صفحة واحدة لكل موقف.