:
시작 클래스
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
try
{
appBuilder.UseWelcomePage("/welcome.html");
appBuilder.UseErrorPage(new ErrorPageOptions
{
ShowExceptionDetails =
#if DEBUG
true
#else
false
#endif
});
Debug.WriteLine($"Setting Web Api Configuration up...");
var apiConfig = ConfigureWebApi();
appBuilder.UseWebApi(new HttpServer(apiConfig));
appBuilder.UseCors(CorsOptions.AllowAll);
Debug.WriteLine($"Completed Web Api configuration.");
}
catch (Exception ex)
{
Debug.WriteLine($"Failed to complete Web Api setup.", ex);
throw;
}
}
}
컨트롤러
public class TestController : ApiController
{
public async Task<IHttpActionResult> Get(int id)
{
return Task<IHttpActionResult>.Factory.StartNew(() => {
try
{
return Ok(id);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message, nameof(Get));
return InternalServerError();
}
});
}
}
웹 API를 내 콘솔 시작 : 여기
내 프로젝트의 샘플입니다 범죄자 troller 메소드는 동시에 실행되며, API를 호스팅하는 서버의 기능에 의해 제한됩니다. 이것은 IIS 나 자체 호스팅 중 어느 것이 든 웹 서버의 기능입니다. 그러나 그 일을 도울 수있는 일이 있습니다.
모든 것을 비동기로 유지하면 최상의 성능을 볼 수 있습니다. 예를 들어,이 방법을 컨트롤러 경우 다음과 같습니다
public async Task<IHttpActionResult> Get(int id)
{
var testObject = await _repository.GetAsync(id);
return Ok(testObject);
}
당신은 다음과 같습니다 저장소 방법이 있습니다
public async Task<TestObject> GetAsync(int id)
{
using(var connection = new SqlConnection(_connectionString)
{
// using Dapper
return await connection.QuerySingleAsync<TestObject>("sp_GetTestObject", new {Id = id}, commandType = CommandType.StoredProcedure);
}
}
이 컴퓨터는 데이터베이스 I에 대한 작업자 스레드를 사용할 수 있습니다 수행/O를 사용하여 API 엔드 포인트에 대한 다른 요청을 승인하는 것과 같은 다른 태스크를 처리하기위한 처리 능력을 확보 할 수 있습니다. @StephenCleary와 같은 누군가는 아마도 내가 말하거나 수정 한 것에 대해 설명 할 수 있습니다. @ StephenCleary의 blog과 도서는 확실히 비동기 프로그래밍을 이해하는 데 가치가 있습니다.
희망이 있습니다.
스트레스 테스트를 어떻게합니까? 그 코드를 게시 할 수 있습니까? – MichaelDotKnox
또한 Factory.StartNew를 수행하는 대신 차단 가능성이 적은 Task.FromResult (Ok (Id))를 반환 할 수 있습니다. 그게 당신의 문제를 일으킬 지 확실하지 않은 경우. – MichaelDotKnox
Paessler 's Webserver Stress 도구를 사용하여 스트레스 테스트 수행. 단순한 클라이언트를 대신 작성하고 어떻게 진행되는지 생각해보십시오. Task.FromResult 팁을 주셔서 감사합니다. – grmihel