نگاهی گذرا به ساختار Asp.net core

✔ فهرست گزیده هایی از کتاب PRO ASP.NET CORE 6مایکروسافت Asp.net core رو به عنوان پلتفرمی برای توسعه وبسایت ارایه داده [ البته از نگاه صرفا نرم افزاری می تونیم فریمورک هم بهش بگیم ]. جد بزرگوارش Asp.net اولیه، در سال 2002 معرفی شده بود که با چندین و چند بازنگری اساسی، در حال حاضر به نسخه پایدار Asp.net core 6 رسیده. [که در ماه نوامبر 2022 نسخه 7 اون ارایه می شه] مطابق تصویر زیر، Asp.net core شامل پلتفرمی برای پردازش درخواست های سمت وب، یه سری فریمورک های اصلی برای توسعه برنامه ها، و همچنین فریمورک هایی کاربردی، برای ارایه امکانات کمکی هست.ساختار Asp.net coreدرباره Application Frameworks این فریمورک ها مکمل همند و می تونن مشکلات متفاوتی رو حل کنند، یا در مواردی یک مشکل رو با راه حل های متفاوت حل کنند. فهم ارتباط بین این فریمورک ها به فهم تغییر در استفاده الگوهای طراحی (Design patterns) بستگی دارهفریمورک MVC فریمورک Razor pagesفریمورک Blazorفریمورک MVC فریمورک MVC تقریبا در زمان معرفی Asp.net، مدت ها قبل .Net core و .Net 6 معرفی شده بود. واژه MVC (کوتاه شده ی Model-View-Controller) ، الگوی طراحی ای است که با رعایت اصل تفکیک نگرانی ها (Separation of concerns)، حوزه های عملکردی برنامه رو به طور مجزا تعریف می کنه. نسخه های اولیه Asp.net، برای توسعه WebPageها از همون تجربه توسعه نرم افزار دسکتاپ استفاده می کردند؛ که نتیجه ش می شد پروژه های وب غیر قابل تحمل، با مقیاس پذیری(scalability) ضعیف!الگوی طراحی MVC راه حلی بود برای تولید صفحات وبی که با معماری نامشخص توسعه داده می شدند. نسخه های اولیه MVC بر پایه Asp.net ، به طور خاص برای تولید Web Pageها ارایه شده بودند.بعد ها با کوچ کردن از Asp.net به Asp.net core ، فریمورک MVC به صورت متن باز (Open source)، توسعه پذیر (Extensible) و چند سکویی (Cross-platform) بازتولید شد.گرچه در این کوچ، MVC به عنوان بخش مهمی از Asp.net core باقی موند اما با افزایش برنامه های تک صفحه ای (SPA)، روش استفاده از اون تغییر داشت. [ مثلا در نوشتن وب سرویس های مورد استفاده ، ما فقط از Model و Controller استفاده کرده و از View استفاده نمی کنیم ]الگوی MVC گام مهمی در سیر تکاملی Asp.net بود و بستری شد تا از مدل Web form رها بشه. برنامه های با مدل Web form ، دچار مشکلاتی در مدیریت و پنهان سازی جزییات درخواست ها و پاسخ های HTTP می شدنفریمورک MVC، در حقیقت به Asp.net جان داد و پایه و اساس این رو فراهم کرد تا به Asp.net core برسه؛ جوری که پشتیبانی از Web form را قطع و فقط در استفاده از الگوی MVC متمرکز شد.همونطور که Asp.net core تکامل یافت ، شیوه های دیگه ای در ساخت برنامه های تحت وب نیز پذیرفته شدند ، و فریمورک MVC تنها یکی از این شیوه های ساخت برنامه هاست.وجود شیوه های دیگه از مفید بودن MVC کم نمی کنه، اما الان MVC نقش محوری در توسعه برنامه ها در Asp.net core نداره ، و ویژگی هایی که قبلا منحصر در فریمورک MVC بود ، الان با شیوه های دیگه ای هم در دسترس هستند مانند Razor pages و Blazor.نتیجه این که برای توسعه برنامه ها در Asp.net core ، درک الگوی MVC دیگر یک پیش نیاز الزام آور نیست.فریمورک Razor pagesیه ایراد فریمورک MVC اینه که برنامه برای آماده سازی محتوا ، می تونه کارهای مقدماتی زیادی ببره. و در مورد WebPageها با وجود مشکلات ساختاری ، داستان این بود که ساخت یه برنامه ساده می تونست یکی دو ساعت زمان ببره.استفاده از Rezor pages توسعه ی صفحات وب رو دلپذیرتر کرده و در پیاده سازی ، از همون ویژگی های مورد استفاده در فریمورک MVC استفاده می کنه. با ترکیب کد و محتوا صفحات مستقلی ایجاد می شه که این بدون برخی مشکلات اساسی ، باعث افزایش سرعت توسعه صفحات وب می شه.می توان Razor pageها رو در کنار فریمورک MVC استفاده کرد. [ در واقع استفاده از MVC در بخش های اصلی برنامه و استفاده از Razor داخل View ]فریمورک Blazorدر فریمورک Blazor می توان در سمت UI برنامه ، یک صفحه وب رو با استفاده از زبان C# به جای زبان JavaScript ایجاد کرد.دو نسخه ی Blazor Server و Blazor WebAssembly داریم.Blazor Serverدر نسخه ی Blazor Server ، رویدادهای سمت مرورگر از طریق اتصال SignalR به سمت سرور ارسال می شودBlazor WebAssemblyدر نسخه ی Blazor WebAssembly ، اجرای برنامه سمت سرویس گیرنده (Client-Side) است بطوری که کدهای C# در مرورگر اجرا شوند.درباره Utility Frameworksفریمورک Entity Framework Core ، فریمورک ORM مایکروسافت است ، که داده های ذخیره شده در دیتابیس رو به عنوان اشیای دات نت ارایه می ده. در برنامه های دات نت معمولا برای دسترسی به دیتابیس استفاده می شه.و فریمورک Asp.net core Identity مایکروسافت برای اعتبارسنجی و بررسی دسترسی کاربران به امکانات نرم افزار استفاده می شه.درباره ASP.NET Core Platformپلتفرم Asp.net core دارای امکانات سطح پایین (low-level) مورد نیاز برای دریافت و پردازش درخواست HTML و همچنین ساخت پاسخ آن است.مجموعه ای است یکپارچه از HTTP Server ، سیستمی با کامپوننت های Middleware برای مدیریت درخواست ها، و امکانات اصلی که Application Frameworkها به اونا بستگی دارن، مانند URL Routing و Blazor view engine.ما بیشتر با Application frameworkها سروکار داریم اما برای اینکه استفاده موثری از Asp.net core داشته باشیم ، نیاز هست که قابلیت های قدرتمندی که پلتفرم ارایه می ده رو بدونیم. قابلیت هایی که فریمورک های سطح بالاتر، بدون آن ها نمی توانند کاری از پیش ببرند.در آینده درباره نحوه عملکرد پلتفرم ، که زیربنای بسیاری از جنبه های Asp.net core هست ، بیشتر خواهیم دانست.درباره SignalR هم در بیانی کوتاه، برای برقراری کانال ارتباطی کم تاخیر بین دو برنامه استفاده می شه. و gRPC (Google Remote Procedure Call) هم استاندارد ارایه شده توسط گوگل هست که برای فراخوانی از راه دور متدهاست و می تونه در هر محیطی اجرا بشه (Cross-platform). اما از آن جایی که نیازمند کنترل سطح پایین روی پیام های HTTP داره، فعلا پیشنهاد خوبی در برنامه های تحت وب نیست. البته می توان از آن در ارتباطات بین Back-end serverها استفاده کردبرگرفته از کتاب Pro ASP.NET Core 6 (9th edition) نوشته ی Adam Freeman