SOAP 기반의 웹 서비스를 설명할 때 반드시 등장하는 핵심 개념이며,
SOAP = 통신 프로토콜, WSDL = 계약서, UDDI = 주소록이라고 외우면 쉽게 기억됩니다.
**WSDL(Web Services Description Language)**는
웹 서비스가 제공하는 기능(메서드), 입력/출력 파라미터, 위치(URL), 전송 방식(HTTP, SOAP 등)을 기계가 이해할 수 있는 XML 형식으로 기술한 웹 서비스 명세서입니다.
즉, 웹 서비스를 사용하려는 시스템에게 **"이 서비스는 이렇게 호출하면 됩니다"**라는 사용 설명서 또는 계약서 역할을 합니다.
| 목적 | 설명 |
|---|---|
| 웹 서비스 인터페이스 정의 | 서비스 제공자와 소비자 간의 명확한 호출 규약 제공 |
| 자동화된 서비스 연결 | 개발자가 수동으로 문서 확인하지 않아도 자동 연동 가능 |
| 표준화된 연동 | 플랫폼, 언어와 무관하게 통신 가능 (Java ↔ C#, Python 등) |
| 시스템 간 상호운용성 향상 | XML 기반으로 구조가 명확하고 범용적임 |
WSDL은 보통 다음과 같은 구조로 구성됩니다:
<definitions>
<types> ▶ 데이터 타입 정의 (XSD 기반)
<message> ▶ 입력, 출력 메시지 구조 정의
<portType> ▶ 제공되는 기능(Operation) 정의 (인터페이스)
<binding> ▶ 전송 프로토콜(SOAP/HTTP) 및 포맷 지정
<service> ▶ 실제 서비스 위치(URL) 지정
</definitions>
| 요소 | 설명 |
|---|---|
<types> | XSD(XML Schema)로 데이터 타입 정의 (예: 문자열, 정수 등) |
<message> | 요청/응답에 사용할 메시지 형식 지정 |
<portType> | 호출 가능한 함수 목록과 입출력 메시지 매핑 |
<binding> | SOAP, HTTP 등 어떤 통신 방식으로 호출할지 정의 |
<service> | 웹 서비스가 실제로 배포된 URL 주소 명시 |
<definitions name="CalculatorService">
<message name="AddRequest">
<part name="a" type="xsd:int"/>
<part name="b" type="xsd:int"/>
</message>
<message name="AddResponse">
<part name="result" type="xsd:int"/>
</message>
<portType name="CalculatorPort">
<operation name="Add">
<input message="tns:AddRequest"/>
<output message="tns:AddResponse"/>
</operation>
</portType>
<binding name="CalculatorBinding" type="tns:CalculatorPort">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Add">
<soap:operation soapAction="http://example.com/add"/>
</operation>
</binding>
<service name="CalculatorService">
<port name="CalculatorPort" binding="tns:CalculatorBinding">
<soap:address location="http://example.com/calculator"/>
</port>
</service>
</definitions>
[서비스 제공자] [서비스 소비자]
WSDL 생성 ──────────▶ WSDL 파싱
▲ ▼
SOAP 메시지 송수신 ←──── 호출 규약에 따라 통신
| 구분 | WSDL | REST 문서 (Swagger 등) |
|---|---|---|
| 방식 | SOAP 기반 웹 서비스 설명 | RESTful API 설명 |
| 포맷 | XML | JSON 또는 YAML |
| 자동화 | 높은 자동 생성 가능성 | Swagger 등 별도 도구 필요 |
| 사용 분야 | 엔터프라이즈, 금융, 전자정부 등 | 스타트업, 모바일, 웹 개발 등 |
| 구분 | 장점 | 단점 |
|---|---|---|
| 표준성 | W3C 표준, 명확한 인터페이스 | 구조가 복잡하고 무거움 |
| 자동화 | 코드 자동 생성, 도구 지원 용이 | 가독성 낮고 사람이 직접 보기 어려움 |
| 확장성 | 데이터 타입, 바인딩 등 유연함 | REST에 비해 유연성 낮음 |
| 용어 | 설명 |
|---|---|
| SOAP | 메시지 전송 프로토콜 |
| WSDL | SOAP 서비스를 정의하는 설명서 |
| UDDI | WSDL 문서를 등록하고 찾는 디렉토리 시스템 |
| XSD (XML Schema Definition) | 데이터 타입 정의 규칙 |
WSDL은 "웹 서비스 사용 설명서"예요.
어떤 버튼이 있고, 누르면 어떤 결과가 나오는지 적혀 있어서
다른 컴퓨터가 그 설명서를 보고 자동으로 “아~ 이렇게 쓰면 되는구나!” 하고 알아서 써요.
WSDL은 SOAP 기반 웹 서비스를 설명하는 표준 XML 문서 형식으로,
입력값, 출력값, 전송 방식, 서비스 위치 등을 명확히 정의하여
시스템 간 자동 연동과 상호운용성 확보에 매우 중요한 역할을 합니다.
특히 기업간 통합(EAI), 전자정부, 금융 시스템처럼 엄격한 규약이 필요한 환경에서 여전히 필수 요소로 사용됩니다.