PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : Inside the ASP.NET 2.0 Code Compilation Model



TAHA
09-30-2009, 07:24 AM
مروری بر نحوه ی کامپایل شدن کد در ASP.NET 1.X :

در اولین درخواست یک صفحه ی ASP.NET ، آن صفحه توسط ASP.NET runtime به صورت پویا کامپایل می شود. قبل از انجام اینکار ابتدا cache مورد بررسی قرار می گیرید تا از دوباره کاری جلوگیری گردد. نحوه ی کامپایل شدن هم بدین صورت است : ابتدا به صورت پویا سورس کدی موقتی که کلاس بیانگر صفحه ی مورد نظر است ایجاد می گردد. سپس توسط یک command-line compiler این کد به اسمبلی تبدیل می شود و در پایان کلاسی که بیانگر صفحه ی ASP.NET است نمونه سازی می گردد تا در جهت پاسخگویی به درخواست انجام شده برآید. مکان ذخیره شدن سورس کد موقتی نیز آدرس زیر می باشد:

کد:

[.NET System Directory]\Temporary ASP.NET Files\root\[x]\[y]\
لازم به ذکر است که :

کد:

[.NET System Directory] maps to c:\Windows\Microsoft.Net\Framework\V1.1.4322\
در این دایرکتوری فایلهایی را با پسوند cs خواهید یافت که همزمان با درخواست یک صفحه ی aspx به صورت پویا تولید شده اند. یعنی کدهای نوشته شده توسط کاربر (در دایرکتوری bin توسط کاربر) و کدهای تولیدی موقتی به صورت پویا در دایرکتوری فوق، جداگانه کامپایل می شوند.


تغییرات و بهبودهای انجام شده در ASP.NET 2.0 :

در نگارش جدید دیگر نیازی نیست تا کدهای خود را حتما توسط VS.NET کامپایل کنید و در دایرکتوری bin برنامه قرار دهید. در اینجا هر دو حالت کد موقتی و کدهای نوشته شده توسط کاربر ، بوسیله ی ASP.NET runtime به صورت خودکار و یکجا کامپایل خواهند شد. هنگامیکه برنامه ای را در VS.NET Whidbey اجرا می کنید به دو مطلب جدید برخواهید خورد : مرحله ی build‌ حذف شده است (برنامه بلافاصله اجرا می شود) و همچنین برنامه نویس برای اجرای کد خود نیازی به IIS نخواهد داشت و Visual Web Developer Web Server این امر را انجام می دهد (این مورد اخیر امکان کدنویسی را برای برنامه نویس ها در محیط شبکه با سطح دسترسی های کم مهیا می کند. تنها کسی می تواند از IIS برای اجرای برنامه ها استفاده نماید که ادمین سیستم باشد اما در اینجا این مورد برطرف شده) .
اینبار مکان ذخیره شدن فایلهای موقتی به صورت زیر است :

کد:

Local Settings\Temp\Temporary ASP.NET Files\[virtual root]\[x]\[y]
خودکار شدن کامپایل توسط ASP.NET runtime ، خطاهای کمتری را نیز سبب خواهد شد. در نگارش قبلی اگر برنامه نویس پس از تغییر کد فراموش می کرد برنامه را مجددا کامپایل کند ، به محض آپلود آن بر روی سرور با خطای زمان اجرا مواجه می شد اما اینجا خیر. ثانیا دیگر حتما نیازی به ابزارهای ویژه برای کامپایل کد در حالت code-behind programming نیست.
همچنین با معرفی برنامه ای به نام aspnet_compiler می توان برنامه را پیش کامپایل کرد و هنگام ارائه برنامه، سورس کدها را ارائه نداد (در ASP.NET 1.X اگر برنامه فول کامپایل می شد نیازی به ارائه ی فایلهای cs و یا vb نبود. در اینجا چون دیگر نیازی به کامپایل (از طرف برنامه نویس) نیست و تمام موارد خودکار شده این مورد نیز درنظر گرفته شده است).


برای مطالعه بیشتر:
http://www.codeguru.com/Csharp/.NET/...cle.php/c5365/ (http://www.codeguru.com/Csharp/.NET/net_asp/miscellaneous/article.php/c5365/)