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

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

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



답변

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이란 무엇입니까?


답변

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

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

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


답변

이것은 매우 오래된 질문이지만 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 웹 서비스를 완전히 대체합니다. ASMX는 웹 서비스를 수행하는 오래된 방법이며 WCF는 웹 서비스를 수행하는 현재 방법입니다. 클라이언트 또는 서버에서 모든 새로운 SOAP 웹 서비스 개발은 WCF를 사용하여 수행해야합니다.


답변

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에 대한 제한이 없으므로 누구에게나 모든 사람에게 권장합니다. 행복한 코딩 !!!


답변