您现在的位置是:网站首页> 编程资料编程资料
不可忽视的 .NET 应用5大性能问题_实用技巧_
2023-05-24
346人已围观
简介 不可忽视的 .NET 应用5大性能问题_实用技巧_
实现有效 APM 策略所面临的挑战:
- 代码依赖
- 过度或不必要的日志
- 同步与锁
- 潜在数据库问题
- 潜在的基础架构问题
1、代码依赖
开发程序是一项具有挑战性的工作。你不仅要为了满足商业需求而建立程序逻辑,还要选择最合适的代码库和工具来帮助你。你能想象自己创建所有的日志管理代码,XML 和 JSON 解析逻辑,或所有的序列化库么?你当然可以编写代码来完成这些事,但是诸多开源开发者团队已经做好了这些事情,你又何必亲力亲为呢?此外,如果你正在与第三方系统集成,你会自己读完专有的通信协议规范,还是购买供应商提供的库帮你完成呢?
我相信你会同意:如果有人已经解决了你的问题,使用他的解决办法会比自己想办法解决效率更高。如果这是一个已经被许多公司采用的开源项目,那么很可能它已经经过完备的测试,文档充足,而且你应该找得到许多使用教程。
然而,使用依赖库是有危险的。你需要回答以下问题:
- 这个库真的写得很好并且已经充分测试了吗?
- 你是否用与众多公司一样的方式使用这个库?
- 你的使用方式是否正确?
请确保在选择外部库之前进行一些调查,如果你对某个库的性能有什么疑问,那就进行一些性能测试。开源项目很好的地方在于你可以访问它们的全部源代码以及测试套件和构建流程。下载它们的源代码,执行编译过程,并查看测试结果。如果你看到很高的测试覆盖率,那么就可以比没有测试案例时信心百倍!
最后,确保正确地使用依赖库。如果正确使用,ORM 工具的确能够大大提高性能。ORM 工具的问题在于,如果你不花时间去学习如何正确地使用它,你就会轻易的砸自己脚,破坏自己的应用性能。关键就在于如果不花时间学习这些工具,本应帮助你的工具反而会伤害你。
2、过度或不必要的日志
日志记录是调试工具库里的强大武器,可以帮助你识别应用执行过程中在特定时间内可能发生的异常。当错误发生时,捕捉错误信息并收集尽可能多的上下文信息是非常重要的。然而,简洁地捕捉错误条件和过度记录之间是有差别的。
最普遍的两个问题就是:
- 多级别异常日志
- 错误配置生产日志级别
异常日志能帮助你了解应用程序中发生的问题,因而非常重要。但一个常见的问题是,应用程序所有层级的异常都进行记录。例如,你的某个数据访问对象捕获到一个数据库异常,并将该异常传达到服务层。服务层可能会捕捉该异常,并将其传达到网络层。如果我们在数据层、服务层和网络层上都记录该异常,那么我们对此相同的错误条件就有三条堆栈记录。这会导致写入日志文件的额外负担,还会使日志文件充满冗余信息。但这个问题非常普遍,我敢断言,如果你检查自己的日志文件,你很可能会发现多个这样的例子。
生产应用中常见的另一个大的日志问题与日志级别有关。.NET 日志记录器定义了以下日志记录级别(.NET TraceLevel 与 log4net 中的命名会有所不同,但绝对相似):
- Off
- Fatal
- Error
- Warning
- Info
- Verbose / Debug
提示:
本文由神整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
相关内容
- ASP.NET MVC HtmlHelper如何扩展_实用技巧_
- 在ASP.NET 2.0中操作数据之六:编程设置ObjectDataSource的参数值_自学过程_
- 在ASP.NET 2.0中操作数据之五:声明参数_自学过程_
- 在ASP.NET 2.0中操作数据之四:使用ObjectDataSource展现数据_自学过程_
- 在ASP.NET 2.0中操作数据之三:创建母版页和站点导航_自学过程_
- 在ASP.NET 2.0中操作数据之二:创建一个业务逻辑层_自学过程_
- ASP.NET My97DatePicker日期控件实现OA日期记事功能_实用技巧_
- ASP.NET使用My97DatePicker日期控件实例_实用技巧_
- ASP.NET项目开发中日期控件DatePicker如何使用_实用技巧_
- Aspnetpager对GridView分页并顺利导出Excel_实用技巧_
