본문 바로가기

.NET(C#,ASP)

VS2010 WebService 만들기(비동기 웹서비스 호출)

== 웹서비스 만들기 ==

1. 새 프로젝트 만들기에서 웹서비스를 선택하여 만든다.
2. Service1.asmx을 오른클릭하여 [브라우저보기에서 보기]를 선택하여 서비스 URL를 알아낸다.
3. 현재의 웹서비스 솔루션에 윈폼 프로젝트를 추가한다.
4. 윈폼에 버튼 하나, 텍스트박스 하나를 추가한다.
5. 윈폼 프로젝트의 참조에서 서비스추가를 선택하고 주소에 2번의 서비스 URL을 적는다.
6. 서비스가 찾아지면 하단 [고급]버튼을 눌러 서비스 참조 설정 화면으로 넘어간다.
7. 다시 화면 하단의 [웹 참조 추가] 버튼을 눌러 서비스 URL을 다시 입력한다.
8. 서비스가 찾아지면 [참조 추가] 버튼을 눌러 웹 참조(Web References)를 추가한다.
9. 윈폼에서 서비스 호출 결과를 보여주는 코딩을 하고 테스트해보자.



== 비동기로 웹서비스 호출하기 ==

위 샘플에는 비동기로 웹서비스를 호출하는 코드가 포함되어 있다.
웹서비스는 기본적으로 웹서비스를 생성했을 때 제공되는 HelloWorld를 사용한다.
웹서비스를 만들어놓으면 호출하는 쪽에서 볼 때 자동으로 비동기 메쏘드인 HelloWorldAsync()도 생성되어 있는것을 볼 수 있다.

1. 비동기로 웹서비스를 호출하기 위해서는 웹서비스를 전역으로 선언해야 한다.
localhost.Service1 svc;
2. 웹서비스를 비동기로 호출 후 비동기 결과를 받아낼 이벤트를 등록한다.
svc = new localhost.Service1();
svc.HelloWorldCompleted += new localhost.HelloWorldCompletedEventHandler(svc_HelloWorldCompleted);
3. 비동기 결과 이벤트가 발생했을 때 실행할 메쏘드를 구현한다.
private void svc_HelloWorldCompleted(object sender, localhost.HelloWorldCompletedEventArgs e)
{
    textBox1.Text = "비동기호출 = " + e.Result;
}
4. 마지막으로 웹서비스를 비동기로 호출하자.
private void button2_Click(object sender, EventArgs e)
{
    svc.HelloWorldAsync();           
}