بهینه سازی عملکرد برنامه های ASP.net MVC
یکشنبه 26 اردیبهشت 1395در این مقاله قصد داریم به نحوه بهینه سازی عملکرد برنامه تحت وب را بپردازیم و سطوح مختلف در بهینه سازی را مورد بررسی قرار دهیم.
ممکن است شما هم بر روی برنامه های بزرگی کار کنید که متشکل از چند پروژه باشد و زمان بیشتری برای build یا ساخته شدن Solution نیاز دارد و به همین صورت زمان راه اندازی و زمان اجرای طولانی تری را به همراه دارد. سطوح مختلف بهینه سازی اجرا در یک برنامه تحت وب به صورت زیر می باشد:
. buid time یا زمان ساخته شدن
. App Startup Time یا زمان راه اندازی
. Web Application Performance یا اجرای برنامه تحت وب
چند کار را می توانیم برای بهبود عملکرد برنامه ها انجام دهیم. جدا از بخش تکنیکی ، می توانیم AppPool را به صورت زیر تنظیم کنیم.
AppPool را به صورت معلق یا Suspended و Always/running به صورت زیر تنظیم میکنیم.
بر روی AppPool راست کلیک کرده و گزینه Advanced Setting را انتخاب کنید :
این کار 20-30% در بهبود زمان موثر است.
بهبود زمان ساخته شدن
فرض کنید یک برنامه تقریبا 3 دقیقه زمان برای ساخته شدن نیاز دارد. پس هر زمان که یک خط کد را تغییر دادیم باید برای دوباره ساختن پروژه 3 دقیقه صبر کنیم. زمان ایجاد پروژه نباید بیشتر از یک دقیقه طول بکشد. اگر چنین است باید آن را طبق مراحل زیر بهینه کنیم.
قدم اول : تنظیمات Build
. استفاده از Build های موازی
. فقط ساختن Startup و سپس ساختن وابسته ها در اجرا
. تنظیم Build Verbosity
قدم دوم : استفاده از Razor Generator
از نوار ابزار Tools را انتخاب کرده و گزینه Extension and Updates را انتخاب میکنیم . سپس RazorGenerator را جستجو کرده ، پس از دانلود کردن نصب میکنیم.
می توان RazorGenerator را با استفاده از NuGet دانلود و نصب کرد. فایلهای زیر باید دانلود شوند.
. RazorGeneratpr.Mvc
.RazorGenerator.MsBuild
یا از طریق دستورات کنسول آنها را دانلود و نصب کرد که این دستورات به شرح زیر می باشند.
PM> Install-Package RazorGenerator.Mvc
PM> Install-Package RazorGenerator.MsBuild
پس از نصب RazorGenerator فایلهای زیر اضافه می شوند.
. RazorGeneratorMvcStart.cs در پوشه App_Start
. پکیج های زیر :
. RazorGenerator.MsBuild
. RazorGenerator.Mvc
. WebActivatorEx
. بعضی کدها در فایلی با پسوند csproj.
در این مرحله یک Target با نام BeforBuild درست بعد از خطی که بر فایل RazorGenerator.targets دلالت دارد اضافه میکنیم.
<Target Name="BeforeBuild"> <ItemGroup> <Content Remove="Views\**\*.cshtml" /> <None Include="Views\**\*.cshtml" /> </ItemGroup> </Target>
و ویژگیهای زیر را در csproj. اضافه میکنیم.
<PrecompileRazorFiles>true</PrecompileRazorFiles>
<MvcBuildViews>false</MvcBuildViews>
اکنون برنامه را Build کرده فایلهای cs. برای View ها تحت مسیر /obj/CodeGen/ ایجاد خواهند شد.
قدم سوم : تنظیم کردن OptimizeCompilations به صورت True در Web.config
<Compilation debug="true" targetFramework="4.5" optimizeCompilations="true"/>
بهبود زمان راه اندازی برنامه
زمان AppStart بعد از دوباره ساخته شدن solution است، زمانی که صفحه برای اولین بار بارگذاری می شود.
از نقطه نظر توسعه ، زمان AppStart باید کمترین میزان ممکن را داشته باشد. در یک برنامه بزرگ، هر زمان که یک خط کد را تغییر دهیم و پس از rebuild آن را اجرا کنیم باید 2-3 دقیقه منتظر بمانیم.
می توان برای جلوگیری از آن به صورت زیر عمل کرد.
1. هر گونه DLL استفاده نشده را حذف کرد.
2. از نطر معماری تعداد DLL ها باید کم باشد.
3. در پیاده سازی تزریق وابستگی ، محدوده طول عمر Dependency Resolver باید به صورت singleton باشد. (ContainerControlledLifetimeManager)
آموزش asp.net mvc
- ASP.net MVC
- 2k بازدید
- 4 تشکر