WSDL 튜토리얼: 웹 서비스 Descript예시가 포함된 이온 언어

WSDL이란 무엇입니까?

웹 서비스 Descript이온 언어 (WSDL)은 기본적으로 웹 서비스가 수행하는 작업을 클라이언트 애플리케이션에 알려주는 XML 기반 파일입니다. WSDL 파일은 웹 서비스가 수행하는 작업을 간단히 설명하는 데 사용되며 클라이언트에게 웹 서비스에 연결하고 웹 서비스에서 제공하는 모든 기능을 사용하는 데 필요한 모든 정보를 제공합니다.

이 튜토리얼에서는 웹 서비스의 가장 중요한 부분인 마지막 요점인 WSDL 또는 웹 서비스 설명 언어에 중점을 둘 것입니다.

WSDL 파일은 웹 서비스가 수행하는 작업을 간단히 설명하는 데 사용되며 클라이언트에게 웹 서비스에 연결하고 웹 서비스에서 제공하는 모든 기능을 사용하는 데 필요한 모든 정보를 제공합니다.

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 요소

WSDL 파일에는 다음과 같은 주요 부분이 포함되어 있습니다.

  1. The 태그는 클라이언트 애플리케이션과 웹 서비스 간에 교환되는 메시지에 사용될 모든 복합 데이터 유형을 정의하는 데 사용됩니다. 이는 클라이언트 애플리케이션의 중요한 측면인데, 웹 서비스가 복합 데이터 유형으로 작동하는 경우 클라이언트 애플리케이션은 복합 데이터 유형을 처리하는 방법을 알아야 하기 때문입니다. float, 숫자, 문자열과 같은 데이터 유형은 모두 간단한 데이터 유형이지만 웹 서비스에서 제공할 수 있는 구조화된 데이터 유형이 있을 수 있습니다.
    예를 들어, EmployeeDataType이라는 데이터 유형이 있을 수 있는데, 여기에는 문자열 유형의 "EmployeeName"과 숫자 또는 정수 유형의 "EmployeeID"라는 두 개의 요소가 있을 수 있습니다. 이들은 함께 데이터 구조를 형성하고, 이는 복잡한 데이터 유형이 됩니다.
  2. The 태그는 클라이언트 애플리케이션과 웹 서버 간에 교환되는 메시지를 정의하는 데 사용됩니다. 이러한 메시지는 웹 서비스에서 수행할 수 있는 입력 및 출력 작업을 설명합니다. 메시지의 예로는 직원의 EmployeeID를 허용하는 메시지가 있고, 출력 메시지는 제공된 EmpoyeeID를 기반으로 하는 직원의 이름이 될 수 있습니다.
  3. The 태그는 모든 입력 및 출력 메시지를 하나의 논리적 연산으로 캡슐화하는 데 사용됩니다. 따라서 클라이언트 애플리케이션에서 EmployeeID를 수락한 다음 EmployeeName을 출력 메시지로 보내는 입력 메시지를 결합하는 "GetEmployee"라는 연산이 있을 수 있습니다.
  4. The 태그는 작업을 특정 포트 유형에 바인딩하는 데 사용됩니다. 이는 클라이언트 애플리케이션이 관련 포트 유형을 호출할 때 이 포트 유형에 바인딩된 작업에 액세스할 수 있도록 하기 위한 것입니다. 포트 유형은 인터페이스와 같습니다. 따라서 클라이언트 애플리케이션이 웹 서비스를 사용해야 하는 경우 바인딩 정보를 사용하여 해당 웹 서비스에서 제공하는 인터페이스에 연결할 수 있는지 확인해야 합니다.
  5. The 태그는 웹 서비스 자체에 부여되는 이름입니다. 처음에 클라이언트 애플리케이션이 웹 서비스를 호출할 때 웹 서비스 이름을 호출하여 수행합니다. 예를 들어, 웹 서비스는 다음과 같은 주소에 있을 수 있습니다. http://localhost/Guru99/Tutorial.asmx . 서비스 태그에는 실제로 다음과 같이 정의된 URL이 있습니다. http://localhost/Guru99/Tutorial.asmx, 실제로 클라이언트 애플리케이션에 이 위치에 사용 가능한 웹 서비스가 있음을 알려줍니다.

왜 WSDL인가?

웹 서비스는 현대 웹 애플리케이션을 구축하는 데 중요한 구성 요소입니다. 주요 목적은 다양한 프로그래밍 언어로 구축된 여러 응용 프로그램이 서로 통신할 수 있도록 하는 것입니다. 예를 들어, .Net 웹 애플리케이션이 Java 웹 서비스를 통한 애플리케이션.

웹 서비스에는 다음과 같은 주요 기능이 있습니다.

  • XML 프로그래밍 언어를 사용하여 구축되었습니다. .Net과 같은 거의 모든 현대 기술 Java XML로 작업할 수 있는 해당 명령이 있습니다. 따라서 XML은 웹 서비스 구축에 가장 적합한 언어로 채택되었습니다.
  • 웹 서비스는 HTTP를 통해 통신합니다. HTTP는 모든 웹 기반 응용 프로그램에서 사용되는 프로토콜입니다. 따라서 웹 서비스에도 HTTP 프로토콜을 통해 작동할 수 있는 기능이 있는지 확인하는 것이 합리적이었습니다.
  • 웹 서비스는 특정 언어 사양을 따릅니다. 이 사양은 모든 웹 표준을 관리하는 기관인 W3C에서 설정합니다.
  • 웹 서비스에는 웹 서비스를 설명하는 데 사용되는 WSDL이라는 설명 언어가 있습니다.

WSDL 파일은 일반 XML로 작성됩니다. 파일이 XML로 되어 있는 이유는 모든 프로그래밍 언어에서 파일을 읽을 수 있기 때문입니다.

따라서 클라이언트 애플리케이션이 .Net으로 작성된 경우 XML 파일을 이해합니다. 마찬가지로 클라이언트 애플리케이션이 Java 프로그래밍 언어를 사용하면 WSDL 파일을 해석할 수도 있습니다.

WSDL 필요

WSDL 파일은 모든 것을 하나로 묶는 것입니다. 위 다이어그램을 보면 .Net 언어로 웹 서비스를 생성할 수 있음을 알 수 있습니다.

이것이 서비스가 구현되는 곳입니다. WSDL 파일이 없고 Java 클래스를 사용하여 웹 서비스를 사용하려면 이를 달성하기 위해 많은 코딩 노력이 필요합니다.

그러나 이제 모든 프로그래밍 언어에서 이해할 수 있는 XML 형식의 WSDL 파일을 사용하면 쉽게 Java 클래스는 .Net 웹 서비스를 사용합니다. 따라서 코딩 노력이 크게 줄어듭니다.

WSDL 메시지 부분

WSDL은 "메시지"라는 섹션으로 구성됩니다. 요소입니다.

이 요소는 기본적으로 웹 서비스와 클라이언트 애플리케이션 간에 교환되는 데이터를 설명하는 데 사용됩니다.

각 웹 서비스에는 항상 두 가지 유형의 메시지가 있습니다.

  • 하나는 웹 서비스의 입력용이고, 다른 하나는 웹 서비스의 출력용입니다.
  • 입력은 웹 서비스에서 허용하는 매개변수를 설명하는 데 사용됩니다. 이는 웹 서비스에 매개변수로 전송될 값을 알 수 있도록 하는 클라이언트 애플리케이션의 중요한 측면입니다.
  • 다른 유형의 메시지는 웹 서비스에서 제공하는 결과를 알려주는 출력 메시지입니다.

각 메시지에는 차례로 입력 및 출력 메시지에 사용되는 매개변수를 설명하는 데 사용되는 요소입니다.

다음은 웹 서비스에 대한 메시지의 간단한 예입니다. 웹 서비스의 기능은 "튜토리얼 ID"가 웹 서비스에 매개변수로 제출되면 "튜토리얼"의 이름을 제공하는 것입니다.

WSDL 메시지 부분

  1. 보시다시피 웹 서비스에는 2개의 메시지가 있습니다. 하나는 입력용이고 다른 하나는 출력용입니다.
  2. 입력 메시지는 TutorialID라는 하나의 매개변수가 있는 TutorialNameRequest로 알려져 있습니다. 이 매개변수는 xsd:number 유형으로 지정되는 유형 번호입니다.
  3. 출력 메시지는 TutorialName이라는 하나의 매개변수가 있는 TutorialNameResponse로 알려져 있습니다. 이 매개변수는 xsd:string 유형으로 지정되는 문자열 유형입니다.

포트 유형 바인딩

포트는 웹 서비스에서 제공되는 하나의 완전한 작업을 정의하기 위해 WSDL에서 사용됩니다.

이전 토픽에서 우리는 웹 서비스가 "TutorialNameRequest"라는 입력을 위한 메시지 하나와 "TutorialNameResponse"라는 출력을 위한 메시지 하나, 총 2개의 메시지를 제공했다는 것을 보았습니다. 입력 및 출력 메시지 형태를 함께 하나의 완전한 작업이라고 합니다.

WSDL은 다음과 같은 요소를 제공합니다. 웹 서비스에서 제공하는 작업을 정의하는 데 사용됩니다.

포트 유형 바인딩

따라서 위의 예에서 우리는 다음과 같은 사실을 알 수 있습니다.

  1. 해당 작업을 캡슐화하는 포트 유형의 이름은 "Tutorial_PortType"으로 지정됩니다.
  2. 작업 자체에는 "Tutorial"이라는 이름이 지정됩니다. 따라서 TutorialID가 입력 매개변수로 지정되면 기본적으로 우리 작업은 TutorialName을 제공합니다.
  3. 다음은 입력을 위한 메시지 하나와 작업을 형성하는 출력을 위한 메시지 2개입니다.

이외에도 요소도 있습니다. 메시지 전송 방법을 정의하는 데 사용되는 요소입니다.

포트 유형 바인딩

  1. 위의 예는 바인딩이 바인딩 이름으로 구성되어 있음을 보여줍니다. 우리의 경우 "TutorialSoapBinding"으로 제공됩니다. 간단히 말해서 바인딩은 클라이언트 애플리케이션이 실제로 웹 서비스에 바인딩하는 데 사용하는 정보입니다. 실제로 웹 서비스에 바인딩되면 웹 서비스에서 노출되는 다양한 작업을 호출할 수 있습니다.
  2. 전송 계층은 HTTP 프로토콜을 통해 전송될 메시지를 의미하는 http://로 제공됩니다.

WSDL 파일 생성

WSDL 파일은 웹 서비스가 프로그래밍 언어로 구축될 때마다 생성됩니다.

WSDL 파일은 처음부터 생성하기에는 매우 복잡하기 때문에 .Net용 Visual Studio와 같은 모든 편집기에서는 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"라는 정수 매개변수를 허용합니다. 그러면 웹 메서드는 "웹 서비스"라는 문자열을 반환합니다.

그런 다음 이 웹 서비스를 사용하고 그에 따라 웹 메서드를 호출하는 콘솔 기반 애플리케이션을 만듭니다.

이 예제를 수행하는 데 필요한 단계를 살펴보겠습니다.

단계 1) 첫 번째 단계는 웹 서비스를 만드는 것입니다. 방법에 대한 자세한 단계는 Asp.Net 웹 프로젝트와 웹 서비스가 생성되는 것을 설명했습니다. 이리; 동일한 단계에 따라 프로젝트와 웹 서비스를 적절하게 생성하십시오. 중요한 부분은 웹 서비스 파일에 아래 코드를 입력하는 것입니다.

웹 서비스 예제 게시

namespace webservic asmx
{
	[WebService(Name = "Guru99 Web service")]
	public class TutorialService : System.Web.Services.WebService
	{
		[WebMethod]
		public string GetTutorialService(int TutoriallD)
		{
			string TutorialName = "Web Services";
			return TutorialName;
		}
	}
}

코드 설명 :

  1. 여기서는 "Guru99WebService"라는 WebMethod를 만듭니다. 이 웹 메소드에는 이 웹 메소드가 호출될 때마다 전달되어야 하는 정수 매개변수가 포함되어 있습니다.
  2. 다음으로 "Web Services"의 문자열 값을 보유할 "TutorialName"이라는 변수를 정의합니다. 웹 서비스가 호출될 때 반환되는 값입니다.

단계 2) 웹 서비스 파일을 정의한 후 다음 단계는 이 웹 서비스를 사용할 클라이언트 프로젝트를 만드는 것입니다.

이 웹 서비스를 호출하고 "Guru99WebService"를 호출한 다음 콘솔 로그 화면에 웹 메서드의 출력을 표시하는 간단한 콘솔 애플리케이션을 만들어 보겠습니다. 콘솔 애플리케이션을 생성하려면 아래 단계를 따르세요.

Visual Studio 솔루션 파일을 마우스 오른쪽 버튼으로 클릭하고 추가->새 프로젝트 옵션을 선택합니다.

웹 서비스 예제 게시

3단계) 이 단계에서,

  1. 먼저 Visual을 선택하세요. C# Windows 옵션. 그런 다음 콘솔 애플리케이션 생성 옵션을 선택합니다.
  2. 우리의 경우 "DemoApplication"으로 주어진 프로젝트 이름을 지정하십시오.

웹 서비스 예제 게시

위 화면에서 확인(OK) 버튼을 클릭하면 Visual Studio의 솔루션 탐색기에서 프로젝트를 볼 수 있습니다.

웹 서비스 예제 게시

단계 4) 이 단계에서는 DemoApplication 콘솔 애플리케이션을 시작 프로젝트로 설정합니다. 이는 전체 Visual Studio 프로젝트가 실행될 때 이 애플리케이션이 먼저 시작되도록 하기 위해 수행됩니다. 이 콘솔 애플리케이션은 Visual Studio에서 자동으로 시작되는 웹 서비스를 호출합니다.

이 단계를 완료하려면 DemoApplication 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "시작 프로젝트로 설정" 옵션을 선택하세요.

웹 서비스 예제 게시

단계 5) 다음 단계는 "Guru99Webservice"의 서비스 참조를 콘솔 애플리케이션에 추가하는 것입니다. 이는 DemoApplication이 웹 서비스와 웹 서비스의 모든 웹 메소드를 참조할 수 있도록 하기 위해 수행됩니다.

이렇게 하려면 DemoApplication 프로젝트 파일을 마우스 오른쪽 버튼으로 클릭하고 메뉴 옵션 Add->Service Reference를 선택합니다.

웹 서비스 예제 게시

단계 6) 이 단계에서는 서비스 참조를 추가하는 데 필요한 다양한 값을 제공합니다.

  1. 먼저 검색 옵션을 선택해야 합니다. 이 옵션은 TutorialService 웹 서비스에 대한 WSDL 파일을 자동으로 선택합니다.
  2. 다음으로 서비스 참조의 이름을 지정해야 합니다. 우리의 경우에는 Guru99Webservice라는 이름을 지정합니다.
  3. 그런 다음 TutorialService.asmx 옵션을 확장하여 오른쪽에 'GetTutorialService' 메서드를 볼 수 있도록 해야 합니다. 여기서 TutorialService.asmx는 웹 서비스의 코드가 들어 있는 Visual Studio .Net 파일의 이름입니다.
  4. 그런 다음 "GetTutorialService"라고 알려진 웹 서비스에 있는 웹 메서드를 살펴보겠습니다.

웹 서비스 예제 게시

'확인' 버튼을 클릭하면 이 웹 서비스에 액세스하는 데 필요한 모든 코드가 아래와 같이 DemoApplication 콘솔 애플리케이션에 추가됩니다.

스크린샷은 "Guru99Webservice"가 콘솔 애플리케이션에 성공적으로 추가되었음을 보여줍니다.

웹 서비스 예제 게시

단계 7) 다음 단계는 웹 서비스의 웹 메서드에 액세스하기 위해 콘솔 애플리케이션에 코드를 추가하는 것입니다. 콘솔 애플리케이션과 함께 자동으로 제공되는 Program.cs 코드 파일을 열고 아래 코드를 추가하세요.

웹 서비스 예제 게시

namespace DemoApplication
{
	class Program
	{
		static void Main(string[ ] args)
		{
			var client = new Guru99Webservice.Guru99WebserviceSoapClient();

			Console.WriteLine(client.GetTutorialService(l));
			
			Console.ReadKey();
		}
	}
}

코드 설명:-

  1. 첫 번째 부분은 Program.cs 파일을 선택하는 것입니다. 이것은 콘솔 애플리케이션이 생성될 때 Visual Studio에서 생성되는 주 파일입니다. 이 파일은 콘솔 애플리케이션(우리의 경우 데모 애플리케이션)이 실행될 때 실행되는 것입니다.
  2. 그런 다음 이전 단계에서 생성된 서비스 참조의 인스턴스로 설정될 "클라이언트"라는 변수를 생성합니다. 우리의 경우 서비스 참조는 'Guru99Webservice.Guru99WebserviveSoapClient()'입니다.
  3. 그런 다음 TutorialService 웹 서비스에서 웹 메소드 'GetTutorialService'를 호출합니다. GetTutorialService' 메소드는 정수 매개변수를 허용하므로 정수 매개변수를 웹 메소드에 전달한다는 점을 기억하십시오.
  4. 이 마지막 줄은 출력을 볼 수 있도록 콘솔 로그 화면이 활성 상태로 유지되도록 하기 위한 것입니다. 이 명령은 사용자의 입력을 기다립니다.

산출

위의 모든 단계를 따르고 DemoApplication을 실행하면 아래 출력이 표시됩니다.

웹 서비스 예제 게시

출력을 보면 DemoApplication이 웹 서비스를 호출하고 웹 서비스에서 반환된 문자열이 콘솔 로그에 표시되는 것을 분명히 알 수 있습니다.

제품 개요

  • WSDL의 전체 형태는 웹 서비스입니다. Descript이온 언어
  • WSDL 문서는 웹 서비스를 설명하는 데 사용되는 문서입니다. 이는 모든 클라이언트 애플리케이션이 웹 서비스의 위치를 ​​아는 데 중요합니다. 또한 클라이언트 애플리케이션이 웹 서비스에서 사용할 수 있는 메서드를 이해할 수 있게 해줍니다.
  • WSDL 파일을 사용하면 웹 서비스를 하나의 프로그래밍 언어로 구현하고 다른 프로그래밍 언어에서 호출하는 것이 매우 쉽습니다.
  • WSDL 문서는 일반적으로 메시지로 구성됩니다. 각 웹 메서드에는 2개의 메시지가 있는데, 하나는 입력용이고 다른 하나는 출력용입니다. 이들은 함께 연산을 형성합니다.
  • 웹 서비스 Description Language(WSDL을 나타냄) 파일은 일반적으로 해당 프로그래밍 언어에 사용되는 편집기에서 생성됩니다.
  • Visual Studio에서 웹 서비스를 사용하는 방법을 살펴보았습니다. 이는 콘솔 애플리케이션인 다른 프로젝트를 만들어서 수행할 수 있습니다. 그런 다음 서비스 참조를 추가하면 웹 서비스의 웹 메서드에 액세스할 수 있습니다.