WSDL 파일 기반의 웹 서비스 끝점

업데이트: 2007년 11월

계약 구동 방식을 사용하여 서비스 동작을 정의할 수 있습니다. 이 작업을 수행하려면 WSDL(웹 서비스 기술 언어) 파일에서 웹 서비스 공급자 끝점을 만듭니다. 또한 기존 웹 서비스 공급자 끝점이 WSDL 파일을 따르도록 설정할 수도 있습니다.

참고:

이 작업은 .disco 파일을 사용하여 수행할 수 있습니다. 이 릴리스에서는 단일 WSDL 바인딩이 포함된 WSDL 파일과 단일 웹 서비스를 참조하는 .disco 파일만을 지원합니다. 자세한 내용은 응용 프로그램 간의 통신을 참조하십시오.

자세한 내용은 다음 단원을 참조하십시오.

  • WSDL 파일에서 웹 서비스 끝점 만들기

  • 웹 서비스 끝점이 WSDL 파일을 따르도록 설정

  • WSDL 파일 기반의 웹 서비스 끝점

  • 작업 시그니처에서 참조되는 사용자 지정 형식

계약 구동 서비스 디자인에 대한 자세한 내용은 https://go.microsoft.com/fwlink/?LinkId=49584의 MSDN 온라인에서 Contract First Web Services Interoperability 페이지를 참조하십시오.

WSDL 파일에서 웹 서비스 끝점 만들기

ASP.NET 응용 프로그램 및 시스템에 WSDL 기반 끝점을 만들 수 있습니다. 이 끝점은 응용 프로그램 또는 시스템에 나타나며 WSDL 파일에서 참조하는 작업 시그니처로 채워집니다. 관련 응용 프로그램이 이미 구현되어 있는 경우에는 웹 서비스 클래스 파일에도 이러한 작업 시그니처가 나타납니다. 또한 이러한 시그니처가 사용자 지정 형식을 참조하는 경우에는 응용 프로그램 프로젝트에 추가 클래스 파일이 나타날 수도 있습니다. 자세한 내용은 작업 시그니처에서 참조되는 사용자 지정 형식을 참조하십시오.

참고:

응용 프로그램만 구현할 수 있고 시스템은 구현할 수 없습니다.

WSDL 파일에서 웹 서비스 공급자 끝점을 만들면 /server 옵션과 함께 Wsdl.exe 명령줄 유틸리티를 사용하는 것과 그 결과가 같습니다. 자세한 내용은 다음 항목을 참조하십시오.

웹 서비스 끝점이 WSDL 파일을 따르도록 설정

기존 웹 서비스 공급자 끝점이 WSDL 파일을 따르도록 설정할 수 있습니다. 이 작업을 수행하면 기존 작업 시그니처가 WSDL 파일을 따르도록 설정하여 해당 시그니처를 추가하거나 변경할 수 있습니다. 또한 이 작업은 관련 응용 프로그램이 이미 구현되어 있는 경우 코드의 작업 시그니처와 형식 이름에도 영향을 줄 수 있습니다. 그러나 데이터 집합 내의 중첩 형식에 대해서는 WSDL 파일을 따르도록 설정하지 않습니다.

참고:

시스템 멤버의 끝점이 WSDL 파일을 따르도록 설정하면 실제로 기본 끝점 정의가 WSDL 파일을 따르도록 설정됩니다. 이렇게 하면 다른 시스템에서 해당 정의의 사용을 수정할 수 있습니다.

메서드 본문 코드는 변경되지 않지만 작업 시그니처와 형식 이름이 변경되면 메서드 본문 코드가 더 이상 컴파일되지 않을 수 있습니다. 따라서 코드를 검토하여 컴파일러 오류를 수정해야 할 수 있는 변경 내용을 식별해야 합니다. 자세한 내용은 웹 서비스 끝점이 WSDL 파일을 따르도록 설정한 후의 코드 변경을 참조하십시오.

WSDL 파일 기반의 웹 서비스 끝점

WSDL 파일은 웹 서비스를 제공 및 소비하기 위한 요구 사항을 지정하며, 공급자와 소비자 간의 계약 역할을 합니다. 동일한 버전의 WSDL 파일을 기반으로 한 웹 서비스 끝점을 사용하면 이러한 끝점을 대체할 수 있습니다. 자세한 내용은 웹 서비스 끝점 대체를 참조하십시오.

WSDL 파일의 WSDL 바인딩 정의는 웹 서비스를 통해 제공되는 작업을 설명합니다. 웹 서비스 공급자 끝점은 이 WSDL 바인딩을 나타냅니다. 관련 ASP.NET 응용 프로그램을 통해 WSDL 파일을 생성할 수 있는 경우 Visual Studio에서는 해당 응용 프로그램(구현된 경우)의 각 웹 서비스에 대해 새 WSDL 파일을 생성합니다. 또한 Visual Studio에서는 이 WSDL 파일을 사용하여 관련 웹 서비스 소비자 응용 프로그램(구현된 경우)에 대해 웹 참조를 생성합니다. 자세한 내용은 방법: ASP.NET 웹 서비스에 대한 WSDL 파일 생성 제어를 참조하십시오.

웹 서비스의 WSDL 파일이 게시되고 나면 웹 서비스 정의에 대한 변경 내용은 각각 새로운 WSDL 바인딩으로 간주됩니다.

팁:

웹 서비스 정의를 변경할 때는 WSDL 바인딩 이름이나 WSDL 바인딩 네임스페이스 또는 둘 모두를 변경합니다. WSDL 바인딩 이름 또는 네임스페이스를 변경하지 않고 웹 서비스 정의를 변경하면 웹 서비스가 연결되는 응용 프로그램이나 이전에 연결된 응용 프로그램과 호환되지 않는다는 사실이 숨겨질 수 있습니다. WSDL 서비스 이름과 WSDL 바인딩 이름의 기본값은 "WebServiceN"이며 여기서 "N"은 서수를 나타냅니다. 그러나 응용 프로그램이 구현된 후 웹 서비스 클래스 파일에서 WSDL 바인딩 이름을 삭제하면 기본값이 "WebServiceNSoap"로 변경됩니다. WSDL 서비스 네임스페이스와 WSDL 바인딩 네임스페이스의 기본값은 "http://tempuri.org"입니다. WSDL 서비스 설명과 WSDL 바인딩 위치 속성의 기본값은 다르며 WSDL 바인딩 이름의 기본값은 "WebServiceN"입니다.

구현되지 않은 웹 서비스 공급자 끝점의 WSDL 바인딩 이름이나 바인딩 네임스페이스를 변경하는 경우, 연결되었지만 구현되지 않은 소비자 끝점의 해당 속성은 자동으로 또는 다시 연결될 때 업데이트됩니다. 그러나 구현된 웹 서비스 공급자 끝점의 이러한 속성을 변경하면 연결되고 구현된 모든 웹 서비스 공급자 끝점이 즉시 업데이트되지 않을 수 있으므로 이러한 소비자 끝점의 해당 속성을 수동으로 업데이트할 수 있습니다.

작업 시그니처에서 참조되는 사용자 지정 형식

웹 서비스 끝점의 작업 시그니처는 WSDL 파일이나 관련된 XML 스키마 파일에서 참조되는 복합 XML 형식에 대해 XML serialization을 처리하는 CLR 클래스를 참조할 수 있습니다. 관련 응용 프로그램이 아직 구현되지 않은 경우 Visual Studio에서는 응용 프로그램 구현 시 이러한 클래스에 대한 코드 파일을 생성합니다. 또한 이러한 파일 외에 해당 웹 서비스 및 응용 프로그램 프로젝트 파일도 생성합니다. 응용 프로그램이 이미 구현된 경우에는 이러한 클래스에 대한 코드 파일을 기존 프로젝트에 추가합니다. 자세한 내용은 응용 프로그램 다이어그램의 ASP.NET 응용 프로그램 개요를 참조하십시오.

참고:

WSDL 기반 웹 서비스 끝점을 다른 응용 프로그램에 복사하는 경우 Visual Studio에서는 작업 시그니처만 복사합니다. 대상 응용 프로그램이 이미 구현된 경우 추가 CLR 클래스의 코드 파일은 복사되지 않습니다. 하지만 대상 응용 프로그램이 아직 구현되지 않은 경우에는 응용 프로그램 구현 시 이러한 클래스에 대한 코드 파일이 생성됩니다. 이러한 상황이 발생하지 않도록 하려면 복사할 끝점에 사용되는 것과 동일한 WSDL 또는 .disco 파일로 끝점을 만듭니다.

일부 XML 스키마의 경우 XML 형식이 올바르게 지정되었는지 확인하려면 웹 서비스 클래스와 데이터 serialization 클래스에 추가 serialization 특성이 필요합니다. 그러나 WSDL 기반 파일에서 만든 웹 서비스 공급자 끝점에서는 이러한 serialization 특성 집합의 일부만 지원합니다. 일부 경우에는 웹 서비스 끝점에 대해 생성되는 결과 WSDL 파일과 결과 XML 메시지가 웹 서비스 공급자 끝점을 만드는 데 사용된 원본 WSDL 파일과 일치하지 않을 수 있습니다.

팁:

이러한 문제가 발생하면 WSDL 파일에서 웹 서비스 공급자 끝점을 만드는 대신 Wsdl.exe 유틸리티를 사용하여 웹 서비스 클래스 및 데이터 serialization 클래스를 생성합니다. 하지만 이후에 생성된 코드를 프로젝트에 수동으로 추가하고 필요한 .asmx 파일을 만들어야 합니다. 그러면 올바른 웹 서비스 공급자 끝점이 나타나며, 이를 통해 디자이너를 사용하여 끝점을 편집할 수 있습니다.

다음 목록은 이 serialization 특성 지원에 대한 자세한 정보입니다.

  • SerializableAttribute, SoapTypeAttribute, XmlIncludeAttribute, XmlRootAttribute, XmlTypeAttribute 등의 XML serialization 특성은 복합 XML 형식에 대해 생성된 클래스에 추가됩니다.

  • XmlAnyAttribute, XmlArrayAttribute, XmlArrayItemAttribute, XmlAttributeAttribute, XmlChoiceIdentifierAttribute, XmlElementAttribute, XmlEnumAttribute, XmlIgnoreAttribute, XmlNamespaceDeclarationsAttribute, XmlTextAttribute 등의 XML serialization 특성은 클래스 필드에 추가됩니다.

  • Serialization 특성은 웹 메서드에 대한 반환 형식에 적용되지 않습니다.

  • Serialization 특성은 웹 메서드의 매개 변수에 적용되지 않습니다.

  • SoapElementAttribute, SoapIgnoreAttribute, SoapAttributeAttribute, SoapAttributeOverrides, SoapAttributes, SoapEnumAttribute, SoapIncludeAttribute 등의 SOAP 인코딩된 serialization 특성은 이러한 클래스에 적용되지 않습니다.

  • 복합 XML 형식이 필요한 특성 인수는 해당 형식의 정규화된 이름을 가진 문자열 형식으로 생성됩니다. 그러면 컴파일러 오류가 발생하여 이를 수정해야 합니다.

    예를 들어, Visual Basic에서 <XmlIncludeAttribute(GetType("ClassName"))>는 <XmlIncludeAttribute("ClassName")>로 생성되는 반면 Visual C#에서는 [XmlIncludeAttribute(typeof("ClassName"))]가 [XmlIncludeAttribute("ClassName")]로 생성됩니다.

참고 항목

작업

방법: 응용 프로그램에 끝점 추가

방법: 웹 서비스 끝점이 WSDL 파일을 따르도록 설정

개념

응용 프로그램의 끝점 개요