답변:
이 답변은 더 이상 존재하지 않는 기사를 기반으로합니다.
기사 요약 :
"기본적으로 WCF는 다양한 통신 메커니즘을 사용하여 통신 할 수있는 응용 프로그램을 구축 할 수있는 서비스 계층입니다.이를 통해 피어 투 피어, 명명 된 파이프, 웹 서비스 등을 사용하여 통신 할 수 있습니다.
WCF는 상호 운용 가능한 응용 프로그램을 빌드하기위한 프레임 워크이므로 비교할 수 없습니다. 원하는 경우이를 SOA Enabler로 생각할 수 있습니다. 이것은 무엇을 의미 하는가?
WCF는 ABC로 알려진 것을 따릅니다. 여기서 A는 통신하려는 서비스의 주소, B는 바인딩, C는 계약을 나타냅니다. 코드를 변경하지 않고도 바인딩을 변경할 수 있기 때문에 중요합니다. 계약은 구현에서 계약을 분리하기 때문에 훨씬 더 강력합니다. 이는 계약이 인터페이스에 정의되어 있고 동일한 계약 아이디어를 사용하여 소비자가 구속하는 구체적인 구현이 있음을 의미합니다. 데이터 모델이 추상화되었습니다. "
... 나중 ...
"웹 서비스가 아닌 다른 통신 기술 (예 : Peer to Peer, Named Pipes)과 통신해야 할 때 WCF를 사용해야합니다."
WCF는 Microsoft의 모든 이전 웹 서비스 기술을 대체합니다. 또한 전통적으로 "웹 서비스"로 간주되는 것보다 훨씬 많은 일을합니다.
WCF "웹 서비스"는 WCF를 통해 사용할 수있는 훨씬 더 광범위한 원격 통신 스펙트럼의 일부입니다. WCF는 Microsoft에서 제공하는 다양한 분산 프로그래밍 인프라를 모두 요약하도록 처음부터 설계 되었기 때문에 기존 ASMX를 사용하는 것보다 WCF에서 작업을 수행하는 데 훨씬 더 높은 수준의 유연성과 이식성을 얻을 수 있습니다. WCF의 끝점은 TCP / 바이너리를 통해 가능한 것처럼 SOAP / XML을 통해 쉽게 통신 할 수 있으며이 매체를 변경하는 것은 단순히 구성 파일 모드입니다. 이론적으로 이것은 비즈니스 요구, 대상 등을 이식하거나 변경할 때 필요한 새 코드의 양을 줄입니다.
ASMX는 WCF보다 오래되었으며 ASMX가 할 수있는 모든 작업은 WCF (및 그 이상)에서 가능합니다. 기본적으로 WCF는 Microsoft의 세계에서 두 개의 앱이 통신하도록하는 모든 다른 방법을 논리적으로 그룹화하려는 것으로 볼 수 있습니다. ASMX는 이러한 여러 방법 중 하나 일 뿐이므로 이제 WCF 기능 우산 아래 그룹화됩니다.
웹 서비스는 HTTP를 통해서만 액세스 할 수 있으며 WCF는 다양한 유형의 응용 프로그램에서 호스팅 될 수 있기 때문에 WCF가 유연한 상태 비 저장 환경에서 작동합니다. WCF 서비스 호스팅을위한 일반적인 시나리오는 IIS, WAS, 자체 호스팅, 관리되는 Windows 서비스입니다.
가장 큰 차이점은 웹 서비스 사용
XmlSerializer
. 그러나 WCFDataContractSerializer
는XmlSerializer
.
웹 서비스 는 SOAP를 기반으로하며 XML 형식으로 데이터를 반환합니다. HTTP 프로토콜 만 지원합니다. 오픈 소스는 아니지만 xml을 이해하는 모든 클라이언트에서 사용할 수 있습니다. IIS에서만 호스팅 할 수 있습니다.
WCF 는 SOAP를 기반으로하며 XML 형식으로 데이터를 반환합니다. 웹 서비스 (ASMX)의 진화이며 TCP, HTTP, HTTPS, Named Pipes, MSMQ와 같은 다양한 프로토콜을 지원합니다. WCF의 주요 문제는 지루하고 광범위한 구성입니다. 오픈 소스는 아니지만 xml을 이해하는 모든 클라이언트에서 사용할 수 있습니다. 응용 프로그램이나 IIS에서 또는 창 서비스를 사용하여 호스팅 할 수 있습니다.
웹 서비스와 WCF의 차이점은 무엇입니까?
웹 서비스는 한 응용 프로그램에서 다른 응용 프로그램으로 데이터를 전송하는 동안 HTTP 프로토콜 만 사용합니다.
그러나 WCF는 ASP.NET 웹 서비스보다 메시지 전송에 더 많은 프로토콜을 지원합니다. WCF는 HTTP, TCP (Transmission Control Protocol), 명명 된 파이프 및 MSMQ (Microsoft Message Queuing)를 사용한 메시지 전송을 지원합니다.
웹 서비스에서 서비스를 개발하기 위해 다음 코드를 작성합니다.
[WebService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string Test(string strMsg)
{
return strMsg;
}
}
WCF에서 서비스를 개발하기 위해 다음 코드를 작성합니다.
[ServiceContract]
public interface ITest
{
[OperationContract]
string ShowMessage(string strMsg);
}
public class Service : ITest
{
public string ShowMessage(string strMsg)
{
return strMsg;
}
}
웹 서비스는 구조적으로 더 강력하지 않습니다. 그러나 WCF는 구조적으로 더 강력하며 모범 사례를 장려합니다.
웹 서비스는 XmlSerializer를 사용하지만 WCF는 DataContractSerializer를 사용합니다. XmlSerializer에 비해 성능이 더 나은 것은 무엇입니까?
내부 (방화벽 뒤) 서비스 간 호출의 경우 SOAP보다 훨씬 빠른 net : tcp 바인딩을 사용합니다.
WCF는 ASP.NET 웹 서비스보다 25 % ~ 50 % 빠르며 .NET Remoting보다 약 25 % 빠릅니다.
언제 다른 하나를 선택합니까?
WCF는 다른 플랫폼에서 개발되고 다른 기술을 사용하는 다른 응용 프로그램 간의 통신에 사용됩니다.
예를 들어 .net 플랫폼에서 다른 OS (예 : Unix 또는 Linux)에서 실행중인 다른 애플리케이션으로 데이터를 전송해야하고 다른 전송 프로토콜 (예 : WAS 또는 TCP)을 사용하는 경우에만 데이터를 전송할 수 있습니다. WCF를 사용합니다.
여기에는 플랫폼, 애플리케이션의 전송 프로토콜에 제한이 없으며 한 애플리케이션간에 데이터를 다른 애플리케이션으로 전송합니다.
웹 서비스에 비해 보안이 매우 높습니다.
주요 차이점은 시간 초과입니다. WCF 서비스는 응답이 없을 때 시간이 초과되었지만 웹 서비스에는이 속성이 없습니다.