السلام عليكم ورحمة الله وبركاته،،
بسم الله الرحمن الرحيم،،
اللهم صل على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد،
اللهم بارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد،،
وبعد، مبادرة متواضع في سبيل الله،، وسعيا لتبادل الخبرات،،
أضع بين أيديكم بعض الدروس البسيطة حول البرمجة باستخدام لغة ASP.NET و C# ،،
سأحاول من خلال بعض الدروس أن نستفيد منها عن طريق تطبيق، أين سنركز على نسخ برنامج stackoverflow ،، وجعله
مفتوح المصدر، إن شاء الله،،
|[ ASP.NET ]| التعلم بالتطبيق(درس 01) |[ LinkFlow ]|
انتهينا في الدرس السابق بهذه النتيجة:
في هذا الدرس سنتطرق لملف Program.cs ونشرح محتواه سطر بسطر، قبل أن نبدأ في البرمجة:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
هذا السطر ينشئ كائن builder باستخدام دالة Createbuilder من WebApplication،
والتي تأخذ المعاملات التي تم تمريرها إلى التطبيق (args). يستخدم لاحقًا لإعداد التطبيق وتكوينه .
var builder = WebApplication.CreateBuilder(args);
هنا، يتم إضافة خدمات MVC (Model-View-Controller) مع دعم العرض إلى حاوية الخدمات.
هذا السطر يتيح للتطبيق استخدام المتحكمات والعروض.
builder.Services.AddControllersWithViews();
يتم بناء التطبيق الفعلي باستخدام دالة Build من builder الذي انشئ سابقا في السطر الأول، ويتم تخزينه
في متغير app والذي نعتبره تطبيق الويب الذي سيتم تشغيله.
var app = builder.Build();
هذا الجزء يقوم بتكوين مسار معالجة الطلبات HTTP. إذا كان التطبيق ليس في بيئة التطوير (Developement)،
فإنه يستخدم معالج الأخطاء (ExceptionHandler) لعرض صفحة الخطأ في /Home/Error.
سنتطرق لاحقا لبيئة Dev وبيئة prod في ملف appsettings عندما نصل لدراسته ان شاء الله،،
if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); }
هذا سطر غير معقد، عن طريق دالة UseStaticFiles ، يتم استخدام جميع الملفات الثابتة
المتواجدة في مجلد wwwroot والذي شرحنا استعماله في الدرس السابق،،
app.UseStaticFiles();
عن طريق استعمال دالة UseRouting يمكننا الآن تحويل الروابط كمثال: /Home/Index … الخ
أما دالة UseAutorization فتساعد على اضفافة خواص التحقق من الهوية وصلاحيات التطبيق، سيكون لنا حديث أكبر فيها
عندما نصل الى خصائص من نوع: العضويات كمدير، ومشرف …. الخ
app.UseRouting();
app.UseAuthorization();
بعد تفعيل UseRouting ، في هذا السطر نقوم بالاعتماد على دالة MapControllerRoute
التي عن طريقها سنقوم بتعريف مسار جديد، اسمه ومحتوياته،،
كمثال في هذه الحالة default تعني المسار الافتراضي، كأي موقع عندما يستعمل index أو …. وبدل الاعتماد
على المسار الافتراضي الموجود في السيرفر قم بتحويلها الى نوع /Home/Index/{id?}
علما أن id في هذه الحالة ستمثل رقم صفحة أو … ويمكن أن لا يكون موجود في حضور علامة ?
أما controller فقد ربطنا الرابط Home بـملف الcontroller Home والذي سنتطرق له لاحقا،،
وأما action فقط جعلنا الامتداد Index يقرأ من دالة Index الموجودة داخل Controller Home
app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
أخيرا الاعتماد على دالة Run هي ببساطة تقوم بتشغيل الكود كاملا بعد أن يتم عمل Compile له،،
app.Run();
هذا والحمد لله رب العالمين على التوفيق،،
السلام عليكم،،