WSDL이란 무엇인가? 의미 및 예시
⚡ 스마트 요약
WSDL(웹 서비스 DescriptWSDL(Web Service Distributed Language)은 클라이언트 애플리케이션에 웹 서비스의 기능과 호출 방법을 알려주는 XML 기반 파일입니다. 이 자료에서는 WSDL의 구조, 요소, 메시지, 포트 유형, 바인딩 및 게시 예제를 설명합니다.
WSDL이란 무엇입니까?
웹 서비스 Descript이온 언어 (WSDL)은 기본적으로 웹 서비스가 수행하는 작업을 클라이언트 애플리케이션에 알려주는 XML 기반 파일입니다. WSDL 파일은 웹 서비스가 수행하는 작업을 간단히 설명하는 데 사용되며 클라이언트에게 웹 서비스에 연결하고 웹 서비스에서 제공하는 모든 기능을 사용하는 데 필요한 모든 정보를 제공합니다.
이 튜토리얼에서는 웹 서비스의 가장 중요한 부분인 WSDL, 즉 웹 서비스 디렉터리에 대해 집중적으로 살펴보겠습니다. Descript이온 언어. 그것은 다음과 같은 역할을 합니다.trac웹 서비스와 해당 서비스를 이용하려는 클라이언트 간의 연결입니다.
WSDL 문서의 구조
WSDL 문서는 웹 서비스를 설명하는 데 사용됩니다. 클라이언트 애플리케이션이 웹 서비스가 실제로 무엇을 하는지 이해하려면 이러한 설명이 필요합니다.
- WSDL 파일에는 웹 서비스의 위치가 포함되어 있습니다.
- 웹 서비스에 의해 노출되는 메소드입니다.
WSDL 파일 자체는 사용자에게 매우 복잡해 보일 수 있지만, 모든 클라이언트 애플리케이션이 관련 웹 서비스를 사용하는 데 필요한 모든 정보를 포함하고 있습니다. 아래는 WSDL 파일의 일반적인 구조입니다.
- 정의
- Target네임 스페이스
- 데이터 유형
- 메시지
- 포트 유형
- 바인딩
- 예배
여기서 주목해야 할 중요한 점은 메시지의 정의, 즉 전달되는 내용에 관한 것입니다. SOAP 프로토콜실제로 WSDL 문서에 정의되어 있습니다. WSDL 문서는 클라이언트 애플리케이션에 웹 서비스에서 주고받는 SOAP 메시지 유형이 무엇인지 알려줍니다.
다시 말해, WSDL은 특정 위치의 주소가 적힌 엽서와 같습니다. 주소에는 메시지가 전달될 장소에 대한 정보가 담겨 있습니다. 마찬가지로, WSDL 파일은 클라이언트가 원하는 모든 기능을 제공하는 웹 서비스의 주소가 적힌 엽서와 같은 역할을 합니다.
<!-- WSDL definition structure --> <definitions name="Guru99Service" targetNamespace=http://example.org/math/ xmlns=http://schemas.xmlsoap.org/wsdl/> <!-- abstract definitions --> <types> ... <message> ... <portType> ... <!-- concrete definitions --> <binding> ... <service> ... </definition>
아래는 WSDL 파일의 구조를 나타낸 다이어그램입니다.
WSDL의 구조
WSDL 요소
WSDL 파일은 다음과 같은 주요 부분으로 구성됩니다.
- The `<complex>` 태그는 클라이언트 애플리케이션과 웹 서비스 간에 교환되는 메시지에 사용될 모든 복합 데이터 유형을 정의하는 데 사용됩니다. 웹 서비스가 복합 데이터 유형을 사용하는 경우 클라이언트 애플리케이션은 해당 유형을 처리하는 방법을 알아야 하므로 이는 중요합니다. 부동 소수점, 숫자, 문자열과 같은 데이터 유형은 모두 단순 데이터 유형이지만, 웹 서비스에서 제공하는 구조화된 데이터 유형이 있을 수 있습니다. 예를 들어, `EmployeeDataType`이라는 데이터 유형이 있을 수 있으며, 이 유형은 문자열 유형의 `EmployeeName`과 숫자 또는 정수 유형의 `EmployeeID`라는 두 요소를 가질 수 있습니다. 이 두 요소는 함께 복합 데이터 유형을 구성합니다.
- The `@Message` 태그는 클라이언트 애플리케이션과 웹 서버 간에 교환되는 메시지를 정의하는 데 사용됩니다. 이러한 메시지는 웹 서비스에서 수행할 수 있는 입력 및 출력 작업을 설명합니다. 예를 들어, 메시지는 직원의 직원 ID를 입력으로 받고, 입력된 직원 ID를 기반으로 직원의 이름을 출력하는 형태로 구성될 수 있습니다.
- The 태그는 모든 입력 및 출력 메시지를 하나의 논리적 연산으로 캡슐화하는 데 사용됩니다. 따라서 클라이언트 애플리케이션에서 EmployeeID를 수락한 다음 EmployeeName을 출력 메시지로 보내는 입력 메시지를 결합하는 "GetEmployee"라는 연산이 있을 수 있습니다.
- The `<port>` 태그는 특정 포트 유형에 작업을 바인딩하는 데 사용됩니다. 이렇게 하면 클라이언트 애플리케이션이 관련 포트 유형을 호출할 때 해당 포트에 바인딩된 작업에 접근할 수 있습니다. 포트 유형은 인터페이스와 유사합니다. 따라서 클라이언트 애플리케이션이 웹 서비스를 사용해야 하는 경우, 해당 웹 서비스가 제공하는 인터페이스에 연결할 수 있도록 바인딩 정보를 사용해야 합니다.
- The `<service>` 태그는 웹 서비스 자체에 부여된 이름입니다. 클라이언트 애플리케이션이 웹 서비스를 호출할 때 처음에는 웹 서비스의 이름을 사용하여 호출합니다. 예를 들어, 웹 서비스는 `http://localhost/`와 같은 주소에 있을 수 있습니다.Guru99/Tutorial.asmx. 서비스 태그에는 다음이 포함됩니다. URL 정의된 속성은 클라이언트 애플리케이션에 해당 위치에서 웹 서비스를 사용할 수 있음을 알려줍니다.
왜 WSDL인가?
웹 서비스는 현대 웹 애플리케이션을 구축하는 데 중요한 구성 요소입니다. 웹 서비스의 주요 목적은 서로 다른 프로그래밍 언어로 구축된 여러 애플리케이션이 서로 통신할 수 있도록 하는 것입니다. 예를 들어, .Net 웹 애플리케이션이 다른 웹 애플리케이션과 통신할 수 있습니다. Java 웹 서비스를 통한 애플리케이션.
웹 서비스는 다음과 같은 주요 특징을 가지고 있습니다.
- XML 프로그래밍 언어를 사용하여 구축되었습니다. .Net과 같은 거의 모든 최신 기술이 사용됩니다. Java XML로 작업할 수 있는 해당 명령이 있습니다. 따라서 XML은 웹 서비스 구축에 가장 적합한 언어로 채택되었습니다.
- 웹 서비스는 HTTP 프로토콜을 통해 통신합니다. HTTP는 모든 웹 기반 애플리케이션에서 사용되는 프로토콜입니다. 따라서 웹 서비스 또한 HTTP 프로토콜을 통해 작동할 수 있도록 하는 것이 중요했습니다.
- 웹 서비스는 특정 언어 사양을 따릅니다. 이 사양은 모든 웹 표준을 관리하는 기관인 W3C에서 설정합니다.
- 웹 서비스에는 웹 서비스를 설명하는 데 사용되는 WSDL이라는 설명 언어가 있습니다.
WSDL 파일은 일반 XML 형식으로 작성됩니다. XML 형식인 이유는 모든 프로그래밍 언어에서 파일을 읽을 수 있도록 하기 위함입니다. 따라서 클라이언트 애플리케이션이 .NET으로 작성되었다면 XML 파일을 이해할 수 있습니다. 마찬가지로 클라이언트 애플리케이션이 다른 언어로 작성되었다면 XML 파일을 이해할 수 있습니다. Java 프로그래밍 언어를 알고 있다면 WSDL 파일도 해석할 수 있을 것입니다.
WSDL 파일은 모든 것을 하나로 묶어주는 역할을 합니다. 위 다이어그램에서 볼 수 있듯이 .NET 언어로 웹 서비스를 만들 수 있습니다. 따라서 서비스가 구현되는 부분은 바로 여기입니다. 만약 WSDL 파일이 없고 웹 서비스를 구현하고 싶다면, Java 웹 서비스를 사용하는 클래스를 직접 작성하려면 상당한 코딩 작업이 필요했습니다. 하지만 이제 XML 형식으로 되어 있어 어떤 프로그래밍 언어에서도 이해할 수 있는 WSDL 파일을 사용하면 쉽게 웹 서비스를 사용할 수 있습니다. Java 클래스는 .Net 웹 서비스를 사용합니다. 따라서 코딩 노력이 크게 줄어듭니다.
WSDL 메시지 부분
WSDL은 "메시지"라는 섹션으로 구성됩니다. 요소. 이 요소는 기본적으로 웹 서비스와 클라이언트 애플리케이션 간에 교환되는 데이터를 설명하는 데 사용됩니다.
각 웹 서비스는 항상 두 가지 유형의 메시지를 갖습니다.
- 하나는 웹 서비스의 입력용이고, 다른 하나는 웹 서비스의 출력용입니다.
- 입력은 웹 서비스에서 허용하는 매개변수를 설명하는 데 사용됩니다. 이는 웹 서비스에 매개변수로 전송될 값을 알 수 있도록 하는 클라이언트 애플리케이션의 중요한 측면입니다.
- 다른 유형의 메시지는 웹 서비스에서 제공하는 결과를 알려주는 출력 메시지입니다.
각 메시지에는 차례로 입력 및 출력 메시지에 사용되는 매개변수를 설명하는 데 사용되는 요소입니다.
아래는 웹 서비스 메시지의 간단한 예시입니다. 이 웹 서비스는 매개변수로 "튜토리얼 ID"를 전달받으면 해당 "튜토리얼"의 이름을 제공하는 기능을 합니다.
- 보시는 바와 같이 웹 서비스에는 입력 메시지 하나와 출력 메시지 하나, 총 두 개의 메시지가 있습니다.
- 입력 메시지는 TutorialNameRequest라고 하며, TutorialID라는 매개변수 하나를 가집니다. 이 매개변수는 xsd:number 형식으로 지정된 숫자 유형입니다.
- 출력 메시지는 TutorialNameResponse라고 하며, TutorialName이라는 매개변수 하나를 가집니다. 이 매개변수는 xsd:string 타입으로 지정된 문자열 타입입니다.
포트 유형 바인딩
WSDL에서 포트는 웹 서비스가 제공하는 하나의 완전한 작업을 정의하는 데 사용됩니다. 이전 주제에서 우리는 웹 서비스가 "TutorialNameRequest"라는 입력 메시지와 "TutorialNameResponse"라는 출력 메시지, 이렇게 두 개의 메시지를 제공한다는 것을 살펴보았습니다. 입력 메시지와 출력 메시지를 합쳐 하나의 완전한 작업이라고 합니다.
WSDL은 다음과 같은 요소를 제공합니다. 웹 서비스에서 제공하는 작업을 정의하는 데 사용됩니다.
따라서 위의 예에서 우리는 다음과 같은 사실을 알 수 있습니다.
- 해당 작업을 캡슐화하는 포트 유형의 이름은 "Tutorial_PortType"으로 지정됩니다.
- 해당 작업 자체의 이름은 "튜토리얼"입니다. 따라서 이 작업은 입력 매개변수로 TutorialID가 주어지면 TutorialName을 반환합니다.
- 다음은 입력 메시지와 출력 메시지, 이렇게 두 가지 메시지가 있으며, 이 두 메시지가 우리의 연산을 구성합니다.
이외에도 요소도 있습니다. 메시지 전송 방법을 정의하는 데 사용되는 요소입니다.
- 위 예시는 바인딩이 바인딩 이름으로 구성됨을 보여줍니다. 이 예시에서는 바인딩 이름이 "TutorialSoapBinding"으로 지정되었습니다. 간단히 말해, 바인딩은 클라이언트 애플리케이션이 웹 서비스에 연결하는 데 사용하는 정보입니다. 웹 서비스에 바인딩되면 웹 서비스에서 제공하는 다양한 작업을 호출할 수 있게 됩니다.
- 전송 계층이 http://로 표시되는 것은 메시지가 HTTP 프로토콜을 통해 전송됨을 의미합니다.
WSDL 파일 생성
WSDL 파일은 어떤 프로그래밍 언어로든 웹 서비스를 구축할 때마다 생성됩니다. WSDL 파일은 처음부터 직접 생성하기에는 상당히 복잡하기 때문에 Visual Studio for .Net과 같은 모든 편집기는 웹 서비스 생성을 지원합니다. Eclipse 을 통한 Java WSDL 파일을 자동으로 생성합니다.
다음은 Visual Studio에서 만든 WSDL 파일의 예입니다.
<?xml version="1.0"?> <definitions name="Tutorial" targetNamespace=http://Guru99.com/Tutorial.wsdl xmlns:tns=http://Guru99.com/Tutorial.wsdl xmlns:xsd1=http://Guru99.com/Tutorial.xsd xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/ xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace=http://Guru99.com/Tutorial.xsd xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TutorialNameRequest"> <complexType> <all> <element name="TutorialName" type="string"/> </all> </complexType> </element> <element name="TutorialIDRequest"> <complexType> <all> <element name="TutorialID" type="number"/> </all> </complexType> </element> </schema> </types> <message name="GetTutorialNameInput"> <part name="body" element="xsd1:TutorialIDRequest"/> </message> <message name="GetTutorialNameOutput"> <part name="body" element="xsd1:TutorialNameRequest"/> </message> <portType name="TutorialPortType"> <operation name="GetTutorialName"> <input message="tns:GetTutorialNameInput"/> <output message="tns:GetTutorialNameOutput"/> </operation> </portType> <binding name="TutorialSoapBinding" type="tns:TutorialPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetTutorialName"> <soap:operation soapAction="http://Guru99.com/GetTutorialName"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="TutorialService"> <documentation>TutorialService</documentation> <port name="TutorialPort" binding="tns:TutorialSoapBinding"> <soap:address location="http://Guru99.com/Tutorial"/> </port> </service> </definitions>
위의 WSDL 파일은 사용자에게 매우 복잡해 보일 수 있습니다. 각 부분은 이후 튜토리얼에서 자세히 다루겠지만, 지금은 WSDL 파일의 각 섹션이 실제로 어떤 역할을 하는지 간략하게 살펴보겠습니다.
웹 서비스 예제 게시
이제 Visual Studio를 사용하여 웹 서비스를 게시하고 사용하는 방법을 예제를 통해 살펴보겠습니다. 이 예제에서는 하나의 WebMethod를 가진 웹 서비스를 생성합니다. 이 메서드는 "TutorialID"라는 정수형 매개변수를 받습니다. 그리고 "Web Services"라는 문자열을 반환합니다.
다음으로, 이 웹 서비스를 이용하고 웹 메서드를 호출하는 콘솔 기반 애플리케이션을 만들어 보겠습니다. 이 예제를 실행하는 데 필요한 단계를 살펴보겠습니다.
단계 1) 첫 번째 단계는 웹 서비스를 만드는 것입니다. 방법에 대한 자세한 단계는 Asp.Net 웹 프로젝트와 웹 서비스가 생성되는 과정이 설명되었습니다. 여기에서 확인하세요동일한 단계를 따라 프로젝트와 웹 서비스를 생성하십시오. 핵심은 웹 서비스 파일에 아래 코드를 입력하는 것입니다.
namespace webservic_asmx { [WebService(Name = "Guru99 Web service")] public class TutorialService : System.Web.Services.WebService { [WebMethod] public string GetTutorialService(int TutorialID) { string TutorialName = "Web Services"; return TutorialName; } } }
Code 설명 :
- 여기서는 "라는 이름의 WebMethod를 생성하고 있습니다.Guru"99WebService." 이 웹 메서드에는 이 웹 메서드가 호출될 때마다 전달해야 하는 정수 매개변수가 포함되어 있습니다.
- 다음으로 "Web Services"의 문자열 값을 보유할 "TutorialName"이라는 변수를 정의합니다. 웹 서비스가 호출될 때 반환되는 값입니다.
단계 2) 웹 서비스 파일을 정의했으면 다음 단계는 이 웹 서비스를 사용할 클라이언트 프로젝트를 만드는 것입니다. 이 웹 서비스를 호출하고 "를 실행하는 간단한 콘솔 애플리케이션을 만들어 보겠습니다.Guru"99WebService"를 호출한 다음 콘솔 로그 화면에 웹 메서드의 출력을 표시합니다. 콘솔 애플리케이션을 만들려면 다음 단계를 따르세요. Visual Studio 솔루션 파일을 마우스 오른쪽 버튼으로 클릭하고 [추가] -> [새 프로젝트] 옵션을 선택합니다.
단계 3) 이 단계에서,
- 먼저 Visual을 선택하세요. C# Windows 옵션. 그런 다음 콘솔 애플리케이션 생성 옵션을 선택합니다.
- 우리의 경우 "DemoApplication"으로 주어진 프로젝트 이름을 지정하십시오.
위 화면에서 확인 버튼을 클릭하면 Visual Studio의 솔루션 탐색기에서 프로젝트를 볼 수 있습니다.
단계 4) 이 단계에서는 DemoApplication 콘솔 애플리케이션을 시작 프로젝트로 설정합니다. 이렇게 하면 Visual Studio 프로젝트 전체가 실행될 때 이 애플리케이션이 가장 먼저 실행됩니다. 이 콘솔 애플리케이션은 Visual Studio에서 자동으로 실행되는 웹 서비스를 호출합니다. 이 단계를 완료하려면 DemoApplication 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "시작 프로젝트로 설정" 옵션을 선택하십시오.
단계 5) 다음 단계는 "에 대한 서비스 참조를 추가하는 것입니다."Guru콘솔 애플리케이션에 "99Webservice"를 추가합니다. 이렇게 하면 DemoApplication에서 웹 서비스와 웹 서비스의 모든 웹 메서드를 참조할 수 있습니다. 이를 위해 DemoApplication 프로젝트 파일을 마우스 오른쪽 버튼으로 클릭하고 메뉴에서 "추가" -> "서비스 참조"를 선택합니다.
단계 6) 이 단계에서는 서비스 참조를 추가하는 데 필요한 다양한 값을 제공합니다.
- 먼저, 검색 옵션을 선택해야 합니다. 이 옵션을 선택하면 TutorialService 웹 서비스의 WSDL 파일이 자동으로 검색됩니다.
- 다음으로 서비스 참조에 이름을 지정해야 합니다. 저희의 경우, 다음과 같은 이름을 지정합니다. Guru99웹서비스.
- 다음으로 TutorialService.asmx 옵션을 확장하여 오른쪽에 "GetTutorialService" 메서드가 표시되도록 해야 합니다. 여기서 TutorialService.asmx는 웹 서비스 코드가 포함된 Visual Studio .Net 파일의 이름입니다.
- 다음으로 웹 서비스에 있던 "GetTutorialService"라는 웹 메서드를 살펴보겠습니다.
"확인" 버튼을 클릭하면 아래 그림과 같이 이 웹 서비스에 접근하는 데 필요한 모든 코드가 데모 애플리케이션 콘솔에 추가됩니다. 스크린샷은 "Guru"99Webservice"가 콘솔 애플리케이션에 성공적으로 추가되었습니다.
단계 7) 다음 단계는 콘솔 애플리케이션에 웹 서비스의 웹 메서드에 접근하는 코드를 추가하는 것입니다. 콘솔 애플리케이션과 함께 자동으로 생성되는 Program.cs 파일을 열고 아래 코드를 추가하세요.
namespace DemoApplication { class Program { static void Main(string[] args) { var client = new Guru99Webservice.Guru99WebserviceSoapClient(); Console.WriteLine(client.GetTutorialService(1)); Console.ReadKey(); } } }
Code 설명 :
- 첫 번째 단계는 Program.cs 파일을 선택하는 것입니다. 이 파일은 Visual Studio에서 콘솔 애플리케이션을 생성할 때 만들어지는 기본 파일입니다. 콘솔 애플리케이션(이 예에서는 DemoApplication)이 실행될 때 실행되는 파일이 바로 이 Program.cs 파일입니다.
- 다음으로 "client"라는 변수를 생성하고, 이 변수에 이전 단계에서 생성한 서비스 참조 인스턴스를 할당합니다. 저희의 경우 서비스 참조는 'Guru99웹서비스.Guru99WebserviceSoapClient()'.
- 이제 TutorialService 웹 서비스의 'GetTutorialService' 웹 메서드를 호출합니다. GetTutorialService 메서드는 정수 매개변수를 받으므로, 웹 메서드에 정수 매개변수를 전달하면 됩니다.
- 이 마지막 줄은 콘솔 로그 화면이 계속 활성화되어 출력을 볼 수 있도록 하기 위한 것입니다. 이 명령은 사용자로부터 입력을 기다립니다.
산출
위의 모든 단계를 완료하고 데모 애플리케이션을 실행하면 아래와 같은 출력이 표시됩니다.
출력을 보면 DemoApplication이 웹 서비스를 호출하고 웹 서비스에서 반환된 문자열이 콘솔 로그에 표시되는 것을 분명히 알 수 있습니다.
















