# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET MVC > سوال: Razor چیست؟

## saeedgharedaghi

سلام خدمت دوستان 
میشه بگید این Razor چی هست؟ و چه کاریردی تو MVC داره؟

----------


## amir-yeketaz

Razor در واقع یه انجین جدید برای تبدیل کدهای سمت سرور (فرضا سی شارپ ) به قالب کدهای html که نسبت به aspx کار باهاش خیلی راحت تره و سینتکس جالب تری داره (البته نطر شخصیه وگرنه شما هیچ محدودیتی ندارین و حتی میتونین ترکیبی از این دو تا رو استفاده کنید ... ) ... برای یادگیریشم که مقالات فراوونه! 

موفق باشید ...

----------


## saeedgharedaghi

دوست عزیز ممنون از توجهتون ، پسوند این جور فایل ها cshtml هست میشه بگید مزیتش نسبت به صفحات Aspx چی هست ؟ آیا سرعت در این جور صفحات بیشتر شده یا نه؟

----------


## amir-yeketaz

فرقش اینه که سینتکس خیلی خواناتری داره و همین طوری کدینگ کمتری نیاز داره (که این خودش باعث کم شدن حجم فایل و افزایش سرعت میشه!) 




> Razor view engine is one of the most coolest new feature in  ASP.NET MVC 3. Razor is speeding things up just a little bit more. It is  much smaller and lighter in size. Also it is very easy to learn. You  can say ' write less, do more '. You can get start and learn more about  Razor at Introducing “Razor” – a new view engine for ASP.NET.


http://weblogs.asp.net/imranbaloch/a...-features.aspx

موفق باشید ...

----------


## Javad_Darvish_Amiry

> آیا سرعت در این جور صفحات بیشتر شده یا نه؟


طبق آخرین اطلاعاتم (حدود دو سه ماه پیش نتیجه چند تا تست رو خونده بودم) سرعت رندر فعلا (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 درس های گرانبهایی گرفته. 


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

----------

