ASP.NET/ASP.NET Core
[ASP.Net Core] 비동기 처리하기 async, await 키워드 이용
http://portfolio.wonpaper.net
2023. 7. 8. 15:21
ASP.Net Core 코드 상에서 일반적인 동기(sync) 처리 기법이 아니라 비동기(async) 처리 기법으로 코드를 짤 수 있다.
일단 아래 코드를 비교해서 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// 일반적인 코딩 방식(동기식)
public int InsertStasticsCnt(string ip)
{
string sql = "Insert into WebStatistics (Ip,Reg_date) values (@Ip, getdate())";
return db.Execute(sql);
}
// 비동기식
public async Task<int> InsertStasticsCnt(string ip)
{
string sql = "Insert into WebStatistics (Ip,Reg_date) values (@Ip, getdate())";
return await db.ExecuteAsync(sql);
}
|
cs |
일반적인 동기식의 코딩형태로 작업을 할 경우, 여러 Request 요청이 있을 경우, 제한된 자원이상의 TheadPool 를 넘어설 경우의 요청건은 다른 Request 요청들의 작업이 끝날때까지 약간의 대기를 하는 Delay time 이 주어진다.
그러나, 비동기식의 코딩방식의 경우 말그대로 비동기식으로 내부처리됨에 따라 이와 같은 대기 시간없이 바로바로 처리되는 메커니즘을 가진다.
async ~ await 키워드는 꼭 쌍으로 주어짐으로 앞쪽에서 async 하면 다음 코드 부에서 await 부분을 꼭 넣어줘야 정상적으로 비동기처리 된다.
보통의 경우는 await 가 디비를 처리하는 라인의 제일 앞에 명기해주면 된다.
https://code-maze.com/asynchronous-programming-with-async-and-await-in-asp-net-core/