2010-12-21 9 views
5

다른 공급 업체의 제품을 기존 프로세스와 통합하려고합니다.WCF 서비스를 마치 ASP.NET 웹 서비스처럼 사용할 수 있습니까?

이 제품은 ASP.NET 웹 서비스를 통해 우리 시스템과 인터페이스합니다. 마찬가지로, 벤더가 지정한 특정 메서드 이름과 매개 변수가있는 ASP.NET 웹 서비스를 작성해야합니다.

충분히 간단하지만 우리는 WCF에 가능한 한 많은 것을 마이그레이션하려고합니다. 아직 WCF를 많이 사용하지는 않았지만 ASP.NET 웹 서비스 (및 다른 것들)를 대신 할 수 있습니다.

어떻게 공급 업체의 제품을 수정할 수 없는지 알기 때문에 WCF를 사용하여이 새 웹 서비스를 작성할 수있는 유일한 방법은 마치 ASP.NET 웹 서비스 인 것처럼 WCF 서비스를 사용할 수있는 경우입니다 (즉, 공급 업체의 제품은 ASP.NET 웹 서비스를 사용하고 있습니다.)

이러한 방식으로 WCF 서비스를 사용할 수 있습니까?

답변

5

예, 웹 서비스는 웹 서비스입니다. 일반적으로 WCF는 ASP.NET보다 유연하고 강력한 기능을 제공하지만 WCF 서비스의 안팎으로 온 - 더 - 와이어 (on-the-wire) 메시지를 받아서 ASMX 서비스의 메시지와 똑같이 나타낼 수 있습니다. 그러나 WCF는 과 달라야합니다 (기본값 :).

마이그레이션은 거의 기계적이어야합니다. SVC는 파일이 포함와 함께 ...

<%@ WebService 
    Language="C#" 
    CodeBehind="~/App_Code/CommunicationService.cs" 
    Class="CommunicationService" %> 

:

<%@ ServiceHost 
    Language="C#" 
    CodeBehind="~/App_Code/CommunicationService.cs" 
    Service="CommunicationService" %> 

을 ... 그리고 당신은 거의 완료이 포함 된이 .asmx 파일을 대체하십시오.

그러나 WCF 웹 서비스의 기본 설정은 ASP.NET 웹 서비스의 기본 설정과 다릅니다. 특히 들어오고 나가는 메시지의 XML 네임 스페이스가 다를 수 있습니다. 모든 사람이 자신의 서비스와 메시지에 대해 고유 한 XML 네임 스페이스를 지정하지는 않지만 그렇게하는 사람에게는 마이그레이션이 문제가됩니다. 행동의 차이 (WCF-vs-ASPNET)로 인해 ASMX 서비스를 성공적으로 호출 할 수있는 응용 프로그램이 "변환 된"WCF 서비스와 함께 작동하지 않게됩니다.

This article이 문제를 자세히 설명하고 좋은 해결 방법을 설명합니다. 사용자 지정 ServiceHost를 사용합니다.

위 문서의 서비스 호스트 코드는 요청 스키마 만 수정하는 것으로 불완전합니다. 응답 스키마에 대해 비슷한 작업을 수행해야 할 수도 있습니다.

행운을 비네.

0

다른 답변과 마이그레이션 문제를 지적하면서도 이전 웹 서비스가 현재와 같이 작동하도록 계속 열 수 있지만 이러한 웹 서비스 (기존)를 WCF 호스트 서비스로 지정하십시오. 따라서 새롭고 오래된 Webservice는 완벽하게 작동합니다.

관련 문제