آیا سرعت در این جور صفحات بیشتر شده یا نه؟
طبق آخرین اطلاعاتم (حدود دو سه ماه پیش نتیجه چند تا تست رو خونده بودم) سرعت رندر فعلا (ASP.NET MVC3 Razor و ASPX 4) تقریبا برابره و نتایج تست ها تقریبا مشابه بوده.
که این خودش باعث کم شدن حجم فایل و افزایش سرعت میشه!
از نظر زیرساخت این حرف درست نیست. چون در هر صورت این صفحات نیستن که اجرا میشن، بلکه نمونه سازی از کلاس های نگاشت شده از صفحات و فراخونی متودهای مربوط به رندر هست که خروجی رو تولید میکنه. اما دو تا موضوع دیگه مطرحه که باید در نظر گرفته بشه. 1- از نظر عملی و تجربی حق با شماست. چون تو ASPX به دلایلی که قبلا بحث شد(تنبلی، دانش سطحی، بی تجربگی،.....)، عمدتا از کنترل های سمت سرور حتی برای چیدمان و layout صفحات و گاهی حتی به جای عناصر بسیار ابتدایی و سبک، استفاده میشه که دو تا پیامد منفی داره. فشار زیاد به سرور، و تولید خروجی بیشتر در ASPX مخصوصا View State. و 2- این که در ASPX همه چیز کلاس هست. پس باید نمونه سازی بشه. پس هم مصرف حافظه بیشتر هست و هم هزینه زمانی بالاتری صرف میشه. اما در Razor فقط یه کلاس هست که باید نمونه سازی بشه. مثال:
<asp:label text="something" />
@Html.Label("something")
هر دوی اینها یه خروجی label تولید میکنن. اولی در aspx اول میاد یه نمونه از کلاس Label میسازه، بعد پراپرتی Textش رو با something مقدار میده، بعد اونو در کنترل تری کلاس صفحه قرار میده، و بعد وقتی تو طی کردن کنترل تری نوبتش رسید، رندر شده و خروجی رو تولید میکنه.
دومی فقط متود Write از کلاس ویو جاری که از WebViewPage ارث میبره رو صدا میزنه و با یه نمونه از کلاس TagBuilder که جزو اشیاء بسیار ارزون قیمت به حساب میاد، خروجی رو تولید میکنه.
معماری موتور MVC خیلی پیشرفته تر و اصولی تر و مدرن تر از ASPX هست. بین تولد Razor و ASPX بیشتر از یه دهه اختلاف زمانی هست و بررسی دو تاشون کاملا موید این مطلب هست که میکروسافت از تجربه تلخ و شکننده ASPX درس های گرانبهایی گرفته.
پ.ن.
فکر کنم با این جمله آخر باز مستحق این شدم که دوستان بیان و لطف کنن در حقم :دی فقط لطف کنید فحش های چیزدار ندید. دمتون گرم -ر.ک. پست های قبلی