2016-07-22 13 views
1

나는 async/await 패턴에 대해 아주 깊이 이해하지 못한다는 것을 인정한다. 방금 일부 기사를 읽고이 패턴이 좋음을 느껴서 어디서나 사용했습니다. 내 서비스 계층은 다음과 같은 코드로 박제되어비동기/대기 패턴을 잘못 사용했거나 과용 했습니까?

public async Task DoSomeWork() 
{ 
// some database operations... 
await ctx.SaveChangesAsync(); 
} 

그리고 내 비동기 컨트롤러 액션 메소드에서 :

내 대부분의 프로젝트에서
public async Task<ActionResult> SomeAction() 
{ 
await service.DoSomeWork(); 
return View(); 
} 

는 IIS 서버와 데이터베이스 서버가 동일한 인트라넷에, 동일한 물리적 서버에서도 마찬가지입니다. 그래서 나는 비동기를 사용함으로써 이익을 얻지 못한다고 생각하지만, 오히려 단점으로 고통 받고있다. 그 중 하나는 페이지가 개발 단계에서 아무런 예외도 보이지 않고, 디버깅하는 동안 수천 번 경험했다. 코드 줄을 기다리는 중 아무런 반응이없고 예외도없고 쉬지도 않습니다.

그래서 비동기/대기 패턴을 오용하거나 과도하게 사용합니까?

답변

2

비동기는 다음 두 가지에 적합합니다. UI 응용 프로그램에서 async가 응답 성을 제공합니다. async는 서버 응용 프로그램에서 확장 성을 제공합니다.

ASP.NET 서버의 경우 async를 사용할지 여부는 일반적으로 백엔드의 확장성에 달려 있습니다. 대부분의 경우 데이터베이스 서버가 병목 현상이 있기 때문입니다. 백엔드가 확장 가능하면 (예 : NoSQL) 웹 서버에서 비동기를 사용하는 것이 일반적입니다. 그러나 당신이 당신의 bakend로서 SQL 서버의 단일 인스턴스를 가지고 있다면, 비동기 웹 서버는 보통 의미가 없습니다.

관련 문제