مراحل مختلف اجرای یک فرم وب در ASP.NET
برنامه نویسی در محیط وب تا قبل از دات نت حتی در ASP احتیاج به ساختن یک صفحه با HTML و قرار دادن کدهای مورد نیاز در آن داشت. یک صفحه ASP تا قبل از ASP.NET یک متن ساده بود که از بلاک های کد ASP و بلاک های کد HTML تشکیل شده بود. در هنگام فراخوانی توسط کاربر صفحه های ASP توسط سرور خوانده شده و خط به خط دستورات آن اجرا می شد، در نهایت یک صفحه HTML به مرورگر اینترنت کاربر تحویل داده می شد.
اما فرم وب مانند یک برنامه کامل اجرا (Execute) می شود و نتیجه آن یک HTML است. همانطور که قبلا ً مشاهده کردید فرم های وب با پسوند aspx و به صورت یک فایل متنی هستند. در یک سرور دات نت ( هر IIS Server ی که.NET Framework بر روی آن نصب شده باشد ) ، وقتی که یک مرورگر، درخواستی برای دیدن یک aspx می دهد runtime مربوط به ASP.NET آن صفحه را تجزیه و تحلیل کرده و آن را کامپایل می کند. این مرحله شبیه به نحوه کار ASP کلاسیک است، به غیر از اینکه نتیجه این کار در یک کلاس از نوع دات نت ذخیره می شود. این کد، یک کد کامپایل شده است و مانند ASP کلاسیک نیست که به صورت تفسیری در هنگام لزوم اجرا شود. این روش اجرا سرعت را در هنگام فراخوانی مجدد aspx بالا می برد.
به طور کلی یک پروژه برنامه اینترنتی در دات نت ( بیسیک ) حداقل یک فایل aspx و یک فایل aspx.vb دارد، که در اولی کد های HTML مانند ASP کلاسیک وجود دارد و در فایل دوم کدهایی که برای هر کدام از اجزا نوشته می شود قرار می گیرد.
به علاوه در این نوع پروژه یک فایل Global.asax قرار دارد که مشابه Global.asa در ASP کلاسیک است. همچنین فایلی با نام Web.Config وجود دارد که با ساختار XML ذخیره شده است و اطلاعاتی درباره پروژه را در خود ذخیره می کند.
این فایلها در دو مکان قرار می گیرند. مکان اصلی سرور اینترنتی است که برنامه باید بر روی آن اجرا شود، همچنین یک نسخه از آن در قسمت cache ویژوال استودیو ذخیره می شود. هنگامی که در ویژوال استودیو تغییری بر روی پروژه می دهید آن تغییر در هر دو مکان اعمال می شود.
وقتی بوسیله ویژوال استودیو می خواهید برنامه خود را انتقال بدهید، ویژوال استودیو مانند یک برنامه معمولی با پروژه رفتار می کند. تمامی کدهای آن را به فایل DLL تبدیل می کند و هیچ سورسی انتقال نمی یابد. البته فایلهای aspx به همان شکل انتقال می یابند. در هنگام نصب نیز فایلهای DLL ی که باید در سرور اینترنت قرار گیرند در آن جا کپی می شوند. در هنگام اجرا فایل aspx و DLL بعد از تلفیق با هم به مرورگر درخواست کننده ارسال می شود.
مثال HelloWorld را در هنگامی که فایل WebForm2 فایل اصلی بود به خاطر بیاورید. پروژه از فایلهای زیر تشکیل شده است:
WebForm2.aspx
WebForm2.aspx.vb
Global.asax
Global.asax.vb
Web.Config
دقت کنید که ما فایل Global.asax را نساخته ایم، بلکه خود ویژوال استودیو دات نت بود که این کار را به شکل خودکار انجام داد. وقتی با کلید F5 برنامه را اجرا می کردیم فایلهای WebForm2.aspx و Global.asax مستقیما ً، بدون تغییر بر روی سرور اینترنت قرار می گرفتند. اما فایلهای WebForm2.aspx.vb و Global.asax.vb کامپایل می شوند و نتیجه در فایل HelloWorld.dll قرار می گیرد و در سرور در کنار دو فایل قبلی کپی می شود.
وقتی بوسیله مرورگر فایل aspx فراخوانده می شود، ASP.NET به صورت پویا یک فایل cls برای آن ایجاد می کند، سپس این فایل به فایل dll کامپایل می شود. این فایل dll در نهایت فایل HelloWorld.dll را صدا می زند و نتیجه اجرا به HTML تبدیل شده و به مرورگر باز گردانده می شود.
به یاد داشته باشید که هر برنامه ای در.NET Framework از System استفاده می کند. برنامه های اینترنتی و برای مثال aspx نیز از کلاس System.Web.UI.Page مشتق شده است. این امر سبب می شود که در هنگامی که aspx به کلاس تبدیل شود، کلاس ایجاد شده از کلاس اصلی ( system.web.ui.page ) مشتق شود. این کلاس مفاهیمی همچون Response ، Request و… را فراهم می کند.
در ظاهر این مراحل، اجرای یک صفحه را بسیار کند می کند، ولی تمام اینها فقط یک بار و در هنگام اولین درخواست دیدن صفحه اتفاق می افتد. فایل کلاسی که ساخته شد در مکانی ذخیره شده و تا هنگامی که آن را تغییر نداده باشید ثابت می ماند. بنابراین در دفعات بعدی ِ فراخوانی صفحه، سرعت اجرا و نمایش آن خیلی زیاد تر می شود.