ASP.NET WebApi 대 MVC? [닫은]


140

ASP.NET MVC 컨트롤러를 사용하면 데이터를 다른 형식으로 노출 할 수 있습니다. AspNetWebAPI는 API를 만들기 위해 명시 적으로 설계되었지만 MVC 컨트롤러를 사용하여 쉽게 수행 할 수 있으며 어떤 경우에 기존 MVC 컨트롤러보다 나은지 명확하지 않습니다. WebApi의 이점이 분명하고 내 응용 프로그램에 다른 복잡성 계층을 추가 할 가치가있는 시나리오에 관심이 있습니다.

질문 : MVC와 관련하여 asp.net WebApi를 사용할 때의 장점 및 / 또는 단점은 무엇입니까?



11
이 "vs"질문이 즉시 닫히거나이 수준의 상위 투표로 올라가는 것이 얼마나 재미 있습니까?
cbmeeks

10
Grrr. 나는 "너무 잔뜩 닫혀"배너를 싫어. 여러 번 이런 좋은 질문을 찾습니다. 그리고 더 자주 그들은 또한 큰 대답을하지 않습니다. 너무 넓다면 어떨까요? 전문가들은 여기에 있으며 wikipedia 또는 다른 포럼에는 없습니다. 그러니 그들에게 일을시키고 길을 벗어나게하십시오.
nharrer

답변:


47

WebApi를 사용하면 WCF 또는 SOAP와 같은 공식 서비스를 통하지 않고 HTTP를 통해 노출 될 수있는 서비스를 작성할 수 있습니다. 또 다른 차이점은 WebApi가 Http 프로토콜을 사용하여 진정으로 일급 Http 시민으로 만드는 방식에 있습니다.

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

비교, 토론 및 자습서의 관련 링크 :

여기에 이미지 설명을 입력하십시오


20
다른 게시물이 비슷하다는 데 동의하지 않습니다. 다른 게시물은 실제로 WCF 대 WebAPI에 관한 것입니다.
Shane Courtrille

기술적으로 말하자면 WCF 웹 API는 두 번째 줄에 Asp.net 웹 API에 병합되어 자체 호스팅을 지원한다고 언급합니다. 어쨌든 최신 링크로 링크를 업데이트했습니다. 도움이 되길 바랍니다.
Yusubov

참조를 업데이트했습니다.
Yusubov

23

WebAPI는 OData를 추출하므로 OData 사용의 모든 이점을 얻을 수 있습니다. 예를 들어 WebAPI를 사용하면 다음을 얻을 수 있습니다.

  • $ filter, $ top, $ orderby 등과 같은 쿼리 옵션
    • 전통적인 MVC 컨트롤러를 사용하면 직접 구현해야합니다.
  • 형식의 표준화
    • RESTful API의 기본 형식을 이해하는 OData 클라이언트가 있습니다.

5
일종의. 최소한 RC를 기준으로 'queryable'속성으로 작업을 장식하는 경우에만 oData를 지원할 수 있습니다.
EBarr

14

Asp.Net 웹 API VS Asp.Net MVC 1 . Asp.Net MVC는 뷰와 데이터를 모두 반환하는 웹 응용 프로그램을 만드는 데 사용되지만 Asp.Net Web API는 뷰가 아닌 데이터 만 반환하는 쉽고 간단한 방법으로 완전한 HTTP 서비스를 만드는 데 사용됩니다.여기에 이미지 설명을 입력하십시오

2 . 웹 API는 .NET Framework를 통해 REST-ful 서비스를 구축하는 데 도움이되고 컨텐츠 협상도 지원합니다 (클라이언트가 수용 할 수있는 최상의 응답 형식 데이터 결정에 관한 것입니다. JSON, XML, ATOM 또는 기타 형식화 된 데이터 일 수 있음) ), 자체 호스팅은 MVC에 없습니다.

3 . 또한 웹 API는 JSON, XML 또는 요청의 Accept 헤더를 기반으로하는 다른 형식으로 데이터를 반환하므로 걱정하지 않아도됩니다. MVC는 JsonResult를 사용하여 JSON 형식의 데이터 만 반환합니다.

4 . Web API에서는 요청이 HTTP 동사를 기반으로하는 조치에 맵핑되지만 MVC에서는 조치 이름에 맵핑됩니다.

도 5 . Asp.Net Web API는 새로운 프레임 워크이며 핵심 ASP.NET 프레임 워크의 일부입니다. 웹 API에 존재하는 모델 바인딩, 필터, 라우팅 및 기타 MVC 기능은 MVC와 다르며 새로운 System.Web.Http 어셈블리에 존재합니다. MVC에서는 이러한 기능이 System.Web.Mvc에 있습니다. 따라서 Web API는 Asp.Net과 함께 독립형 서비스 계층으로도 사용할 수 있습니다.

도 6 . 단일 프로젝트에서 Web API와 MVC 컨트롤러를 혼합하여 JSON, XML 또는 기타 형식으로 데이터를 반환하고 완전한 HTTP 서비스를 구축 할 수있는 고급 AJAX 요청을 처리 할 수 ​​있습니다. 일반적으로이를 웹 API 자체 호스팅이라고합니다.

도 7 . MVC와 Web API 컨트롤러를 혼합하고 권한 부여를 구현하려는 경우 MVC 용 필터와 Web API 용 필터를 각각 두 개씩 만들어야합니다.

도 8 . 또한 웹 API는 경량 아키텍처이며 웹 응용 프로그램을 제외하고 스마트 폰 앱과 함께 사용할 수도 있습니다.

오리지널 소스는 여기


13

유사점

1) 둘 다 비동기 요청에 대해 ihhtphandler에서 상속하므로 기본적으로 apicontroller 또는 mvc 컨트롤러는 모두 웹의 래퍼입니다.

차이점 : 1) mvc 컨트롤러는 정의를 통과하면 사용 된 인터페이스와 기본 코드 수를 볼 수 있으며 웹 API는 더 가벼운 컨트롤러이며 전달 된 매개 변수로 요청을 구별합니다 (예 : 우리도 변경할 수 있습니다!) )

2) MVC 컨트롤러에는 뷰, 액션 결과, 자바 스크립트 결과 등의 기능이 너무 많지만 웹 API에는 JSON 또는 XML이 있습니다.

3) API는 뷰에 의존하지 않고 MVC 컨트롤러가 뷰와 긴밀하게 통합되어이를 지원할 수없는 곳에서 독립적으로 호스팅 할 수있는 Restful (get, post, put, delete, options) 서비스를 구현하기위한 것입니다.


1
JSONResult와 같은 mvc 작업 결과를 사용하여 MVC로 API와 같은 동작을 계속 수행 할 수 있다는 점은 주목할 가치가 있습니다. 그러나 MVC 컨트롤러가 더 무겁다는 것을 지적했습니다. 또한 웹 API 컨트롤러가 구현되는 방식은 MVC보다 API를 만드는 데 더 도움이됩니다.
그리즐리 피크 소프트웨어

12

이 이미지는 문제 방식의 차이점과 유사성을 보여줍니다. 도움이 도움이 되길 바랍니다.

여기에 이미지 설명을 입력하십시오


10

어느 시점에서 ASP.NET MVC를 함께 잊어 버리고 싶을 수도 있습니다. .NET 개발자이지만 예를 들어 Angular를 사용하여 단일 페이지 응용 프로그램을 빌드하려는 경우 ASP.NET MVC와 함께 제공되는 불필요한 부풀림없이 RESTful 서비스 (WebAPI)의 이점을 원할 것입니다.


5

ASP.NET MVC와 ASP.NET 웹 API는 서로 다른 용도로 사용됩니다.

ASP.NET

ASP.NET은 웹 응용 프로그램을 만들기위한 세 가지 프레임 워크 인 Web Forms, ASP.NET MVC 및 ASP.NET Web Pages를 제공합니다. 세 가지 프레임 워크는 모두 안정적이고 성숙되어 있으며 그 중 하나를 사용하여 훌륭한 웹 응용 프로그램을 만들 수 있습니다. 어떤 프레임 워크를 선택하든 ASP.NET의 모든 이점과 기능을 어디서나 얻을 수 있습니다.

각 프레임 워크는 다른 개발 스타일을 대상으로합니다. 선택하는 것은 프로그래밍 자산 (지식, 기술 및 개발 경험), 작성중인 애플리케이션 유형 및 익숙한 개발 방식의 조합에 따라 다릅니다. 향후 릴리스의 ASP.NET에서는 세 가지 프레임 워크가 모두 지원, 업데이트 및 개선 될 예정입니다.

MVC

ASP.NET MVC는 패턴을 기반으로 역동적 인 웹 사이트를 구축 할 수있는 강력하고 패턴 기반의 방법을 제공하여 관심사를 명확하게 분리하고 즐겁고 민첩한 개발을 위해 마크 업을 완벽하게 제어 할 수 있습니다. ASP.NET MVC에는 최신 웹 표준을 사용하는 정교한 응용 프로그램을 만들기위한 빠르고 TDD 친화적 인 개발을 가능하게하는 많은 기능이 포함되어 있습니다.

웹 API

ASP.NET 웹 API는 브라우저 및 모바일 장치를 포함하여 광범위한 클라이언트에 도달하는 HTTP 서비스를 쉽게 구축 할 수있는 프레임 워크입니다. ASP.NET Web API는 .NET Framework에서 RESTful 응용 프로그램을 구축하기위한 이상적인 플랫폼입니다.

http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html에서 더 많은 양식을 읽을 수 있습니다 .


3

ASP.NET MVC는 HTML을 쉽게 출력하는 데 중점을 둡니다. ASP.NET Web API는 원시 데이터를 쉽게 출력하는 데 중점을 둡니다.

WebForms 세계에서 ASP.NET MVC는 .aspx 페이지와 같고 ASP.NET 웹 API는 .asmx입니다.


2

Asp.Net MVC는 뷰와 데이터를 모두 반환하는 웹 응용 프로그램을 만드는 데 사용되지만 Asp.Net Web API는 뷰가 아닌 데이터 만 반환하는 쉽고 간단한 방법으로 완전한 HTTP 서비스를 만드는 데 사용됩니다.

웹 API는 .NET Framework를 통해 REST-ful 서비스를 구축하는 데 도움이되고 컨텐츠 협상도 지원합니다 (클라이언트가 수용 할 수있는 최상의 응답 형식 데이터 결정에 관한 것임). MVC에서.

또한 웹 API는 JSON, XML 또는 요청의 Accept 헤더를 기반으로하는 다른 형식으로 데이터를 반환하므로 걱정하지 않아도됩니다. MVC는 JsonResult를 사용하여 JSON 형식의 데이터 만 반환합니다.


1

일반적으로 WebVC는 MVC가 더 많은 유형의 출력을 생성 할 수있는 데이터 서비스에 사용됩니다.

WebAPI는 데이터 서비스 작성 방법을 간소화합니다. 이 목적을 위해 깨끗하고 쉽습니다. MVC에는 더 많은 도구가 있습니다.

MVC는 WebAPI가 출력 할 수있는 모든 출력을 생성 할 수 있습니다. MVC에서 템플릿에서 출력을 쉽게 생성 할 수 있습니다. WebAPI에서 그렇게 할 이유를 찾을 수 없습니다. PHP 개발자와 이전 ASP 프로그래머는 과거에 C # 코드와 관련된 HTML 파일을 작성할 수있는이 태도를 알고있을 것입니다.

WebAPI- DATA MVC-DATA, UI / HTML, XHTML, 파일, 템플릿 등

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