WCF와 ASMX 웹 서비스의 차이점은 무엇입니까?


375

WCF와 ASMX 웹 서비스가 완전히 혼동됩니다. 초기 단계에서 많은 웹 서비스를 사용했으며 이제 WCF라는 새로운 기능이 도입되었습니다. 웹 서비스로 작동하는 WCF를 계속 만들 수 있습니다. WCF에는 더 많은 것들이있을 것이라고 생각합니다.

WCF와 웹 서비스의 차이점은 무엇입니까? 각각 언제 사용해야합니까?


5
이것이 추천 질문 방법은 없습니다. ASMX 나 WCF는 제품이 아닙니다. 이들은 Microsoft 스택에서 두 가지 웹 서비스 반복입니다. 문제는 차이점이 무엇이며 새로운 것을 배우는 데 가치가 있습니까? 이것은 "Telerik 컨트롤 또는 Infragistics를 사용해야합니까?와 동일하지 않습니다.
John Saunders

답변:


391

Keith Elder는 여기서 ASMX와 WCF를 잘 비교 합니다 . 확인 해봐.

ASMX와 WCF의 또 다른 비교는 여기에서 찾을 수 있습니다 -나는 모든 점에 100 % 동의하지는 않지만 아이디어를 줄 수 있습니다.

WCF는 기본적으로 "ASMX on stereoids"입니다. ASMX가 할 수있는 모든 것이 될 수 있습니다 . .

ASMX는 :

  • 쉽고 간단하게 작성 및 구성
  • IIS에서만 사용 가능
  • HTTP에서만 호출 가능

WCF는 다음과 같습니다.

  • IIS, Windows 서비스, Winforms 응용 프로그램, 콘솔 응용 프로그램에서 호스팅
  • HTTP (REST 및 SOAP), TCP / IP, MSMQ 및 더 많은 프로토콜과 함께 사용

간단히 말해 WCF는 ASMX를 완전히 대체하기 위해 여기에 있습니다.

MSDN 에서 WCF 개발자 센터를 확인하십시오 .

업데이트 : 링크가 죽은 것 같습니다 -Windows Communication Foundation이란 무엇입니까?


15
Visual Studio 2010 .net 4.0을 사용하면 WCF는 ASMX처럼 쉽게 작성할 수 있으므로 더 이상 ASMX를 작성할 수있는 변명이 없습니다. WCF는 더 빠르고 유연하며 안전합니다. ASMX는 레거시이므로 여전히 기간을 작성해서는 안됩니다.
Tom Stickel

13
"대부분의 개발자는 ASMX에 IIS가 필요하다고 잘못 생각하지만 결국 유례없는 유스 케이스입니다. 그러나 ASMX에는 IIS에 대한 기술적 의존성이 전혀 없습니다." msdn.microsoft.com/en-us/magazine/cc163879.aspx
MrNick이 28:12

2
@MrNick : 그렇습니다. IIS는 없지만 여전히 HTTP 전용이며 ASMX 호스팅 코드와 WCF 서비스 호스팅 코드를 비교하십시오.
존 손더스

1
불행히도 keithelder.net/2008/10/17/wcf-vs-asmx-webservices 링크 가 손상되었습니다.
Robert

2
@codemonkeyliketab : 인터넷 시대 의 응답은 6 세 이상입니다! WCF 개발자 센터의 대체품을 찾으려고했습니다. 내 업데이트 참조
marc_s

37

ASMX 웹 서비스는 HTTP (.asmx의 기존 웹 서비스)에 의해서만 호출 될 수 있습니다. WCF 서비스 또는 WCF 구성 요소는 모든 프로토콜 (예 : http, tcp 등) 및 모든 전송 유형에 의해 호출 될 수 있습니다.

둘째, ASMX 웹 서비스는 융통성이 없습니다. 그러나 WCF 서비스는 유연합니다. 새로운 버전의 서비스를 만드는 경우 새로운 목적을 공개해야합니다. 따라서 서비스는 민첩하며 현재 비즈니스 추세를 살펴 보는 매우 실용적인 접근 방식입니다.

계약, 인터페이스, 운영 및 데이터 계약으로 WCF를 개발합니다. 개발자로서 우리는 비즈니스 로직 서비스에 더 집중하고 있으며 채널 스택에 대해 걱정할 필요가 없습니다. WCF는 모든 종류의 서비스를위한 통합 프로그래밍 API이므로 서비스를 생성하고 구성 정보를 사용하여 HTTP / TCP / MSMQ 등과 같은 통신 메커니즘을 설정합니다.


11
어쩌면 나일지도 모르지만 단락 2와 3은 마케팅 BS로 두드러집니다.
Neolisk

@Net Experts u는 "서비스의 새 버전을 만들면 새로운 목적을 공개해야한다"고 말했습니까?
Mou

@Mou, 그는 새로운 endpoint것 같아요. 같은<endpoint address="http://api.microsofttranslator.com/V1/soap.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_LanguageService1" contract="TranslatorService.LanguageService" name="BasicHttpBinding_LanguageService3" />
AlexMelw

25

이것은 매우 오래된 질문이지만 ASMX의 이점이 상당히 묘사되었다고 생각하지 않습니다. 매우 유연하지는 않지만 ASMX 웹 서비스는 사용 및 이해가 매우 간단합니다. WCF는 융통성이 있지만 일어 서서 구성하기가 더 복잡합니다.

ASMX 웹 서비스는 파일을 추가하자마자 일어 서서 웹 서비스 참조로 추가 할 수 있습니다. (프로젝트 빌드를 가정)

create webservice-> run webservice-> 의 간단한 개발 워크 플로의 add webservice reference경우 ASMX 웹 서비스에는 잘못 구성 할 수있는 부분이 거의없고 잘못 구성 할 수있는 부분이 거의 없습니다.

WCF가 ASMX를 대체한다고 주장하는 사람들에 대한 응답으로 WMX는 ASMX를 완전히 대체하기 위해 간소화 된 KISS 구성 모드를 추가해야한다고 대답합니다.

ASMX 웹 서비스에 대한 예제 web.config :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings />
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>

WCF는 asmx 웹 서비스를 사용하여 수행 할 수있는 작업에 더 많은 구성이 필요하다고 생각하지 않으며 WCF 서비스에 대한 클라이언트 측에 참조를 추가 할 수 있으며 WCF는 asmx보다 훨씬 강력합니다 .asmx는 무엇을 할 수 있습니까? 그것은 asmx처럼 간단합니다
Coder1409

9
@ Coder1409는 구성이 더 필요하기 때문에 확실히 더 많은 구성입니다. 바인딩, 검색 가능성 등 asmx에서는 필요하지 않습니다. 서비스 계약, 운영 계약, 데이터 계약, 데이터 멤버. asmx에서는 필요하지 않습니다. 물론 이런 것들이 wcf가 더 우수하고 강력하지만 왜 복잡성을 추가한다는 것을 부정하는 것은 정직하지 않습니다. 단점이 없다고 말하고 있습니다.
Andrew Hoffman

7
내가 wcf를 만든 첫 번째 (두 번째, 세 번째 ...) 시간은 필요한 구성을 파악하는 데 오랜 시간이 걸렸습니다. "왜 그렇게해야합니까?" 나는 계속 나 자신에게 물었다. "왜 그렇게 복잡한 것을 방해합니까?" asmx는 즉시 작동했습니다. 따라서 그것이 간단하다는 것은 사실이 아닙니다. 어느 날 나는 내 시각을 완전히 이해하고 바꿀 것입니다-그 날까지 GRRRR !!!
tomjm

1
@tomjm 다시 한 번, 최신 버전의 Visual Studio 및 .NET으로 다시 시도하십시오. 무엇보다도 구성 시스템이 기본 추가 설정으로 변경되었습니다. 특히, 기능이없는 간단한 웹 서비스 (http 전용)를 얻기 위해 URL을 지정하는 것 이상을 수행 할 필요는 없습니다.
존 손더스

1
@tomjm 잘 알고 있습니다. 솔직히 말해서 구성이 너무 많아서 wcf 구성 관리자 앱을 사용하는 것이 합리적이었습니다. 모든 것을 할 수 있습니다! (일부 기본 설정으로 즉시 사용할 수는 없지만 ) 요즘에는 WEB 서비스에 대해 더 간단하게 생각합니다. Wcf는 여전히 고급 서비스에는 적합하지만 아마도 대부분의 서비스 개발은 웹 서비스 개발 일 것이므로 웹 서비스 개발을위한 webapi2를 능가하기는 어렵습니다.
Andrew Hoffman

10

WCF는 ASMX 웹 서비스를 완전히 대체합니다. ASMX는 웹 서비스를 수행하는 오래된 방법이며 WCF는 웹 서비스를 수행하는 현재 방법입니다. 클라이언트 또는 서버에서 모든 새로운 SOAP 웹 서비스 개발은 WCF를 사용하여 수행해야합니다.


32
문제는 ASMX가 단순한 모델 (매우 유연하지 않음을 의미 함) 인 반면, 단순한 모델 (가장 일반적인 웹 서비스 요구에 대해 사용하기 쉽고 이해하기 쉽다는 것)이었습니다. WCF는 많은 복잡성을 추가합니다. MS는 ASMX를 WCF로 교체하려고하지만 MS가 가장 일반적인 시나리오를 기존의 [Webmethod] 방법처럼 간단하게 만들 때까지 약간의 저항이있는 것 같습니다.
mattmc3

6
WCF는 전혀 복잡하지 않습니다. 둘 다에 간단한 "hello world"웹 서비스를 작성하고 각각에 얼마나 많은 코드를 작성하는지 확인하십시오. 답은 WCF에서는 그다지 많지 않고 약간 더 많았습니다. 그리고, BTW, ASMX 이미 WCF로 대체되었습니다. 거래 완료
John Saunders

58
"WCF는 전혀 복잡하지 않다"Ha. 내 길에 과장된 web.config를 알려주십시오.
mattmc3

26
(다운 보 터는 아니지만 그 이유를 알려줄 것입니다)- "이것은 새롭고 오래되었습니다"는 사람이 신경 써야 할 중요한 차이가 아니기 때문입니다. 우리는 몇 살인 지에 대해서만 도구를 선택하지 않습니다. 망치는 실제로 아주 오래되었지만 여전히 손톱을 운전하는 데 가장 적합한 도구입니다. 그래서, 당신은 올바른 대답을 했어요. 예전의 "비행기에 있습니다"농담처럼 그렇게 도움이되지는 않습니다.
Jasmine

5
다운 투표-참조가 없습니다. 이 정보를 어떻게 알 수 있습니까? 의견인가요? Microsoft에서 일하십니까? 참조를 추가하면 투표하겠습니다.
tomjm

7

WCF를 통한 asmx 웹 서비스의 단순성에 대해 많은 대화가 진행되고 있습니다. 여기서 몇 가지 요점을 명확히하겠습니다.

  • 초보자 웹 서비스 개발자는 asmx 웹 서비스에서 쉽게 시작할 수 있습니다. Visual Studio는 모든 작업을 수행하고 Hello World 프로젝트를 쉽게 만듭니다.
  • 그러나 WCF를 배울 수 있다면 (물론 많은 시간이 걸리지 않을 것입니다) WCF도 매우 간단하다는 것을 알 수 있으며 쉽게 나아갈 수 있습니다.
  • WCF의 이러한 복잡성은 실제로 그와 함께 제공되는 아름다운 기능에 기인한다는 것을 기억하는 것이 중요합니다. 구성 파일에 언급 된 주소 지정, 바인딩, 계약 및 엔드 포인트, 서비스 및 클라이언트가 있습니다. 아름다움은 비즈니스 로직이 안전하게 분리되어 유지된다는 것입니다. 내일 바인딩을 basicHttpBinding 에서 netTcpBinding 으로 변경해야 할 경우 구성 파일에서 바인딩을 쉽게 만들어 사용할 수 있습니다. 따라서 클라이언트, 통신 채널, 바인딩 등과 관련된 모든 변경 사항은 비즈니스 로직을 안전하고 그대로 유지하는 구성에서 수행해야합니다.
  • WCF "웹 서비스"는 WCF를 통해 활성화 된 훨씬 광범위한 원격 통신의 일부입니다. WCF는 처음부터 Microsoft가 제공하는 다양한 분산 프로그래밍 인프라를 모두 요약하도록 설계 되었기 때문에 기존 ASMX보다 WCF에서 훨씬 더 높은 수준의 유연성과 이식성을 얻을 수 있습니다. WCF의 엔드 포인트는 TCP / 이진보다 SOAP / XML을 통해 쉽게 통신 할 수 있으며이 매체를 변경하는 것은 단순히 구성 파일 모드입니다. 이론적으로 이것은 비즈니스 요구, 목표 등을 이식하거나 변경할 때 필요한 새로운 코드의 양을 줄입니다.
  • 웹 서비스는 HTTP를 통해서만 액세스 할 수 있으며 WCF가 다른 유형의 응용 프로그램에서 호스팅 될 수 있기 때문에 WCF가 유연한 상태 비 저장 환경에서 작동합니다. 콘솔, Windows 서비스, IIS 및 WAS에서 WCF 서비스를 호스팅 할 수 있으며 Visual Studio에서 새 프로젝트를 만드는 다른 방법입니다.
  • ASMX는 WCF보다 오래된 것이므로 ASMX가 할 수있는 모든 것은 WCF (및 그 이상)가 될 수 있습니다. 기본적으로 WCF는 Microsoft의 세계에서 두 개의 앱이 통신하도록하는 여러 가지 방법을 논리적으로 그룹화하려는 것으로 볼 수 있습니다. ASMX는 이러한 여러 가지 방법 중 하나 였으므로 이제 WCF 기능 그룹으로 그룹화되었습니다.
  • WCF 서비스를 만드는 동안 편리하게 사용할 수 있도록 Visual Studio for NET 4.0 또는 4.5를 항상 사용하려고합니다.
  • 가장 큰 차이점은 웹 서비스가 XmlSerializer를 사용한다는 것입니다. 그러나 WCF는 XmlSerializer와 비교하여 성능이 더 우수한 DataContractSerializer를 사용합니다. 그렇기 때문에 WCF가 asmx, .NET remoting 등과 같은 .NET의 다른 통신 기술에 비해 성능이 뛰어납니다.

내가 WCF보다 asmx 서비스를 더 좋아했던 사람들 중 하나라는 것을 잊지는 않았지만 그 당시에는 WCF 서비스와 그 기능을 잘 알지 못했습니다. WCF 구성이 무서웠습니다. 그러나 나는 감히 WCF 서비스를 거의 작성하지 않았으며 WCF에 대해 더 많이 알게되면 WCF에 대한 제한이 없으므로 누구에게나 모든 사람에게 권장합니다. 행복한 코딩 !!!

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