본문 바로가기
데스크탑/.NET

[2.0] WSDL 문서로 웹서비스 제공 클래스 만들기

by 브래드.권 2013. 4. 30.

 

 

 

Version 1.1

문서 이력

2013-04-05 최초 작성 Ver 1.0

2013-05-24 wsdl.exe 설명 중 스키마 include / import 부분 수정 Ver 1.1

 

 

 

웹서비스 클래스 생성하여 자동 WSDL 문서 생성이 아닌 WSDL 문서를 작성한 후 웹서비스 제공클래스를 만드는 방법입니다. 이 방법은 찾아보니 잘 나와있지는 않더군요.

 

우선, 작성된 WSDL 문서를 준비합니다.

그리고 C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin 폴더로 가서 wsdl.exe 가 있는지확인합니다. (저는 Visual Studio 2008 이 설치되어 있어 v6.0A 가 있으나 이는 버전에 따라 틀릴 수 있습니다.)

 

있다면, 편의를 위해 wsdl.exe 가 있는 경로를 환경변수 – path” 에 추가해 줍니다.

명령 프롬프트 창(cmd) 를 띄우고 wsdl.exe 를 실행해서 아래와 같이 나오는지 확인합니다.

 

 

 

이제 명령 프롬프트 창에서 준비한 WSDL 문서가 있는 경로로 이동합니다.

)C:\wsdl\test.wsdl

 

아래와 같이 wsdl.exe 를 실행합니다.

 

 

/* WSDL 문서만 있고 C# 클래스로 만들 경우 (기본은 C# 입니다.) */

wsdl.exe /serverInterface test.wsdl

 

/* VB 클래스로 만들 경우 (/serverInterface 옵션은 /si 로 축약해서 사용 가능) */

wsdl.exe /si /l:VB test.wsdl

 

/* WSDL 문서 Types 에 스키마가 import 되어 있을 경우 */

wsdl.exe /si test.wsdl info.xsd infoReply.xsd

 

 

그러면 아래와 같이 “’C:\wsdl\ServiceInterfaces.cs’ 파일을 쓰는 중입니다.” 라는 메시지가 나오며 종료됩니다.

 

 

이제 c:\wsdl ServiceInterfaces.cs 파일이 생성되어 있습니다.

이 파일은 Interface 이며 웹서비스 제공 클래스를 하나 만들어서 구현을 해서 쓰면됩니다.

 

이 파일을 웹 프로젝트에서 App_Code 에다 끌어다 넣습니다.

 

프로젝트에 웹서비스를 하나 추가하고 웹서비스 클래스는 ServiceInterfaces 인터페이스를 구현합니다.

아래 코드의 빨간 부분이 추가되어야 하는 부분입니다.

 

 

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Xml.Linq;

 

/// <summary>

/// WebService의 요약 설명입니다.

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

// ASP.NET AJAX를 사용하여 스크립트에서 이 웹 서비스를 호출하려면 다음 줄의 주석 처리를 제거합니다.

// [System.Web.Script.Services.ScriptService]

public class WebService : System.Web.Services.WebService, IServiceSoap

{

 

    public WebService () {

 

        //디자인된 구성 요소를 사용하는 경우 다음 줄의 주석 처리를 제거합니다.

        //InitializeComponent();

    }

 

    [WebMethod]

    public string HelloWorld() {

        return "Hello World";

    }

 

    [WebMethod]

    public string test_Retrieve(string input)

    {

        return "This is test";

    }

   

}

 

 

WebService.asmx 를 브라우저 보기해 보면 아래와 같이 정상적으로 웹서비스가 제공되고 있음을 확인할 수 있습니다.