왜 대답하고 있습니까?
이 두 기술의 차이점을 이해하는 데 많은 시간이 걸렸습니다. "이 답변을 찾기 위해 궁금한 시점에이 포인트가 있다면 필요한 기술을 선택하기로 결정했습니다."라고 생각합니다.
정보 출처 :
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 서비스에서 고객 데이터에 중앙 집중식으로 액세스 한 예를 보여줍니다.
결론:
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를 사용하는 것이 좋습니다.