2

WEB API (전용)를 사용하는 경우 API 컨트롤러와 일반 웹 컨트롤러간에 차이가 있습니까?ASP.NET Core 2 WEB API - 종속성 삽입

  • services.AddSingleton<IService, Service();
  • services.AddScoped<IService, Service();
  • services.AddTransient<IService, Service();

이를 반환하는 컨트롤러의 서비스 차이 행위가있을 것입니다 : 수명이 사용하는 것과 같은 서비스를 추가 할 때 내 말은 웹 페이지 또는 REST가 JSON을 반환하는 컨트롤러는 상태 비 저장 중입니까?

+1

아니요, 여기에는 차이점이 없습니다. –

답변

1

예, ASP.NET Core 이전에는 ASP.NET MVC와 ASP.NET Web API간에 앱이 분할되었습니다.

ASP.NET 코어가 변경되었습니다. 이제는 데이터 또는 뷰를 반환하는지 여부에 관계없이 요청을 처리하기위한 일반적인 MVC 접근 방식 (MVC 미들웨어로 나타남)입니다.

"동일한"파이프 라인 구현이 모든 요청에 ​​대해 실행되므로 라이프 사이클에 영향을 미치지 않습니다.

예를 들어, 동적 응답 데이터를 반환하기 위해 정의 된 컨트롤러 동작을 만들 수 있습니다 :

[HttpGet] 
    public dynamic Index(int flag) 
    { 
     if (flag == 1) return new StatusCodeResult(200); 
     if (flag == 2) return new { id = 1, Name = "some text" }; 
     else return View(); 
    } 

그래서 쿼리 매개 변수에 따라 달라집니다, 그것은 응답, 또는보기로 만 상태 코드를 JSON 데이터를 반환합니다. 그리고 컨트롤러 인스턴스를 생성하는 동안 (일부 종속성이 DI를 통해 해결 될 수있을 때) 프레임 워크는 어떤 흐름이 사용될 지 아직 알지 못합니다.

+1

나는 그것을 안다. 어쩌면 제 질문이 충분히 명확하지 않을 수도 있습니다. DI에 추가 된 서비스의 라이프 사이클에 차이가 있는지 알고 싶습니다. – user2818430

+0

@ user2818430 게시물을 업데이트했습니다. – Set

관련 문제