SOAP WebService 만들기 및 테스트

-- ASP.NET 2012. 3. 9. 16:42
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
WebService를 만들 일이 생겨서 Sample WebService를 한번 만들어봤다.


1. 환경설정

OS : MS Windows 7 Professional
Dev. Tool : MS Visual Studio 2010 Professional

우선 local에서 개발 후 테스트를 하기 위해 아래와 같이 IIS7 설정을 해야 한다.

제어판 > 프로그램 및 기능 > Windows 기능 사용 / 사용 안 함 아래의 항목 체크
    
- World Wide Web 서비스 > 응용 프로그램 개발 기능 > .NET 확장성
- World Wide Web 서비스 > 응용 프로그램 개발 기능 > ASP
- World Wide Web 서비스 > 응용 프로그램 개발 기능 > ASP.NET
- 웹 관리 도구
- 웹 관리 도구 > IIS 6 관리 호환성 > IIS 메타베이스 및 IIS 6 구성 호환성
- 웹 관리 도구 > IIS 관리 콘솔


2. WebService 생성

1) 새 웹 응용프로그램 만들기

먼저 Visual Studio 2010을 실행하여 아래와 같이 새 웹 사이트를 만든다.

- 파일 > 새 웹 사이트 > 설치된 템플릿: Visual C# > .NET Framework 3.5 선택 > ASP.NET 웹 서비스 > 찾아보기
- 로컬 Internet Information Server 창에서 로컬IIS Tab을 선택하고, 새 웹 응용프로그램 만들기 Click
- WebSvc1 입력

2) 웹서비스 추가

- 솔루션탐색기 오른쪽 버튼 > 새 항목 추가 > Visual C# 선택 > 웹 서비스 선택
- 이름: TestWS > 다른 파일에 코드 입력 추가 > 추가

아래의 항목이 생겼는지 확인
App_Code / TestWS.cs
Scripts / TestWS.asmx

3) 인터페이스 추가

TestWS.cs를 열면 HelloWorld 웹메소드(WebMethod)가 보인다. 이 웹메소드를 클라이언트에서 호출하는 것이다.
HelloWorld 웹메소드를 삭제하고 아래의 코드를 입력하자.

[WebMethod(Description = "Could you get owner's name. (Parameter : no existed)")]
public string getOwnerName()
{
    return "tiger";
}


[WebMethod]
public int Add(int nNumber1, int nNumber2)
{
    return nNumber1 + nNumber2;
}


Ctrl + F5를 눌러 실행해보면 getOwnerName, Add 웹메소드가 노출된 웹서비스를 확인할 수 있다.


3. 웹서비스 이용

생성한 웹서비스를 이용하기 위해 Windows Forms 응용 프로그램을 하나 만든다.
Windows Forms 응용 프로그램 만드는 순서는 생략하기로 하겠다.

1) 웹서비스 참조 추가

우리가 사용해야 할 웹서비스를 해당 Windows Forms 응용 프로그램에 추가해야 한다.

- 솔루션탐색기 오른쪽 버튼 > 서비스 참조 추가 > 고급 > 웹 참조 추가
- URL에 http://localhost/WebSvc1/Scripts/TestWS.asmx 추가
- 아래 브라우저 창에 웹서비스 내용이 나오는지 확인
- 웹 참조 이름에 적절한 이름 추가 (여기서는 localhost로 입력)
- 참조 추가 버튼 클릭

아래의 항목이 생겼는지 확인
Web References / localhost

2) 웹서비스 이용

Form에 getOwnerName, Add라는 버튼을 만들고, Add에서 사용할 숫자를 입력받을 TextBox 2개를 만들자.
그리고 나서 아래의 코드를 입력한다.

private void btnGetOwnerName_Click(object sender, EventArgs e)
{
    localhost.TestWS svc = new localhost.TestWS();
    string strResult = svc.getOwnerName();

    MessageBox.Show(strResult);
}

private void btnAdd_Click(object sender, EventArgs e)
{
    localhost.TestWS svc = new localhost.TestWS();
    int nResult = new Add(int.Parse(tbNum1.Text), int.Parse(tbNum2.Text));

    MessageBox.Show(nResult.ToString());
}


코딩 후 프로그램을 실행하여 각각의 버튼이 제대로 동작하는지 확인한다.

다음에는 웹서비스 보안 및 결과값을 JSON으로 출력하는 것에 대해 고민해보려고 한다.
여기에다 추가를 할 지 새로운 스레드로 작성할지는 아직 정하지 않았다.

posted by 어린왕자악꿍