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가 아닙니다 . 자세한 내용 은 Glen Han Block이있는 WebAPI에 관한 모든 내용 을 참조하십시오.
아래 나열된 시나리오에서 WCF로 이동해야합니다.
- TCP, MSMQ 또는 MIME과 같은 프로토콜로 데이터를 보내야하는 경우
- 소비하는 클라이언트가 SOAP 메시지를 소비하는 방법을 알고 있다면
WEB API는 RESTful / HTTP 서비스 개발을위한 프레임 워크입니다.
브라우저, HTML5와 같은 SOAP를 이해하지 못하는 클라이언트가 너무 많기 때문에 WEB API가 좋은 선택입니다.
HTTP 서비스 헤더는 서비스 보안 방법, 정보 캐시 방법, 메시지 본문 유형 및 HTTP 본문이 XML뿐만 아니라 HTML과 같은 모든 유형의 컨텐츠를 SOAP 서비스로 지정할 수 있습니다.
지금까지 두 가지를 모두 사용했기 때문에 WCF와 Web API의 많은 차이점을 발견했습니다. 두 기술 모두 서로 다른 시나리오에 적합합니다. 따라서 어느 것이 더 낫다고 말할 수는 없으며 구성 및 시나리오에 따라 다릅니다.
참고 : 데이터는 내 견해 일뿐 만 아니라 다른 공식 웹 사이트에서도 수집됩니다.
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의 기술을 비교하기 전에 웹 서비스를 작성하는 데 실제로 두 가지 스타일 / 표준이 있음을 이해하는 것이 중요합니다. 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 웹 API를 사용하여 생성 된 것과 같은 REST 기반 HTTP 서비스가 웹 서비스 구축의 표준이되었다는 것을 부정 할 수 없습니다. 이러한 서비스는 웹 개발자가 서비스를 구축 할 수있는 쉽고 간단한 접근 방식을 제공합니다. 웹 개발자는 HTTP GET 및 POST를 이해하므로 이러한 유형의 서비스에 잘 적응합니다. 따라서 HTTP를 엄격하게 대상으로하는 서비스 를 작성하는 경우 ASP.NET 웹 API가 논리적 선택입니다.
ii) WCF 선택시기 :
The WCF technology is useful when you need to support multiple service endpoints based on different protocols and message formats. Products like Microsoft BizTalk leverage WCF for creating robust services that can be used over the Web as well via different machine-to-machine configurations.If, however, you do need to write an application that communicates over TCP/IP when connected to the local network and works over HTTP when outside the network, WCF is your answer.
Be Warned:
Web developers often view WCF as more difficult and complex to develop against. Therefore, if you do not foresee the need for multiprotocol services, you would likely stick with ASP.NET Web API.
There is a comparison on MSDN about this
For me, the choice was about Who the clients are, and where are they located?
Within the company Network and .NET based clients : Use WCF with TCP binding (Fast communication than HTTP)
Outside the company Network, and use diverse technologies like PHP, Python etc: Use Web API with REST
Business speaking, WebApi lacks of a WSDL, so the developers should document all manually. And if, for example, the WebApi operation returns a list of objects then, the client should creates the objects manually, i.e. WebAPI is really prone to errors of definitions.
The pro of Webapi is its more lightweight than WCF.
Regarding the statement "WebApi lacks of WSDL" there are several ways to generate Rest client. One popular approach is Swagger UI / (Swashbukkle Nuget). This gives a rich interface to understand the REST end point's input and output schema and online tool to test the end points.
JSON LD (Json Linked Documents) is another emerging standard which will further improve the JSON based REST developer experience by exposing the JSON schema with better semantics.
With wcf we can configure and expose the same service support for multiple endpoints like tcp, http.if you want your service to be only http based then it will be better to go with web API. Web API has very less configuration when compared to wcf and is bit faster than wcf. Wcf also supports restful services. If you have limitation of .Net framework 3.5 then your option is wcf.
참고 URL : https://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api
'development' 카테고리의 다른 글
부호없는 int와 size_t (0) | 2020.02.14 |
---|---|
파이썬 제너레이터와 이터레이터의 차이점 (0) | 2020.02.14 |
현재 지점에 대한 추적 정보가 없습니다 (0) | 2020.02.14 |
0으로 끝나는 바이트 배열을 문자열로 변환하는 방법은 무엇입니까? (0) | 2020.02.14 |
요소에 JavaScript의 클래스가 포함되어 있는지 확인 하시겠습니까? (0) | 2020.02.14 |