首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

10个小技巧助您写出高性能ASP.NET Core代码

即使不支持或不允许WebSocket环境,SignalR Java客户端现在也可以使用。 友情提示:构建新ASP.NET Core项目,不要忘记选择最新版本。...始终使用异步编程(ASYNC-AWAIT) 异步编程模型是C#5.0引入,并变得非常流行。ASP.NET Core使用相同异步编程范例来使应用程序更可靠、更快和更稳定。...TASK.WAIT或TAST.RESULT 使用异步编程,我建议您避免使用Task.Wait和Task.Result并尝试使用WAIT,原因如下: 它们阻塞线程直到任务完成,并等待任务完成。...等待同步阻塞线程,直到任务完成。 Wait 和 Task.Result AggregateException包含所有类型异常,并在在执行异常处理增加复杂性。...数据访问逻辑代码性能上起着至关重要作用。如果您代码没有优化,那么应用程序性能通常就不会很好。 但是,如果您在EFCore以优化方式编写数据访问逻辑,那么肯定会提高应用程序性能。

4.5K31

ASP.NET Core 性能最佳做法(上)

线程可以处理另一个请求,而不是等待长时间运行同步任务完成。 ASP.NET Core 应用一个常见性能问题是阻塞可以异步进行调用。许多同步阻塞调用都会导致线程池饥饿和响应时间降低。...禁止行为: 通过调用 Task.Wait 或 Task.Result 阻止异步执行。 获取常见代码路径锁。当构建为并行运行代码ASP.NET Core 应用性能最高。...使用页面大小和页面索引参数,开发人员应支持返回部分结果设计。当需要详尽结果,应使用分页来异步填充结果批次,以避免锁定服务器资源。...如果可接受稍微过时数据,请考虑缓存从数据或远程服务检索经常访问数据。根据方案使用 MemoryCache 或 DistributedCache。...对于涉及长时间运行任务一些请求,最好使整个请求-响应过程异步进行。 建议: 普通 HTTP 请求处理过程,请勿等待长时间运行任务完成。

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行

当与默认会话状态进程模型一起使用时(即,会话状态存储在内存 ASP.NET 辅助进程),会话状态存储视图状态尤其有效。...图 5 消除不必要会话状态数据访问 那么您应该怎么办呢?很简单:禁用不使用会话状态会话状态。这样做总是一个好办法,但是当会话状态存储在数据,该方法尤其重要。...="true" ... %> 通过以这种方式控制会话状态,可以确保 ASP.NET真正需要访问会话状态数据。...如果角色存储在数据,那么对于每个请求需要访问多个数据情况,您可以轻松地免除访问多个数据。...I/O 绑定而不是计算机绑定且需要很长时间执行任何页面很有可能成为异步页面。 当我将关于异步页面的信息告知开发人员,他们经常回答“那真是太棒了,但是我应用程序并不需要它们。”

3.5K80

ASP.NET Core 性能优化最佳实践

线程可以处理另一个请求,而不是等待长时间运行同步任务完成。 ASP.NET Core 应用程序常见性能问题通常是由于那些本可以异步调用但却采用阻塞时调用而导致。...建议 : 要 以异步方式调用所有数据访问 API 。 不要 读取不需要数据。 编写查询,仅返回当前 HTTP 请求所必需数据。...要 考虑缓存从数据或远程服务检索频繁访问数据 (如果稍微过时数据是可接受的话) 。 根据具体场景,可以使用 MemoryCache 或 DistributedCache。...避免 HttpRequest/HttpResponse body 上同步读取或写入 ASP.NET Core 所有 I/O 都是异步。...不要进行如下操作: 以下示例使用 async void ,这将使得 HTTP 请求第一个 await 处理完成,进而就会导致: ASP.NET Core 应用程序, 这是一个完全错误 做法

2.4K30

一系列令人敬畏.NET核心,工具,框架和软件

dataaccess_aspnetcore – DataAccess Toolbox包含使用工作单元和存储模式ASP.NET Core中使用Entity Framework Core 1.0进行数据访问基类...NEventStore – 使用事件源作为存储机制,用于抽象不同存储实现持久性。该开发特别关注DDD / CQRS应用程序。...HangfireIO – ASP.NET应用程序http://hangfire.io执行即发即弃,延迟和重复执行任务简便方法。 LiquidState – 用于.NET高效异步和同步状态机。...数据存储单个JSON文件。具有身份验证,WebSocket通知,异步长时间运行操作,错误/延迟随机生成以及实验性GraphQL支持。...– 实时交易平台演示,展示整个应用程序堆栈应用反应式编程原理。

18.3K30

DotNet 资源大全中文版(Awesome最新版)

Nake - 基于魔术脚本C#任务跑步者 Caching缓存 CacheCow - 客户端和服务器上ASP.NET Web API HTTP缓存实现 Akavache - 异步,持久键值存储 CacheManager...MediatR - .NET简单,没有意义调解器实现 Warden - 为您应用程序,资源和基础设施定义“健康检查”。...Queue队列 NServiceBus - 最受欢迎.NET服务总线 Hangfire -令人难以置信轻松方式ASP.NET应用程序执行防火,延迟和重复任务 RabbitMQ.NET -实现用于...NET应用程序执行火灾忘记,延迟和重复执行任务简单方法 Chroniton - 一个简单,完全可集成和可定制,用于计划上运行强类型作业(任务)。...CodeHub - CodeHub是在任何iOS设备上浏览和维护您GitHub存储最佳方法!

16.1K82

C 异步调用

让线程处于等待状态很不好,特别是服务器运行压力很大情况下。等待线程不会进行任何有效工作,例如为其他请求提供服务。...Web 方法   确定是否适合在您应用程序采用异步 Web 方法,有几个问题需要考虑。...此示例代码比前面示例代码简单得多,并且还具有另外一个优点,即没有与为中间层 Web 方法请求提供服务相同线程池中启动后端处理。...ADO.NET 尚未定义一个完好异步调用机制;而只是将 SQL 调用包装到异步委托调用对提高效率没有什么帮助。...这样您就可以利用 .NET Framework 支持,异步调用 Web 服务以查询或更新数据。   通过 Web 服务调用访问 SQL ,需要注意众多后端资源。

1.3K10

C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService(二)

4)使用 Double Submit Cookies将令牌既存储 Cookie ,又存储在请求参数。服务器接收请求,比较 Cookie 令牌和参数令牌,确保一致性。...用途: 用于存储页面上控件状态信息,避免 postback 丢失用户输入或操作。区别: 存储页面,通过隐藏字段传输。... ASP.NET 开发,开发人员通常会频繁地使用这些对象来完成各种任务。38. c# ,反射是什么?处理反射相关 namespace 是什么?...2、异步通信AJAX 技术关键在于异步通信,即可以在后台发送请求,继续执行其他任务,当请求完成触发回调函数处理响应。异步通信使得页面能够更加流畅地响应用户操作,而不需要等待整个页面刷新。...2、使用存储过程将数据访问逻辑移到数据,并使用存储过程执行数据操作。存储过程可以在数据服务器上执行,减少数据传输开销。

11410

C#并发编程之异步编程(三)

我们以ASP.NET为例,对于网络请求之类操作,此时没有线程执行异步操作,他们都被阻塞了,正在等待操作完成。但是如果使用了Task.Run,那么执行该任务就要用到线程池里线程了。...当等待任务完成,当前同步上下文被存储为暂停方法一部分。然后,当方法恢复,await关键字基础结构使用POST捕获同步上下文上恢复该方法。...到达等待没有当前同步上下文,例如在控制台应用程序。...性能关键代码或者某个代码,如果我们并不不关心使用到了哪个线程,这个时候我们也可以通过自己手动操作来避开这种开销。 等待任务之前调用ConfigureaWait来完成。...前文有说过,本文再提一次,同步代码运行异步代码,可能有隐藏问题。Task有一个Result属性,该属性阻止等待任务完成。

1.4K50

ASP.NET MVC 中使用异步控制器

线程池处理请求方式 Web 服务器上,.NET Framework 维护一个用于服务 ASP.NET 请求线程池。 当请求到达,将调度池中线程以处理该请求。...例如,如果某个请求生成一个需要两秒钟来完成网络调用,则该请求无论是同步执行还是异步执行都需要两秒钟。 但是,异步调用过程,服务器等待第一个请求完成过程不会阻塞对其他请求响应。...此辅助线程启动一个异步操作。 将此辅助线程返回到线程池以对另一个 Web 请求提供服务。 异步操作完成通知 ASP.NET。...对 CPU 绑定操作使用异步操作方法未提供任何好处并且还导致更多开销。 通常,满足以下条件使用异步管线: 操作是网络绑定或 I/O 绑定而不是 CPU 绑定。...在前面的示例,News 方法已转换为两个方法:NewsAsync 和 NewsCompleted。 NewsAsync 方法返回 void( Visual Basic 没有任何值)。

1.9K110

异步编程 In .NET

这个值取决于我们我们后面IIS IO线程和Worker线程处理速度,如果它们两个都处理不了,这个数字再大也没有用。因为最后他们会被存储到进程池级别的队列,所以只会造成内存浪费。...WinForm异步调用Web Service   有了像VS这样强大工具为我们生成代理类,我们写调用Web service代码就可以像调用本地类一样调用Web Service了,我们只需要添加一个...它主要功能之一是为我们提供了一种将一些工作任务(Delegate)以队列方式存储一个上下文对象,然后把这些上下文对象关联到具体线程上,当然有时候多个线程也可以关联到同一个SynchronizationContext...我们再来回顾一下文章所涉及到一些重要概念: async/await ASP.NET最大贡献(早期ASP.NET异步开发模式同样也有这样贡献),是访问数据时候、访问远程IO时候及时释放了当前处理性程...异步ASP.NET开发能够处理能力上带来多大提高,取决于我们程序有多少时间是被阻塞,也就是那些访问数据和远程Service时间。

1.3K81

ASP.NET 2.0 异步

ASP.NET 接收针对页请求,它从线程池中提取一个线程并将请求分配给该线程。一个普通(或同步)页该请求期间保留线程,从而防止该线程用于处理其他请求。...然后,ASP.NET 调用使用 AddOnPreRenderCompleteAsync 注册 Begin 方法。Begin 方法任务是启动诸如数据查询或 Web 服务调用异步操作,并立即返回。...Begin 启动一个异步 I/O 操作,当该操作完成ASP.NET 从线程池提取另一个线程并调用 End 方法,并且该线程上执行该页生命周期其余部分。 ?...当调用完成,EndAsyncOperation 调用 SqlCommand.EndExecuteReader 以获取 SqlDataReader,然后将其存储私有字段。...异步调用 Web 服务 另一个通常由 ASP.NET Web 页执行、与 I/O 相关任务是调出 Web 服务。

1.9K90

再也不用std::thread编写多线程了

Part1第7章 并发API 1条款35:优先选用基于任务而非基于线程程序设计 /** * @brief * 标准并发元素:任务,期望,线程,互斥量,条件变量和原子对象,为期望提供了两个模板:std...* * @return int */ //3 //std::async默认启动策略使用 thread_local变量,无法预知会取到是哪个线程局部存储 using namespace...没有提供任何办法判断其指涉共享状态是否诞生于 std::async 调用,所以给定任意期望对象前提下,它不可能知道自己是否会在析构 //函数阻塞到异步任务执行结束 //该容器析构函数可能会在其析构函数阻塞...如果检测任务初始化之后从不访问该数据结构 * 并且检测任务指示它已就绪之前,反应任务从不访问它,但是根据以上程序逻辑,这两个任务互相阻止对方访问。...flag) { /* code */ } } /** * @brief * 方法二缺点: * * 1, * 该方法没有任何基于条件变量得设计得缺点:不需要互斥体,如果检测任务反应任务开始轮询之前就设置了标志位

2.3K40

JeffreyZhao]正确使用异步操作

线程池本身是一个“对象池”,会在需要新对象(托管线程)创建,而在对象不需要之后(一段特定时间之内没有任务需要分配托管线程)负责销毁以释放资源。...ASP.NET每个请求(客人)都会使用一个线程池内线程(服务员)来处理(招待),处理很可能需要访问数据(使用机器),对于普通做法,处理线程会等待数据操作返回(服务员看着机器直至完成)。...而此时,这种异步调用是真正地节省资源,因为我们可以腾出线程用来处理其他任务了,这就是和第一种异步调用最大区别。...虽然当前调用线程立即返回了,但是数据读取或写入操作依旧占用着另一个线程(IOCP支持异步操作不需要线程),因此并没有任何“节省”,反而还很有可能降低了应用程序性能,因为额外线程切换会造成性能损失...至于正确做法,网络上已经有不少文章讲述了如何在ASP.NET中正确使用异步操作,大家可以搜索相应资料来看,我也会在以后文章略有提到。   关于异步操作,这次就讲到这里吧。

669100

.Net Web开发技术栈

TPL异步 异步编程模型(APM) 基于事件异步模式(EAP) 基于任务异步模式(TAP) ... 数据结构 算法 线性表 二叉树 栈与队列 ......触发器、计划任务等常用技术 数据分库、拆表、分布式、集群、备份、故障调控等方案 数据三大范式与反范式 RBAC(Role-Based Access Control,基于角色访问控制)权限模型 数据机制...当发送邮件,Mail 服务器先对域名进行解析,查找mx记录 TXT记录:是域名系统(DNS)由域名托管服务商存储一种资源记录,其作用是防止垃圾邮件滥用行为 AAAA记录:指定网站域名对应IPv6...和.discomap文件),可定义Web应用以用语应用程序 Bin:包含空间,组件或你要在应用程序应用其他程序代码已编译组件(.dll文件).[Bin]文件夹以程序代码表示任何类, 都会自动应用程序应用到...消息队列 消息队列 - Message Queue(MQ),是一种应用程序之间通信机制,将部分无需立即回调获取结果,并且耗时操作,使用异步处理方式提高服务器吞吐量及性能.如秒杀活动,上传任务,日志记录等

4.8K30

《大型网站技术架构》读书笔记之五:万无一失之网站高可用架构

我们常常听到说,Http是一个无状态协议,同一个会话连续两个请求互相不了解,他们由最新实例化环境进行解析,除了应用本身可能已经存储全局对象所有信息外,该环境不保存与会话有关任何信息。...之所以我们使用ASP.NET WebForm开发中会感觉不到Http无状态特性,完全是因为Microsoft帮我们实现了ViewState,它是ASP.NET WebForm中保存页面信息基本单位...,使其符合Session存储访问要求。...关系数据热备机制就是通常所说主从同步机制,实践通常使用读写分离方法来访问Master和Slave数据,也就是说写操作只访问Master,读操作均访问Slave。 ?...,系统发生报警,即使工程师千里之外,也可以被及时通知;   ②失效转移:监控系统发现故障,主动通知应用进行失效转移;   ③自动优雅降级:为了应付网站访问高峰,主动关闭部分功能,释放部分系统资源

47440

asp dotnet core 记一次应用拒绝响应调试 开启线程等待同步用光线程池

而在日志服务全部挂掉时候,开始业务应用还能使用,但是当请求大概访问了 100 次,就发现后续访问没有任何返回。...同时在业务应用本机控制台和日志文件里面都没有任何记录,而控制台也没有收到 50x 等错误,也就是业务应用还在工作,但是没有任何响应 我本地上可以复现,使用 VisualStudio 开启所有异常,也什么都没收到...我底层给我方法是异步上报日志方法,但是这个日志上报方法核心是通过 Task.Run 一个线程进行同步调用 其实在 asp dotnet core 性能优化,要尽量不使用 Task.Run...,这个代码所有请求都会进入到 await Task.Task; 等待一个不会返回任务,也就是任何请求进来只能等待超时 而刚好上面业务应用等待是没有设置超时同步调用等待一个不会返回请求,...此时 IO 异步里面将会自动出让 CPU 执行,这部分是硬件支持,因此进入异步 IO 将不会占用线程,线程可以回到线程池给其他业务调用 一个可选方法是将一些不重要但是需要慢慢执行任务放在生产者消费者队列里面

67430

译 | .NET Core 基础架构进化之路(一)

三管齐下方法 我们开发了一个三管齐下方法来减轻我们痛苦: 共享工具(又名Arcade) – 我们存储投资共享工具。...存储"语言"是不同。...遗憾是,由于仓库布局、项目结构等存在分歧,因此这些打包任务需要实现方式不同。存储如何定义应生成哪些包、这些包内容、其元数据等。...此外,由于这些脚本存储之间同步,因此对 Arcade 存储原始副本进行新更改可以快速将新功能或行为引入完全采用共享工具存储。...公开项目将通过 GitHub 存储和 PR 运行所有公共 CI,正如我们始终拥有的 私有项目将运行官方 CI 是我们需要进行任何私人更改场所,存储匹配公共 GitHub 仓库 只有私有项目才能访问受限制资源

2.6K40

Msdn 杂志 asp.net ajax 文章汇集

另外,UpdatePanel 能够为 BLL 提供与传统网页相同保护级别,并且它完全支持运行冗长任务异步 ASP.NET 页面。 最后一条忠告:避免混合使用各种 AJAX 平台。...其主要任务是调解 Web 窗体上所有其他 ASP.NET AJAX 控件,并将适当脚本添加到 Web 浏览器,从而使 ASP.NET AJAX 客户端部分能够正常工作。...管理员必须确保安全防护足够高,以便应对各种可能新类型攻击。Intranet 管理员则必须保证任何浏览器上都没有禁用 JavaScript。... ASP.NET AJAX 1.0 和集成了 ASP.NET 3.5 AJAX 平台中,JavaScript 最佳选择是 Microsoft® AJAX Library.... Silverlight 控件上添加处理程序、设置属性和调用方法过程与在其他任何控件上处理过程完全相同。

2.7K80

为什么使用Reactive之反应式编程简介

作为反应式编程方向第一步,Microsoft.NET生态系统创建了Reactive Extensions(Rx)。然后RxJavaJVM上实现了响应式编程。...该模式支持没有值,一个值或n值用例(包括无限值序列,例如时钟连续滴答)。 但是我们首先考虑一下,为什么我们首先需要这样异步反应?...从命令式到反应式编程 诸如Reactor之类反应旨在解决JVM上“经典”异步方法这些缺点,同时还关注一些其他方面: 可组合性和可读性 数据作为一个用丰富运算符词汇表操纵流程 您订阅之前没有任何事情发生...方式执行多个任务,以及将异步任务重用为更高级别系统分立组件。...但是如果元素没有准备好,它们就会在生成被上游推动。 热与冷 反应Rx家族,人们可以区分两大类反应序列:热和冷。

20830
领券