بهینه سازی عملکرد برنامه های ASP.net MVC

یکشنبه 26 اردیبهشت 1395

در این مقاله قصد داریم به نحوه بهینه سازی عملکرد برنامه تحت وب را بپردازیم و سطوح مختلف در بهینه سازی را مورد بررسی قرار دهیم.

بهینه سازی عملکرد برنامه های  ASP.net MVC

ممکن است شما هم بر روی برنامه های بزرگی کار کنید که متشکل از چند پروژه باشد و زمان بیشتری برای 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

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید