ASP.NET Core中大量使用了异步(async),比如:
PageHandlerMethod除了同步的OnGet()和OnPost(),还可声明异步方法:
public async Task OnGetAsync() public async Task<IPageResult> OnPostAsync()除了同步的IPageFilter,可以实现异步的IAsyncPageFilter:
public interface IAsyncPageFilter
IActionResult
public interface IActionResult { Task ExecuteResultAsync(ActionContext context); }
有一种观点认为:既然.NET为我们提供了这么方便的异步实现机制(async方法),那我们就应该全部异步,以提高性能!
对此,飞哥持保留意见。为什么呢?我们需要了解ASP.NET的运行机制。
IIS是天然多线程的。
具体来说,IIS中可以设立若干个“应用程序池”,每个程序池中都维护着若干线程,为ASP.NET项目维护着一个。,
IIS为每一个Request分配一个线程,Request结束线程不销毁而是“放回”线程池,以便于以后使用。
(管道)
异步不是多线程
async无法提高响应速度。
要提高响应速度:Ajax
Async唯一的情形:
IIS 忙不过来,但其他组件还很闲
争议:async究竟能不能提高性能?
用于ASP.NET的IIS本身就是多线程的,不然,多个请求同时到达就要“排队”
很简单,
async并不能
功能 | 知识点 |
布局整理 |
Layout和section |
注册/修改密码/个人资料、内容发布等 |
TagHelper和Model绑定/验证 |
消息已读/删除 | CheckboxList:综合运用 |
登录/退出登录 |
cookie/session和重定向 |
登录状态提示/侧边栏Widget |
PartialView和ViewComponent |
内容修改,列表过滤/分页,单页显示 |
Route和QueryString |
多快好省!前端后端,线上线下,名师精讲
更多了解 加: