WSDL 파일을 사용하여 WCF 서비스를 만드는 방법 (호출하지 않음)


100

이전 WSDL 파일이 있고이 WSDL 파일을 기반으로 서버를 만들고 싶습니다.

WSDL은 ASMX에서 생성됩니다 (예상하지만 확실하지 않습니다).

이것을 어떻게 달성 할 수 있습니까?


OP 가 WSDL을 기반으로 클라이언트 를 만들어야한다고 생각한 원래 질문 입니다.

답변:


112

svcutil을 사용하면 WSDL에서 인터페이스와 클래스 (데이터 계약)를 만들 수 있습니다.

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)

그러면 필요한 모든 항목이 포함 된 C #의 "your.cs"(또는 VB.NET의 "your.vb")라는 파일이 생성됩니다.

이제 서비스 인터페이스 (IServiceInterface) 또는 여러 서비스 인터페이스를 구현할 "MyService"클래스를 만들어야합니다. 이것이 바로 서버 인스턴스입니다.

이제 수업 자체는 아직 도움이되지 않습니다. 서비스를 어딘가에 호스팅해야합니다. 서비스를 호스팅하는 고유 한 ServiceHost 인스턴스를 만들고 끝점을 구성하는 등의 작업을 수행해야합니다. 또는 IIS 내에서 서비스를 호스팅 할 수 있습니다.


svcutil로 똑같이 시도했지만 실제로는 실패로 성공하지 못했습니다. 내 문제에 대한 몇 가지 제안 사항이 있으신가요
Juri

15
"svcutil your.wsdl your.xsd"는 내 작업에 필요한 것입니다! 감사!
Tim Lewis

3
svcutil이 원하는 형식으로 wsdl 및 xsd를 다운로드하는 방법에 대한 정보는이 SO 답변을 확인하십시오. stackoverflow.com/questions/286657/…
Brett Widmeier

@marc_s 내 WSDL 파일과 함께 이것을 사용하면 내 서버로 들어오는 요청이 수락되지 않는 매우 이상한 방식으로 일부 요소의 이름을 바꾸는 것 같습니다. 이것은 정상입니까?
Arj

@Arjun : 아니요-관련된 모든 사실을 정리하고 Stackoverflow에 질문 해야하는 것 같습니다 ! :-)
marc_s

41

무엇을 검색해야하는지 안다면 좋은 리소스가 있습니다. "Contract First"및 WCF를 사용해보십시오. 또는 "WSDL First"및 WCF.

다음은 선택 사항입니다.


3
WSDL-First 문서 의 기본 개요 를 따르는 모든 사람에게 :에 대해 이야기하는 주석을 기록해 두십시오 ReplyAction="*". 그것을 제거해야 할 것 같습니다. 추론을 제공하는 설명의 흔적이 있지만 읽지 않았습니다.
dan-gph

30

/sc스위치 와 함께 svcutil.exe를 사용 하여 WCF 계약을 생성합니다. 그러면 프로젝트에 추가 할 수있는 코드 파일이 생성됩니다. 여기에는 서비스를 만드는 데 필요한 모든 인터페이스와 데이터 유형이 포함됩니다. /o스위치를 사용하여 출력 위치를 변경 하거나 svcutil.exe를 실행 한 폴더에서 파일을 찾을 수 있습니다. 기본 언어는 C #이지만 .NET을 사용하여 변경할 수 있어야한다고 생각 /l:vb합니다.

svcutil /sc "WSDL file path"

WSDL에 지원되는 XSD 파일이있는 경우 WSDL 뒤에 인수로 전달합니다.

svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"

그런 다음 서비스 인 새 클래스를 만들고 방금 만든 계약 인터페이스를 구현합니다.



7

svcutil.exe를 사용하여 클라이언트 코드를 생성 할 수 있습니다. 여기에는 서비스 계약의 정의와 필요한 모든 데이터 계약 및 오류 계약이 포함됩니다.

그런 다음 클라이언트 코드 (서비스 계약을 구현하는 클래스)를 삭제하면됩니다. 그런 다음 서비스에서 직접 구현해야합니다.


4

Visual Studio의 "서비스 참조 추가"도구를 사용하여 주소를 다음과 같이 삽입 할 수 있습니다.

file : ///path/to/wsdl/file.wsdl

그리고 제대로로드됩니다.

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