WCF 대 ASP .Net 웹 API


93

각 기술 사용의 장단점은 무엇입니까?

WCF 웹 API가 이제 Asp.net에 병합되었습니다. Asp.net 웹 API가 이제 자체 호스팅을 지원합니다.

동일한 작업에 대해 여러 프로토콜 스키마를 노출하려는 경우 여전히 WCF에 의지하거나 Mvc 끝 점이이 작업을 수행 할 수 있습니까?

또한 새로운 Asp.Net 웹 API는 Wsdl을 노출합니까? 그렇지 않다면 클라이언트는 어떤 작업을 사용할 수 있는지 어떻게 알 수 있습니까?

틀림없이 Mvc의 가장 좋은 기능은 modelbinder입니다. WCF는 얼마나 견고합니까?

누군가 Asp.net 웹 API가 테이블에 어떤 이점을 가져다 주는지 말해 줄 수 있습니까? WCF는 압도적으로 더 강력하고 확장 가능한 선택 인 imo로 보입니다. Mvc Web Api가 WCF 모델에 대해 갖는 유일한 점은 개발의 용이성 일 것입니다. 그러나 이는 결국 심각한 디자인 제한이 될 경우 스쿼트를 의미합니다.


15
이 질문의 제목이 약간 오해의 소지가 있다고 생각합니다. 제목은 "MVC 4 vs Wcf Web Api"이지만 질문은 WCF vs ASP .Net Web API를 더 많이 다루는 것 같습니다. 제목에서 비교 대상은 표준 MVC 4 프레임 워크 (컨트롤러, 모델, 뷰) 대 ASP .Net Web API 프레임 워크라고 생각했습니다. 이 제목이 오해의 소지가 있다고 생각하는 사람이 있습니까?
BruceHill 2013 년

답변:


72

먼저 주제에 대한 내 게시물을 읽어 보시기 바랍니다. http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my- two-cents-on-the-subject.aspx

WSDL 질문과 관련하여 WebApi는 SOAP를 사용하지 않기 때문에 WSDL이 필요하지 않으며 WSDL을 내 보내지 않습니다. Hypermedia를 사용하여 가능한 활동 URL 목록과 함께 리소스를 반환 할 수 있습니다 (자체 설명 리소스로 생각).


6
아주 좋은 글입니다. 내가 본 최고의 것. 하지만 지금은 그 어느 때보 다 더 혼란스러워졌습니다. WebApi는 많은 것을 추가하지만 다른 엔드 포인트를 노출 할 수 없다는 것은 매우 제한적인 것 같습니다. 비누를 사용할 수있는 클라이언트가 있다면, 이제 비누가 전체 컨텍스트를 생성 할 수있을 때 액션을 빌드하고 결과를 직접 구문 분석해야합니다. 또한 안정적인 세션 및 Acid 트랜잭션과 같은 고급 Soap 기능에서 잠글 것입니다. 한숨.
알윈

2
@Alwyn-귀하가 언급 한 모든 사실이 사실이므로 혼동해서는 안되며 결정을 내리는 데 도움이되어야한다고 생각합니다. Web API에는 고유 한 장점이 있지만 다른 프로토콜을 포함한 여러 엔드 포인트에서 서비스를 노출해야하는 경우, 또는 당신은 클라이언트의 자동 생성 기능 또는 비누 고급 기능에 대한 강력한 필요가 -이 왜 웹 API를 통해 WCF를 선호하는 고려 수도
BornToCode

@BornToCode : 클라이언트 코드는 WebAPI로 자동 생성 될 수 있습니다. WebAPI 코드를 사용하여 swagger json 파일을 생성 할 수 있습니다. 그런 다음 swagger-codegen과 같은 코드 생성기에서 해당 json 파일을 사용하여 많은 대상 언어로 클라이언트 코드를 생성 할 수 있습니다.
실수로 공백으로 남겨 두었습니다.

@unintentionallyleftblank-IMHO 웹 API보다 WCF를 통해 클라이언트 코드를 자동 생성하는 것이 여전히 "사용자 친화적"입니다.
BornToCode

15

선택은 우리가 원하는 것에 달려 있습니다.

  1. ASP.NET Web API는 HTTP를 통해서만 SOAP 기반이 아닌 서비스를 빌드하기위한 프레임 워크이므로이 프레임 워크를 사용하여 사용할 수있는 전송 프로토콜이 더 이상 없습니다.
  2. WCF / Windows Communication Foundation은 SOAP 기반 메시지를 교환하기위한 프레임 워크입니다. 여기서는 HTTP, TCP, 명명 된 파이프, MSMQ 등 많은 전송 프로토콜을 사용합니다.

낮은 프로토콜을 사용할 수 있기 때문에 데이터 양, 아마도 WCF와 관련하여 어느 것이 더 나은 성능을 가지고 있는지 잘 모르겠습니다. 모든 의견을 부탁드립니다.


2
공격은 아니지만 HTTP는 응용 프로그램 계층 프로토콜 일뿐 입니다. 어떤 전송 계층 프로토콜을 사용할 수 있는지에 대한 고유 한 제한이 없습니다 .
smwikipedia 2013

8

WCF 웹 API는 주로 REST 구현에 중점을 둡니다. REST 구현을 설정하는 경우 표준 WCF 비트는 뒤쪽에 약간의 고통이 있습니다. RESTful 서비스를 설정하는 경우 WCF 웹 API가 훨씬 더 좋은 환경임을 알 수 있습니다. SOAP 서비스를 설정하는 경우 WCF 웹 API는 가장 친한 친구가 아니며 서비스에 WCF를 사용하는 것이 좋습니다.


2
예, 구성은 고통 스럽지만 설정 비용은 한 번입니다. 완료되면 동작 / 엔드 포인트를 거의 복사하여 다른 서비스에 붙여 넣을 수 있습니다. 대부분의 경우 WebGet으로 새 작업에 태그를 지정하면됩니다. 반면에 Soap + Wsdl을 사용하려는 클라이언트가있는 경우 코드 + 배포 + QA + 나머지가 아닌 구성 변경 일뿐입니다. 그렇다면 Mvc Web Api가 더 나은 방법은 무엇입니까?
Alwyn

1
이미 WCF에 익숙하다면 해당 경로를 계속 진행할 수 있습니다. 내가 언급 한 것 외에도 WCF Web API의 REST에 대한 몇 가지 내부 개선 사항이 있지만 (내 앞에 목록이 없습니다) 둘 중 하나가 작동 할 수 있으며 많은 경우 리팩토링에 몇 주를 소비하지 않을 것입니다. 작업 서비스, 특히. 생각에 약간의 패러다임 변화가 있기 때문입니다. 그러나 향후 작업을 위해 WCF 웹 API를 고려할 것입니다. 그러나 나는 꽤 오랫동안 WCF Web API를 사용해 왔기 때문에 편견을 가질 수 있습니다.
Gregory A Beamer

0

인트라넷 / B2B 사이트에 WCF 사용 n B2C / C2C / 인터넷 사이트를위한 웹 API ... SOAP / XML은 여전히 ​​기업 내 통신의 표준입니다. n 사라지지 않을 것입니다 !!!

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