WSDL은 SOAP 기반 웹서비스에서 **서비스의 모든 구조·규칙을 기술한 문서(계약서)**라고 생각하면 가장 이해가 쉬워요.
쉽게 말해 "이 웹서비스는 이런 함수들을 제공하고, 이렇게 호출해야 하고, 이렇게 응답한다" 라는 것을 XML로 정리한 파일입니다.
아주 직관적으로 설명해줄게요.
🟦 1. WSDL이란?
Web Services Description Language
→ 웹서비스 설명 언어
→ SOAP API의 설계서(인터페이스 정의서)
즉 WSDL은 SOAP 서비스의:
- 전달 방식
- 요청/응답 데이터 구조
- 사용할 주소(Endpoint)
- 사용할 프로토콜
- 에러 형태(fault)
등을 “기계가 읽을 수 있게” XML로 정의한 문서.
🟦 2. WSDL 문서가 필요한 이유
SOAP 서비스는 JSON처럼 유연하지 않고,
반드시 정해진 형식으로 데이터를 보내야 합니다.
그래서 WSDL이 있어야:
- 클라이언트는 어떤 XML을 보내야 하는지 알 수 있고
- 서버는 어떤 구조의 XML을 받아야 하는지 알 수 있음
- 개발 도구(e.g. Eclipse, JAX-WS, .NET)가 자동으로 클라이언트 코드 생성 가능
즉 SOAP 서비스는 WSDL 없으면 쓸 수 없다고 보면 돼요.
🟦 3. WSDL 문서의 기본 구성 요소
WSDL은 크게 4가지 구성 요소로 이해하면 됩니다.
✔ (1) types
서비스에 필요한 데이터 타입 정의 (XSD 기반)
예:
<xs:element name="UserRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
여기서 요청/응답에 사용되는 필드들을 정의함.
✔ (2) message
SOAP 메시지를 구성하는 파라미터 그룹 정의
예:
<message name="getUserRequest">
<part name="parameters" element="tns:UserRequest"/>
</message>
✔ (3) portType (= 인터페이스)
어떤 “기능(오퍼레이션)”을 제공하는지 정의
예:
<portType name="UserService">
<operation name="getUser">
<input message="tns:getUserRequest"/>
<output message="tns:getUserResponse"/>
</operation>
</portType>
Java로 표현하면 Interface 메서드 선언과 같은 역할.
✔ (4) binding
통신 방식과 SOAP 규칙 정의
예:
<binding name="UserServiceSoapBinding" type="tns:UserService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
여기에서:
- SOAP 1.1인지, 1.2인지
- document/literal 인지 RPC 인지
등을 정의.
✔ (5) service
실제 호출할 Endpoint URL 제공
예:
<service name="UserService">
<port name="UserServicePort" binding="tns:UserServiceSoapBinding">
<soap:address location="http://example.com/userService"/>
</port>
</service>
→ “여기로 호출하시면 됩니다”라고 알려주는 부분.
🟦 4. 전체 구조를 한 눈에 보면
문서 구조는 보통 다음 순서:
definitions
├── types
├── message
├── portType
├── binding
└── service
이 구조는 SOAP 서비스 개발과 연계의 핵심이에요.
🟦 5. WSDL을 사용하면 개발자는 어떻게 쓰나요?
✔ Java에서는 보통 이렇게 사용:
wsimport -keep http://example.com?wsdl
→ 자동으로
- 요청/응답 클래스
- 서비스 인터페이스
- 호출 stub
을 생성해줌.
그래서 개발자는 HTTP XML을 직접 만들 필요 없이:
UserService service = new UserService();
User port = service.getUserServicePort();
port.getUser("1234");
처럼 함수를 호출하듯 사용.
🟦 6. REST API와의 차이 (감 잡기 쉽게)
항목 SOAP + WSDL REST + JSON
| 규칙 | 매우 엄격 (정적) | 유연 (동적) |
| 문서 | WSDL 필수 | Swagger/OpenAPI 선택 |
| 데이터 | XML | JSON, XML 등 |
| 자동 코드 생성 | 매우 잘 됨 | Swagger 기반으로 가능 |
| 보안/트랜잭션 | 표준화 강함 | 유연해서 직접 설정 |
SOAP은 엄격, REST는 유연하다고 보면 됨.
🟦 핵심 요약
- WSDL은 SOAP 웹서비스의 설계서, 인터페이스 정의서
- 요청/응답 종류, 데이터 구조, URL 주소 등이 모두 정의됨
- 5가지 파트(types, message, portType, binding, service)로 구성
- wsimport 같은 도구로 클라이언트 코드 자동 생성 가능
- WSDL 없으면 SOAP 서비스 연계 불가
필요하면 WSDL 실제 문서를 예로 들고
"여기서 어떤 값이 요청 필드인지", "어떤 값이 응답인지" 같이
현업 운영자가 로그 분석·연계 확인할 때 보는 포인트도 알려줄게!
'서버' 카테고리의 다른 글
| 서버, 클라이언트, 웹서버와 WAS, 그리고 톰캣 (0) | 2025.09.16 |
|---|---|
| 게이트웨이(Gateway)와 프록시(Proxy) (0) | 2025.09.16 |