在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
web应用程序的性能相信是大家普遍关心的一个问题,也相信大家有很多工具可用来分析应用程序的性能并能够找到其中的瓶颈, MiniProfiler 可用在 安装 MiniProfiler要想使用 dotnet add package MiniProfiler.AspNetCore.Mvc 安装好之后,接下来就要将 MiniProfiler 注入到 ServiceCollection 容器中,如下代码所示: // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); services.AddMiniProfiler(options => options.RouteBasePath = "/profiler"); } 注入好之后,接下来就需要使用 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) { app.UseMiniProfiler(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); } 然后在 @using StackExchange.Profiling @addTagHelper *, MiniProfiler.AspNetCore.Mvc 最后需要在 <mini-profiler position="@RenderPosition.Right" max-traces="5" /> 在 ASP.Net Core MVC 中使用 MiniProfiler MiniProfiler 会提供 有些朋友可能就要问了,大体时间我是知道了,那如果我只想获取某一指定代码块的执行时间呢? 当然也是可以的,下面的代码展示了如何去实现。 public class HomeController : Controller { ILogger<HomeController> logger; public HomeController(ILogger<HomeController> logger) { this.logger = logger; } public IActionResult Index() { var miniProfiler = MiniProfiler.Current; List<Author> authors = new List<Author>(); miniProfiler.RenderIncludes(this.HttpContext); using (miniProfiler.Step("Get Authors")) { authors.Add(new Author() { Id = 1, FirstName = "Joydip", LastName = "Kanjilal", Address = "Hyderabad, India" }); authors.Add(new Author() { Id = 2, FirstName = "Stephen", LastName = "Smith", Address = "NY, USA" }); authors.Add(new Author() { Id = 3, FirstName = "Anand", LastName = "Narayanan", Address = "Chennai, India" }); authors.Add(new Author() { Id = 4, FirstName = "Steve", LastName = "Jones", Address = "London, UK" }); } return View(authors); } } public class Author { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Address { get; set; } } 从上面的代码中可以看到,我用 除了顺向操作,你也可以指定让某些代码块不要显示在 mini-profile 中,需要做的是调用 using (MiniProfiler.Current.Ignore()) { // Write code here that you don't // want MiniProfiler to profile } 使用 MiniProfile 分析 ADO.NET 查询除了做一些常规的页面分析,还可以直接对 ADO.NET 查询性能进行分析,这就🐂👃了,要这么做的话,需要使用 public IActionResult Index() { using (SqlConnection connection = new SqlConnection(@"Data Source=.; Initial Catalog=PYZ_L; Trusted_Connection=Yes")) { using (ProfiledDbConnection profiledDbConnection = new ProfiledDbConnection(connection, MiniProfiler.Current)) { if (profiledDbConnection.State != System.Data.ConnectionState.Open) { profiledDbConnection.Open(); } using (SqlCommand command = new SqlCommand("Select * From Clothes", connection)) { using (ProfiledDbCommand profiledDbCommand = new ProfiledDbCommand(command, connection, MiniProfiler.Current)) { var data = profiledDbCommand.ExecuteReader(); //Write code here to populate the list of Authors } } } } return View(); } 从上图可以看到,确实对 ADO.NET 查询有着清晰的分析,相信在帮助大家分析问题时很有帮助。 MiniProfiler 是一个可应用于 .NET, Ruby, Go 和 Node.js 的性能分析工具,你可以使用 MiniProfiler 去分析 Dapper,Linq2SQL,Entity Framework 所使用的sql的查询性能,此外 MimiProfile 之所以 Mini,意味着它介入到你的应用程序中所带来的性能开销微乎其微,所以大家可放心的丢到生产上去吧! 到此这篇关于在 ASP.Net Core 中使用 MiniProfiler的方法的文章就介绍到这了,更多相关 ASP.Net Core 使用 MiniProfiler内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论