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/

 

Asynchronous Programming with Async and Await in ASP.NET Core

In this article we are going to learn how to use async and await keywords in ASP.NET Core, making the solution more scalable.

35.226.11.130