MOCs
ASP .NET Core
الـASP.NET Core ده Framework معمول من مايكروسوفت، وبيُعتبر الجيل الجديد من ASP.NET اللي الناس كانت بتستخدمه زمان. الفكرة في ASP.NET Core إنه بيشتغل على أكتر من نظام تشغيل (يعني مش مقتصر على Windows بس، لأ كمان بيشتغل على Linux وmacOS). بيتميز إنه أخف وأسرع، وكمان مرن أكتر وبيتيح ليك تعمل تطبيقات ويب قوية وحديثة سواء Web APIs، أو تطبيقات MVC، أو تطبيقات حقيقية شغالة على الـCloud.
الفرق بين MVC وRazor Pages:
- الخرج بيبقا Web site كامل في الإتنين
- الفرق بينهم في المعمارية بتاع كل واحد Architecture
MVC
الـMVC (Model-View-Controller): ده بيكون نوع من التطبيقات اللي بتستخدم أسلوب تقسيم التطبيق لـ 3 أجزاء:
- الـModel: ده اللي بيكون مسؤول عن البيانات والـ Business Logic بتاع التطبيق.
- الـView: الجزء اللي بيظهر للـ user (الشاشة اللي بيتفاعل معاها).
- الـController: المسؤول عن الربط بين الـModel والـView، يعني لما الـ user يعمل طلب معين (زي ما يضغط على زرار أو يبعت طلب API)، الـController بياخد الطلب، يعالجه، ويطلع النتيجة المطلوبة.
الـ MVC شائع جداً لأنه بيسمح بتقسيم المشروع بحيث يبقى سهل تنظيم الكود والصيانة فيما بعد. هو ببساطة بيبعت للـ “end-user” الـ Viewوالـ View دا بيبقى فيه الـ data. يعني باختصار، الـ User بيشوف الـ data المعروضة.
Razor Pages
- الـRazor Pages: دي طريقة جديدة ظهرت مع ASP.NET Core، وهي مبنية على فكرة الـMVC بس بأسلوب مختلف شويتين.
- الـRazor Pages بتبقى صفحات مستقلة بذاتها وكل صفحة بتتعامل مع الـ UI والـCode الخاص بيها بشكل منفصل، يعني الكود اللي بيتنفذ في نفس الصفحة مش متقسم زي MVC.
- هي أبسط في المشاريع الصغيرة أو اللي مش محتاجة التعقيد بتاع MVC.
الـ Web API:
-
الخرج هنا بيبقا اسمه Web Service: بعمل خدمة ممكن أي حد يوصلها
-
الـ Function بنسميها Action أو Endpoint
-
الـWeb API ده بقى حاجة مختلفة عن الـMVC والـRazor Pages.
-
الفكرة من الـWeb API إنها بتخليك تعمل API بيقدر أي برنامج تاني يتعامل معاه عن طريق الإنترنت.
-
بمعنى تاني، بدل ما تعمل تطبيق ويب بيطلع صفحات HTML زي MVC، لأ، هنا بتبعت بيانات زي JSON (أو حتى XML) لأي client (سواء كان ويب، موبايل، أو أي نظام تاني).
-
الـWeb API مثالي لو انت عايز تخلي التطبيق بتاعك يتواصل مع تطبيقات تانية (زي الموبايل أبليكيشن أو سيرفر تاني).
-
وميزة تانية، إنه خفيف وسريع وبيعتمد على بروتوكول HTTP.
-
اللي بيستخدمه بنقول عليه Consumer زي الـ Frontend Developer اللي هو بيبني الـ Client-side application
مثال بسيط على Web API:
-
لما تبني Function بالـ C#، فأنت ممكن تنادي عليها من C# برضو، لكن أنا مش عايز كده.
-
أنا عايز أي حد بأي لغة، زي JavaScript مثلًا، يقدر ينادي على الـ Function دي.
-
علشان كده بنستخدم Web Service اللي كل الناس يقدروا يوصلوا ليها، بغض النظر عن اللغة اللي بيشتغلوا بيها.
Endpoint
-
هو نقطة الوصول في السيرفر اللي بتتعامل مع طلبات معينة من المستخدم، زي طلب تسجيل الدخول أو جلب بيانات.
-
المتصفح أو تطبيق الموبايل (الـ “client”) هو اللي بيعمل “كونسيوم” للـ “endpoint” ده عشان يحقق الهدف المطلوب.
-
بالنسبة للـ “frontend”، الـ “endpoint” هو جزء من الـ API.
-
الـ API هي مجموعة من الـ “endpoints” اللي بيستخدمها الـ “frontend” للتواصل مع الـ “backend”.
-
يعني لما المستخدم يعمل طلب زي عرض بيانات أو تسجيل دخول، الـ “frontend” بيبعت الطلب ده لواحد من الـ “endpoints” في الـ API، والـ “backend” بيرد بالبيانات أو ينفذ العملية المطلوبة.
مثال: لو عندك تطبيق، لما المستخدم يضغط على زر تسجيل الدخول، الـ “frontend” هيبعت البيانات للـ “endpoint” زي:
POST /api/login
والـ “backend” من خلال الـ API بيرد على الطلب.
ازاي بتعمل Web API؟
- بتعمل Controller مخصص للـAPI.
- كل Action جوه الـController ده بيبقى Endpoint، يعني كل Action ممكن يتنادى عليه من client عن طريق HTTP request (زي GET, POST, PUT, DELETE).
مثال على Web API في ASP.NET Core:
[ApiController]
[Route("api/[controller]")]
public class WeatherController : ControllerBase
{
// Endpoint
[HttpGet]
public IActionResult GetWeather()
{
var weatherData = new { Temperature = 25, Condition = "Sunny" };
return Ok(weatherData);
}
}
في المثال ده، عملنا API بسيطة جداً بتجيب بيانات الطقس (درجة الحرارة وحالة الجو) وتبعتها في شكل JSON لأي client يطلبها عن طريق HTTP GET request.
الفرق بين MVC والـ API:
-
في الـ MVC:
- لما الـ user يبعت request للـ MVC، التطبيق بيرجع View فيه البيانات المطلوبة ويظهرها للمستخدم.
- الـ View ده بيكون مليان بالبيانات اللي جايه من الـ Controller.
-
في الـ API:
- الـ API مش بترجع Views، هي بترجع البيانات في شكل JSON.
- الـ JSON ده بيتبعت للـ Frontend Developer وهو اللي يعرض البيانات عنده على الصفحة أو الواجهة بتاعته.