MVC 5 프로젝트와 Web Api 프로젝트의 차이점


135

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

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

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

답변:


182

기본적으로 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
감사합니다 Elad 내가 그것을 얻었습니다 .Ans를 편집하고 Asp.net Identity 및 Web Api 2에 대해 뭔가를 추가 할 수 있습니까?
루프

따라서 dektop 앱에서 컨트롤러 작업에 액세스 할 수 없습니다. 적절한 GET 구문을 사용하여 URL을 호출하더라도
깨지지 않는

70

내 두 센트 ...

  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 시작하기

WebAPI가 더 읽기 쉬운 이유를 비교 코드에서 알 수 없습니다. 또한 웹 API이기 때문에 [HttpGet]과 같은 HTTP 메소드 속성을 가질 것으로 예상되는 것이 있습니다. 여기에서
Gobe

2
허용되는 대답은 "기본적으로 웹 API 컨트롤러는 MVC 컨트롤러입니다"라고 표시합니다. 그것은 단순히 잘못입니다. 전체 있다고 회신 점 POINT WebAPI의 그것은 것입니다 을지지 않습니다 MVC, 그것은 하지 않습니다 모든 수하물 오버 헤드 "보기"와 "렌더링"를 처리하기위한 처리해야합니다. ... 및 WebApi 컨트롤러는 웹 사이트에만 연결될 필요가 없습니다. 매우 좋은 답변-감사합니다!
FoggyDay

0

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

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

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


0

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.