فن آوری ASP.NET چیست و توسعه مبتنی بر آن چگونه است؟
سهشنبه 7 بهمن 1399
امروز یکی از دوستان سوالی پرسیدند که به شخصه احساس میکنم این سوالِ تعدادِ زیادی از افرادی ست که در حوزه توسعهء مبتنی بر وب، تازه وارد و تازه کار هستند؛ لذا پاسخی که به آن عزیز ارائه شد، با اندکی دخل و تصرف، به عنوان توضیحی در رابطه با کُلیت داستانِ توسعهء مبتنی بر وب و بر اساس محصولات و فن-آوریهای مایکروسافت، در ذیل ارائه شده:
در وب، با هر ابزاری که بخواهید اپلیکیشن تولید کنید، خروجیِ آن در مرورگر دیده میشود. مرورگر هم فقط و فقط توان فهم و پردازش 4 زبان ذیل را دارد:
- HTML برای ساخت تصویر
- CSS برای تزئین عناصر تصویر
- JavaScript برای «پویایی بخشی» به عناصر تصویر، پردازشهای سبک و ارتباط با سرویسدهنده
- WebAssembly برای انجام پردازش به صورت کدهای سطح پایین نزدیک به زبان سخت افزار
در نتیجه کسی که خود را «توسعه دهندهء وب» مینامد باید بتواند حداقل با HTML و CSS خروجیِ مطلوبش را تولید و برای پویاسازی صفحات و عناصر از JavaScript استفاده نماید. چند سالی ست کلیه فعالیتهای مبتنی بر این ابزارها را اصطلاحاً Front-End Development مینامند و تعداد کثیری ابزار، زیرساخت و چارچوب برای تسهیل این فعالیت توسعه یافته و در دسترس میباشند.
برای تولید اپلیکیشن مبتنی بر وب، دو شیوه کلی وجود دارد:
- توسعه مبتنی بر ابزارها و تکنیکهای پردازش و تصویرسازی در سرویسدهنده (Server-Side Rendering) که کل محتویات صفحات و کدها در سرویسدهنده تولید یا اجرا میشوند و فقط تصویر خروجی در مرورگر دیده میشود.
- توسعه عناصر تصویری و پردازشی بصورت مجزا و مبتنی بر زیرساختهای مجزا یا همان Decoupled که بخش پردازش دادهها (REST-ful API) در سرویسدهنده و بخش تولید تصویر در مرورگر اجرا میشوند (Client-Side Rendering). قابل ذکر است در گذشته بجای REST-ful API از XML Web Service ها استفاده میشد.
بر اساس موارد بالا، ابزارهای توسعه و پردازش دادهها در سرویسدهندهها اجرا میشوند و خروجی آنها به صورت داده یا HTML به مرورگر منتقل شده و پیش روی کاربر قرار میگیرد. از جمله این زیرساختها، فن-آوری ASP.NET Core میباشد که در آن، بخش عمدهء توسعهء مولفههای پردازشی یا تصویری، مبتنی بر زبان C# انجام میشود.
در ASP.NET Core بطور کلی چهار نوع اپلیکیشن دارای خروجی تصویری داریم:
- ASP.NET Core MVC (تقریبا منسوخ شده)
- ASP.NET Core Razor Pages (MVP)
- ASP.NET Core Blazor Server
- ASP.NET Core Blazor WebAssembly
در تمام اینها برای توصیف و تولید تصویر از صرف و نحو خاصی تبعیت میشود که ترکیبی از HTML و C# بوده و به آن کدِ Razor گفته میشود. توسعهء مبتنی بر سه مورد اول از نوع Server-Side Rendering بوده و مورد چهارم بصورت Decoupled میباشد که برای انجام امور پردازشی، نیازمند استفاده از زیرساخت مجزایی به نام ASP.NET Core WebAPI (یا هر زیرساخت REST-ful دیگر) میباشد.
در کنار اینها زیرساختهای دیگری برای تکمیل مجموعه و رفع نیازمندیهای توسعه دهندگان وجود دارد، از جمله:
- زیرساخت ASP.NET Core WebAPI برای تولید سرویسهای REST-ful
- زیرساخت ASP.NET Core Identity برای انجام کلیه امور امنیتی (Authentication و Authorization)
- زیرساخت ASP.NET Core SignalR برای محاورات بلادرنگ، ارسال Push Notification و انجام Data Streaming
- چارچوب Entity Framwork Core که جزو مجموعه ابزارهای وب نیست ولی به عنوان ORM بومی مایکروسافت، بهترین گزینه جهت توسعه مباحث Data Access میباشد.
از اینجا به بعد سلیقه سازمان/کارفرما و توسعهدهنده ست که بخواهد با این ابزارها پیش بروند یا نروند.