A colossal Dreamer: GR鐵塔-天生我材

make WebService Client with WSDL by C# 본문

Development

make WebService Client with WSDL by C#

江多林 2009. 10. 19. 00:01
wsdl 로부터 C# 클라이언트 프로그램 작성 도움말

콘솔 응용 프로그램 클라이언트 만들기
http://msdn.microsoft.com/ko-kr/library/hk7y1596.aspx

웹서비스
Web서버와의 통신으로
원격시스템의 메소드를 호출하는 것을 말한다.

여기서 통신방식은 SOAP(xml)/ HTTP-GET/ HTTP-POST/ HTTP-JSON 등 이 될 수 있다.
일반적으로는 SOAP(xml)을 활용하여 통신한다.
HTTP-POST는 기본적으로 사용가능하며, HTTP-GET 이나 HTTP-JSON 은 서버에 추가 설정을 해줘야 가능하다.(iis 기준)

또, 원격시스템의 메소드를 호출하는 형식(프로토콜)으로는 고전적인 코바(CORBA; Common ORB Architecture)도 있고,
JMI(Java Metadata Interface) 도 있고, RPC(Remote Procedure Call) 등이 있다.
그 방식이 어떤 것이든 간에 기본적인 아키텍처는
호출하는 쪽은 Client가 되고 호출 당하는 쪽은 Server가 되어 처리하게 되며,
일반적으로 Server 쪽에서는 다중호출 환경(멀티태스킹)을 제공하고,
Client에서는 proxy 라는 가상의 객체를 통해서 서버의 자원(메소드, 객체)에 접근한다.

원격시스템의 메소드를 호출하는 형식의 하나인 WebService는 시스템의 환경을 제약하므로써
오히려 많은 자유도를 제공한다.
두 가지 제약을 사항이 있다.
1. 서버는 웹서버이어야 한다.(WAS 포함)
   - 이 기종간의 통신의 경우에도 웹서버(WAS)만 설치 가능하면 통신이 가능해 진다.
2. 통신방식은 기본적으로 http 프로토콜 상에서 구현된다.
   - 웹프록시 설정을 통해서 통신과정을 모니터링 할 수도 있고,
   - 방화벽 상황에서 웹프록시를 통해 방화벽을 회피할 수도 있다.

WSDL - Web Service Description Language
웹서비스를 기술하는 언어라는 의미로
해당 웹서비스의 접속정보(Ip주소/ port 등)로부터
제공 메소드에 대한 정보들과
필요한 proxy 객체들에 대해서 기술된 문서이다.
이 WSDL 만 있다면, 서버의 플랫폼이나 솔루션에 관계없이 Client 프로그램 작성이 가능하고,
표준화된 툴을 통해서 해당 플랫폼(C#, java 같은 언어 또는 .NetFramework 같은 프레임웍)에 대한
해당 웹서비스에 대한 호출환경을 구성할 수 있다.

몇 줄 더한 다는 것이 꽤 길어졌는데..
요약하면, WSDL로 웹서비스를 호출하는 C# 클라언트 소스 코드를 생성할 때.
wsdl.exe 를 사용하면 그만이라는 것이다.
-wsdl.exe의 설치위치 : C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\wsdl.exe
-참고: VisualStudio에서 기본 제공 툴의 "Visual Studio 2008 명령 프롬프트" 이 실행된 콘솔에서 호출 가능하다.

WAS: Web Application Server

--------------------------------------------------------------------------------
Always, Any time, Everytime think about who remember U. - Top Chul
Respectable Heavy Rain x2