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.