آشنایی با ساختار و تحولات نسل های Asp.Net
22 روز پیش نویسنده: علیرضا بهارلویی

آشنایی با ساختار و تحولات نسل های Asp.Net

وب سایت امروزه پرکاربردترین رسانه ارتباطی برای کارهای تجاری، سرگرمی و ... استفاده می شود. یکی از دغدغه های برنامه نویسان در این حوزه به روز بودن و انتخاب مناسب نسخه های ارائه شده یک پلتفرم از سوی سازنده می باشد. شرکت ماکروسافت تولید کننده زبان برنامه نویسی وب، از آن دسته از تولیدکنندگان می باشد که با توجه به رشد تکنولوژی و پدید آمدن نسل های جدید برنامه نویسی از این حیث مستثنا نبوده و با توجه به شرایط، پلتفرم ها مختلف را برای برنامه نویسان وب فراهم نموده است. زبان برنامه نویسی Asp که در شاخه وب ارائه شده است در سه نسل ذیل ارائه گردیه است:

1.Web Forms

2.Mvc

3.Mvc Core

این سه شاخه که نسل های مختلف Asp بر پایه .Net هستند در این مقاله به عنوان نسل اول , دوم و سوم شناخته خواهند شد.                          

در این مقاله آموزشی که به صورت قسمتی ارائه می شود قصد داریم تا این سه نسل از پلتفرم Asp را از لحاظ ساختاری بررسی کنیم تا برنامه نویسان علاقه مندی که تازه قصد شروع این حرفه را دارند بتوانند با نقشه راه مناسب و شناخت درست این نسل ها انتخابی صحیح را داشته باشند.

موضوع اول:

بررسی ساختار روت اصلی :

در شکلی گیری یک وب سایت چندین قسمت اصلی به صورت ظاهری باید حضور داشته باشند تا نظم و چینش صحیح فایل ها به درستی انجام گیرد تا از درهم ریختگی و شلوغی روت اصلی جلوگیری شود.

مقایسه روت اصلی: 

تصویر

 

در تصویر شماره 1 روت اصلی WebForms را مشاهده میکنیم. در این روت قابلیت فایل های ایستا مانند جاوا اسکریپت ها در پوشه  Scripts قرار گرفته یا محتوی ثابت مانند تصاویر  و استایل و ... در پوشه Content وجود دارند. در حالی که همین روش هم در Mvc به کاربرده شده است.( تصویر شماره 2) با مقایسه این دو تصویر متوجه می شویم نسل دوم به نسل اول تقریبا نزدیک بوده اما با مشاهده تصویر 3 متوجه می شویم که این نسل تغییر اساسی تری نسبت به دو نسل قبلی خود داشته. پوشه wwwroot محل نگهداری یکجای فایل های ثابت و ایستا شده است. 

با کمی دقت متوجه میشویم فایل های مثل web.config‌ در دو نسل اول یعنی WebForms و Mvc وجود دارند ولی در نسل سوم این مورد دیده نمیشود. در عوض در تصویر 2 و 3 پوشه هایی چون Views یا Models در هردو به صورت مشترک وجود دارند.

از همین چند نکته اولیه می توان یک نتیجه ساده را گرفت آن هم اینکه دو نسل اول یعنی WebForms و Mvc نزدیکه به هم بوده و نسل سوم  Mvc Core به Mvc نزدیک می باشد.

با این بررسی های ساده شاید نتیجه بالا قطعیت داشته باشد اما در ادامه خواهیم دید اگر چه این موارد گفته شده شباهت هایی را بوجود آورده ولی در بطن هیچ کدام به یک شیوه کدنویسی ، طراحی و پیاده سازی نخواهند شد.

بررسی ساختار فیزیکی فایل ها:

در نسل اول این تکنولوژی برای فایل های طراحی صفحات پسوند هایی با عنوان Aspx در نظر گرفته شده بود .این صفحات که برای نمایش صفحه وب مورد نظر به کاربران در نظر گرفته شده بود به این صورت شروع می شد.

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %>

در کد بالا زبان صفحه C# در نظرگرفته شده است . نکته ای که مهم است این دستور در صفحه کاربری که همان صفحه Html می باشد به کار رفته است. این شیوه کدنویسی، اختصاصی برای خود WebForms به کار رفته است. یعنی دستورات مستقیما خود کد Html نمی باشند و باید با خود Asp تگ ها نوشته شود.

چگونگی این مورد بعدا مورد بررسی قرار میگیرد.

نسل دوم و سوم این تکنولوژی برای فایل های طراحی صفحات پسوندهایی با عنوان Cshtml در نظر گرفته شد. این نام به مفهوم ترکیب C#  و Html می باشد. در نسل اول این مورد هم وجود داشت اما پیچیدگی کار بالا و انعطاف پایین بود درحالی که در این نسل جدید پیچیدگی کمتر شده و انعطاف پذیری بیشتر شده است.

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title> My ASP.NET Application</title>
</head>
<body>
</body>
</html>

نمونه کد بالا در صفحات Mvc و Mvc Core به کار رفته است. نکته قابل توجه اینکه این دو نسل هردو در این مورد یکسان هستند و در صفحات کاربری عینا خود Html به کار برده شده است برخلاف نسل اول.

 

نکته: در زبان نسل اول ساختار صفحه بر پایه تگ های از پیش تعریف شده ماکروسافت می باشد در حالی که نسل دوم و سوم برپایه Html مطرح شده اند. این تغییر ساختاری از جهت مشکل کردن کارایی و کدنویسی صفحات کاربری با WebForms بود که باعث شد تا در Mvc و Mvc Core خود Html جایگزین آن شود. پس کدنویسی صفحات کلاینت در نسل دوم و سوم خیلی ساده تر خواهد بود.

اکنون که به این نکته پی بردیم می توانیم با کمی دقت در روت اصلی متوجه بشویم در WebForms فایل وجود دارد بنام Site.Masterکه این فایل در اصل یک صفحه از نوع Html می باشد و بخش های ثابت یک صفحه مانند فوتر یا هدر و ... را در خود نگهداری میکند تادر صفحاتی که نیاز به این موارد ثابت دارند را از کدنویسی دوباره خلاص کند و با یک پیوند ساده و ارتباط دهی دیگر صفحات به این مستر کدها فراخوانی میشود. اما این Site.Master فقط در نسل اول دیده میشود چرا که قبلا هم گفتیم در نسل بعدی Html جایگزین کدنویسی صفحات شد و این مورد تبدیل به یک Layout شد.

Layout با پسوند همان CsHtml ایجاد می شود و همان کدهای ثابت هدر و فوتر و ... در خود نگهداری میکند و تمامی کدها با زبان Html می باشد.

نکته: نحوه پیوند زدن صفحات به Layout  و Master به صورت زیر می باشد.

WebForms:

<%@ Page MasterPageFile="~/Site.Master" %>
Mvc & Mvc Core
@{
 
   Layout = "~/layout.cshtml";
}

تا اینجای بررسی این سه نسل تاحدودی متوجه شدیم که تغییرات روت اصلی  نسبت به هم چگونه بوده است. حالا اگر دقت کنیم نحوه پوشه بندی خود روت هم قابل توجه می باشد. 

در WebForm  فقط برای فایل های ایستا پوشه بندی انجام شده و مابقی فایل های سمت سرور روی روت اصلی قرار گرفته در حالی که در Mvc برای فایل های ایستا و پویا پوشه بندی انجام شده است و در Mvc Core فایل های ایستا و پویا به صورت زیرمجموعه ای  طبقه بندی شده اند. پس در نسل سوم کد نویسی منظم و دقیق تر صورت خواهد گرفت به خاطر اینکه هرچقدر نظم دهی روت دقیق تر باشد سریع تر به فایل ها دسترسی و فراخوانی راحتر خواهد بود.

پایان بخش اول