[C#] MVC 5 프로젝트와 Web Api 프로젝트의 차이점

ASP.NET MVCWeb API를 처음 사용 하고 기본 사항을 얻으려고합니다. AFAIK에는 VS 2013에 이름이 MVC, Web API및 인 프로젝트 템플릿이 Both of them together있습니다.

튜토리얼을 살펴본 결과 웹 API 템플릿과 함께 MVC 만 사용하여 API를 만들 수 있다는 것을 알게되었습니다.

그렇다면 아키텍처사용 에 따른 차이점은 무엇입니까 ?



답변

기본적으로 Web API컨트롤러는 MVC컨트롤러 HttpMessageResponse이며 대신에 응답의 기본 유형으로 사용 됩니다 ActionResponse. 그들은 대부분의 다른 측면에서 동일합니다. 프로젝트 유형의 주요 차이점은 프로젝트 유형은 웹 사이트에 필요한 MVC Applicationdefault CSS, JavaScript파일 및 기타 리소스와 같은 웹 특정 항목을 추가 한다는 점 입니다. API에는 필요하지 않습니다.

MVC는 웹 사이트를 만드는 데 사용됩니다. 이 경우 Controllers일반적으로 View브라우저 요청에 HTML 응답을 반환 합니다. 반면에 웹 API는 일반적으로 다른 응용 프로그램에서 사용하도록 만들어졌습니다. 다른 응용 프로그램이 데이터 / 기능에 액세스 할 수있게하려면이 액세스를 용이하게하는 웹 API를 만들 수 있습니다. 예를 들어 Facebook에는 앱 개발자가 앱을 사용하는 사용자에 대한 정보에 액세스 할 수 있도록 API가 있습니다. 웹 API는 공공 소 비용 일 필요는 없습니다. 자신의 응용 프로그램을 지원하는 API를 만들 수도 있습니다. 예를 들어, MVC 웹 사이트의 AJAX 기능을 지원하기 위해 웹 API를 만들었습니다.

Microsoft는 다른 템플릿을 제공하는 방식을 변경했습니다. 이제는 프로젝트 유형마다 다른 템플릿을 사용하는 대신 개발자가 필요에 따라 동일한 프로젝트 내에서 ASP.NET 기술을 혼합하도록 권장합니다. Microsoft는 이것을 호출합니다 vNext.

업데이트 : ASP.NET Core의 경우 Web API가 MVC 6 프로젝트 유형 ApiController에 통합되었으며 클래스가 클래스에 통합되었습니다 Controller. 자세한 내용은 https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6


답변

내 두 센트 …

  1. 에서 ASP.Net MVC – MVC의의가 Controller되어야 하는지를 결정한다 View– 즉, 컨트롤러가 요청을 할 때 사용자가 (현재 시나리오 또는 상황에 따라) “를 참조하십시오”해야하는지 결정한다.
  2. 에서 ASP.Net 웹 양식ASPX페이지가 요청을 할 때 사용자가 “표시”해야하는지 결정한다.
  3. 그러나 Web API 에서는 사용자가 요청을 할 때 무엇을 “보아야”하는지 결정하기 위해 Web API 기능에 대한 제어 / 권한이 없습니다.

웹 API는 웹 사이트에만 국한된 기술이 아닙니다. 웹 사이트뿐만 아니라 다양한 목적으로도 사용할 수 있습니다. 그래서 그것은의 의미를 모른다rendering

추가 자료

  1. 오늘날 웹 솔루션 계획 : Web Forms, ASP.NET MVC, Web API 및 OWIN.
  2. WCF 또는 ASP.NET 웹 API? 주제에 대한 내 두 센트
  3. 차세대 .NET – ASP.NET vNext
  4. ASP.NET MVC 6 시작하기

답변

컨트롤러 클래스에서 파생 된 MVC 컨트롤러. Mvc에서는 뷰를 반환 할 수 있습니다. Mvc 아키텍처는 응용 프로그램을 만드는 데 사용됩니다. 그러나 웹 API는 다양한 응용 프로그램에 데이터를 제공하는 데 사용됩니다.

Web Api는 Api 컨트롤러에서 구동되며보기를 반환하지 않습니다.

참고 : MVC 컨트롤러에서 Web Api를 작성할 수도 있지만 JsonResult 또는 기타 웹 API 지원 리턴 유형으로 결과를 리턴해야합니다.


답변

여기에 이미 제공된 답변 외에도 ApiController에서 상속하고 Http 동사 POST로 작업을 수행하는 컨트롤러는 하나의 [FromBody] 입력 매개 변수 만 가질 수 있습니다. MVC 컨트롤러를 사용하는 경우 ( ‘Controller’에서 파생) 많은 사후 입력 매개 변수를 가질 수 있습니다.


답변