[C#] WCF 대 ASP.NET 웹 API [닫기]

몇 달 동안 WCF의 기본 개념을 파악하려고 노력했으며 최근에 첫 번째 WCF 서비스 응용 프로그램을 개발했습니다.

구성 파일의 모든 설정을 이해하기 위해 많은 노력을 기울였습니다.
나는 환경에 대해 확신하지 못하지만 놀라운 일을 할 수있는 것처럼 보입니다.

다른 날에는 Microsoft가 ASP.NET Web API 라는 새로운 것을 발견했습니다 .

내가 읽을 수있는 것은 RESTful 프레임 워크 이며 사용 및 구현이 매우 쉽습니다.

이제 두 프레임 워크의 주요 차이점과 이전 API를 사용하여 이전 WCF 서비스 응용 프로그램을 변환 해야하는지 여부를 파악하려고 합니다.

누군가가 각각의 차이점과 사용법을 이해하도록 도와 줄 수 있습니까?



답변

새로운 ASP.NET 웹 API 는 이전 WCF 웹 API 프로젝트 의 연속입니다 (일부 개념이 변경 되었지만 ).

WCF는 원래 SOAP 기반 서비스를 활성화하기 위해 만들어졌습니다. 더 간단한 RESTful 또는 RPCish 서비스 (jQuery와 같은 클라이언트 생각)의 경우 ASP.NET 웹 API를 선택하는 것이 좋습니다.


답변

우리에게는 WCF가 REST 및 SOAP 용 웹 API에 사용됩니다. Web API가 SOAP를 지원하기를 바랍니다. WCF의 고급 기능을 사용하지 않습니다. MSDN 과 비교 한 내용은 다음과 같습니다 .

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


답변

ASP.net 웹 API는 HTTP 및 REST 기반 GET, POST, PUT, DELETE에 관한 것으로 ASP.net MVC 스타일의 프로그래밍 및 JSON 리턴 가능을 잘 알고 있습니다. 웹 API는 모든 가벼운 프로세스와 순수한 HTTP 기반 구성 요소를위한 것입니다. 단순하거나 간단한 단일 웹 서비스를 위해 WCF를 진행하려면 모든 추가 수하물을 가져옵니다. Ajax 또는 동적 호출을위한 경량의 간단한 서비스를 위해 WebApi는 항상 필요를 해결합니다. 이것은 ASP.net MVC를 깔끔하게 보완하거나 병렬로 도와줍니다.

팟 캐스트를 확인하십시오 . Hanselminutes Podcast 264-이것은 아버지의 WCF가 아닙니다 . 자세한 내용은 Scott Hanselman의 Glenn Block이있는 WebAPI에 관한 모든 것 입니다.


답변

아래에 나열된 시나리오에서 WCF로 이동해야합니다.

  1. TCP, MSMQ 또는 MIME과 같은 프로토콜로 데이터를 보내야하는 경우
  2. 소비하는 클라이언트가 SOAP 메시지를 소비하는 방법을 알고 있다면

WEB API는 RESTful / HTTP 서비스 개발을위한 프레임 워크입니다.

브라우저, HTML5와 같은 SOAP를 이해하지 못하는 클라이언트가 너무 많기 때문에 WEB API가 좋은 선택입니다.

HTTP 서비스 헤더는 서비스 보안 방법, 정보 캐시 방법, 메시지 본문 유형 및 HTTP 본문은 XML뿐만 아니라 HTML과 같은 모든 유형의 컨텐츠를 SOAP 서비스로 지정할 수 있습니다.


답변

지금까지 두 가지를 모두 사용했기 때문에 WCF와 Web API의 많은 차이점을 발견했습니다. 두 기술 스택은 서로 다른 시나리오에 적합하므로 어떤 것이 더 낫다고 말할 수는 없으며 구성 및 시나리오에 따라 다릅니다.

Properties              ASP.Net Web API                         WCF
--------------------------------------------------------------------------------------------------
End point (mainly)      Http based                              SOAP based
Service Type            Front End                               Back-end
Support                 caching, compression, versioning        No
Framework               ASP.net                                 WCF
Orientation             Resource Oriented                       Service Oriented
Transports              http                                    http, tcp, MSMQ, Named pipe
Message pattern         Request reply                           request Reply, one way, duplex
Configuration overhead  Less                                    Much
Security                lesser than WCF (web standard security) Very high (WS-I standard)
Hosting                 IIS                                     IIS, Windows Service, Self hosting
Performance             Fast                                    A bit slower than Web API
In use from             .NET 4.0                                .NET 3.5

참고 : 데이터는 내 견해 일뿐 만 아니라 다른 공식 웹 사이트에서도 수집됩니다.


답변

WCF는 당신에게 많은 것을 제공 할 것입니다. 아무것도 비교할 수 없습니다. 인증, 권한 부여, 암호화, 큐잉, 제한, 안정적인 메시징, 로깅, 세션 등의 자체 구현을 수행하지 않으려는 경우. WCF는 [단순한] 웹 서비스가 아닙니다. WCF는 SOA를위한 개발 플랫폼입니다.


답변

왜 대답하고 있습니까?

이 두 기술의 차이점을 이해하는 데 많은 시간이 걸렸습니다. “이 답변을 찾기 위해 궁금한 시점에이 포인트가 있다면 필요한 기술을 선택하기로 결정했습니다.”라고 생각합니다.

정보 출처 :

Microsoft® Visual Studio® 2015 Unleashed

ISBN-13 : 978-0-672-33736-9 ISBN-10 : 0-672-33736-3

ASP.NET 웹 API 및 WCF가 필요한 이유 :

ASP.NET 웹 API와 WCF의 기술을 비교하기 전에 웹 서비스를 작성하는 데 실제로 REST (Representational State Transfer)와 SOAP / WSDL의 두 가지 스타일 / 표준이 있음을 이해해야합니다. SOAP / WSDL은 웹 서비스가 구축 된 원래 표준이었습니다. 그러나 사용하기가 어려웠으며 XML과 같은 부피가 큰 메시지 형식으로 인해 성능이 저하되었습니다. REST 기반 서비스는 빠르게 대안이되었습니다. HTTP의 기본 구성 (GET, POST, PUT, DELETE)을 활용하고 일반적으로 JSON과 같은 더 작은 메시지 형식을 사용하기 때문에 작성하기가 더 쉽습니다. 결과적으로 REST 기반 HTTP 서비스는 이제 웹을 엄격하게 대상으로하는 서비스 작성 표준이되었습니다.

ASP.NET 웹 API의 목적을 정의하자

ASP.NET Web API는 REST 기반 HTTP 웹 서비스 개발을위한 Microsoft의 기술입니다. (오래 전에는 SOAP / WSDL을 기반으로하는 Microsoft의 ASMX를 대체했습니다.) 웹 API를 사용하면 모든 브라우저와 기본 장치가 이해하는 HTTP 프로토콜을 기반으로 강력한 서비스를 쉽게 작성할 수 있습니다. 이를 통해 응용 프로그램을 지원하는 서비스를 만들고 다른 웹 응용 프로그램, 태블릿, 휴대 전화, PC 및 게임 콘솔에서 서비스를 호출 할 수 있습니다. 현재 웹 연결을 활용하기 위해 오늘날 작성된 대부분의 응용 프로그램은 어떤 방식 으로든 HTTP 서비스를 사용합니다.

이제 WCF의 목적을 정의 해 봅시다 :

인터넷을 통한 통신이 항상 가장 효율적인 방법은 아닙니다. 예를 들어, 클라이언트와 서비스가 모두 동일한 기술 (또는 동일한 시스템)에 존재하는 경우보다 효율적인 통신 수단 (예 : TCP / IP)을 협상 할 수 있습니다. 서비스 개발자는 피하려고했던 것과 동일한 선택을합니다. 그들은 이제 효율적인 내부 서비스를 만들고 인터넷을 통해 광범위한 액세스를 할 수 있도록 선택해야했습니다. 그리고 두 가지를 모두 지원해야하는 경우 여러 버전의 서비스를 만들거나 서비스에 액세스하기 위해 별도의 프록시를 만들어야 할 수도 있습니다. 이것이 Microsoft가 WCF로 해결 한 문제 입니다.

WCF를 사용하면 경계에 대한 걱정없이 서비스를 만들 수 있습니다. 그러면 호출 클라이언트에 따라 WCF가 가장 효율적인 방식으로 서비스를 실행하는 것에 대해 걱정하게 할 수 있습니다. 이 작업을 관리하기 위해 WCF는 끝점 개념을 사용합니다. 서비스에 여러 엔드 포인트가있을 수 있습니다 (디자인 타임 또는 배치 후 구성). 각 엔드 포인트는 서비스가 웹을 통해, 원격을 통해, MSMQ (Microsoft Message Queuing) 등을 통해 호출 클라이언트를 지원하는 방법을 나타냅니다. WCF를 사용하면 서비스 기능 작성에 집중할 수 있습니다. 발신 클라이언트와 가장 효율적으로 대화하는 방법에 대해 걱정합니다. 이러한 방식으로 단일 WCF 서비스는 여러 가지 다른 클라이언트 유형을 효율적으로 지원할 수 있습니다.

WCF의 예 :

예를 고려하십시오.

고객 데이터는 애플리케이션간에 공유됩니다. 각 응용 프로그램은 다른 플랫폼에서 작성 될 수 있으며 다른 위치에 존재할 수 있습니다. 공유 고객 데이터에 대한 공통 액세스를 제공하는 WCF 서비스로 고객 인터페이스를 추출 할 수 있습니다. 이를 통해 데이터를 중앙 집중화하고 복제를 줄이고 동기화를 제거하며 관리를 간소화합니다. 또한 WCF를 사용하여 호출 클라이언트에 적합한 방식으로 작동하도록 서비스 끝점을 구성 할 수 있습니다. 그림은 WCF 서비스에서 고객 데이터에 중앙 집중식으로 액세스 한 예를 보여줍니다.

이것이 WCF가 다른 클라이언트에게 서비스를 제공하는 방법입니다

결론:

i) 웹 API 선택시기 :

ASP.NET Web API를 사용하여 생성 된 것과 같은 REST 기반 HTTP 서비스가 웹 서비스 구축을위한 표준이되었다는 것을 부인할 수 없습니다. 이러한 서비스는 웹 개발자가 서비스를 구축 할 수있는 쉽고 간단한 접근 방식을 제공합니다. 웹 개발자는 HTTP GET 및 POST를 이해하므로 이러한 유형의 서비스에 잘 적응합니다. 따라서 HTTP를 엄격하게 대상으로하는 서비스 를 작성하는 경우 ASP.NET 웹 API가 논리적 선택입니다.

ii) WCF 선택시기 :

WCF 기술은 서로 다른 프로토콜 및 메시지 형식에 따라 여러 서비스 엔드 포인트를 지원해야 할 때 유용합니다. Microsoft BizTalk와 같은 제품은 WCF를 활용하여 웹과 다른 시스템 간 구성을 통해 사용할 수있는 강력한 서비스를 만듭니다. 그러나 로컬에 연결될 때 TCP / IP를 통해 통신하는 응용 프로그램을 작성해야합니다. 네트워크 외부에있을 때 HTTP를 통해 작동하고 WCF가 정답 입니다.

경고 받다:

웹 개발자는 종종 WCF를 개발하기가 더 어렵고 복잡하다고 생각합니다. 따라서 멀티 프로토콜 서비스가 필요하지 않다면 ASP.NET 웹 API를 사용하는 것이 좋습니다.