프로그래밍/WPF, Silverlight

[Silverlight] 1/4. 한 프로젝트에서 웹서비스 만들기

당근천국 2011. 4. 27. 00:29
1/4. 한 프로젝트에서 웹서비스 만들기
2/4. DB연결 하기
3/4. 리스트 주고 받고 - 서버 탐색기와 린큐를 이용한 방법
4/4. 리스트 주고 받고 - 클래스를 이용한 방법

실버라이트에서 DB를 연결하기위해서 일반적으로 웹서비스를 이용합니다.
이 웹서비스를 이용하는 방법으로 같은 프로젝트에서 만드는 방법과 다른 프로잭트에서 만드는 방법이 있습니다.

같은 프로젝트를 만드는 방법은 해당 프로젝트의 전용 웹서비스로 사용할때 주로 사용하고 다른 프로젝트에서 만드는 방법은 솔루션같은 곳에서 사용할때 많이 사용합니다.

요번 포스트에서는 한프로젝트에서 사용하는 방법을 알아보도록 하겠습니다.


 
1. 테스트용 프로젝트 만들기


요런 모양으로 만듭니다.


 
2.프로젝트에 웹서비스 추가하기

같은 프로젝트에서 웹서비스를 사용할때는 WCF라는 것을 이용합니다.
3.5까지는 'ASP.NET 웹서비스'라는 것이 있는데 4.0부터 WCF로 통합됬는지 보이지 않습니다 ㅡ.-;;;

하지만 WCF 서비스도 우리가 원하는 동작을 하니 상관은 없습니다 ㅎㅎㅎ

그러면 'WCF서비스'를 추가 해봅시다.

실버라이트를 생성하면 테스트용 웹프로젝트가 생성됩니다. 이 웹프로젝트에서 항목을 추가 시킵니다.

'WCF 서비스'를 찾아 추가 합니다.(저는 기본 이름으로 사용하겠습니다.)


Service1.svc.cs 파일을 열어 다음과 같은 코드를 추가 합니다.

 

public string strTest( string strGetData)
{
	strGetData = strGetData + " 라는 데이터가 왔어요";
	return "헬로~우~ 시드니";
}



IService1.cs를 열어 아까 만든 메소드가 웹서비스에 표시될수 있게 스샷과 같이 추가 합니다.

[OperationContract]
string strTest(string strGetData);


 
 
3.웹서비스 연결하기

실버라이트 프로젝트에서 참조에서 오른쪽 클릭을 한후 '서비스 참조 추가'를 선택합니다.

검색으로 누르면 자동으로 웹서비스가 선택됩니다. 이동을 누르면 로딩이 후 웹서비스가 표시됩니다.
만약 이동을 눌렀는데 서비스를 못찾는다면 솔루션을 빌드한후 다시 시도 하시기 바랍니다.


정상적으로 추가 됬군요.


 
4. 웹서비스 확인하기

웹서비스 객체를 전역으로 선언하고 프로그램 시작점에서 다운로드 완료 이벤트를 연결 해줍니다.

실버라이트에서 웹서비스를 이용할때는 무조건 비동기로 데이터를 받아오기때문에 이벤트를 꼭 연결해 주어야 합니다 ㅎㅎㅎ
(WCF서비스라 그러는 건지는 모르겠군요.)


//웹서비스 객체
ServiceReference1.Service1Client sc = new ServiceReference1.Service1Client();

public MainPage()
{
	InitializeComponent();
	sc.strTestCompleted +=new EventHandler(sc_strTestCompleted);
}

void sc_strTestCompleted(object sender, ServiceReference1.strTestCompletedEventArgs e)
{
	//데이터가 오면 처리할 것들
	txtC.Text = e.Result;
}

이렇게 만들고 버튼에 웹서비스 요청코드를 넣어 봅시다.

		private void butGet_Click(object sender, System.Windows.RoutedEventArgs e)
		{
			//웹서비스로 데이터를 날리자~

			//A내용을 보내 봅시다.
			sc.strTestAsync(txtA.Text);
		}

이제 테스트를 해봅시다.

헛...

실수로 웹서비스에서 입력받은 값을 출력하도록 안했군요 ㅡ.-;;;;;
어찌됬건 정상적으로 웹서비스가 돌아가는 것을 알수 있습니다.

웹서비스는 꼭 DB연결이 아니더라도 쓸때가 많으니 확실하게 집고 넘어갑시다 ㅎㅎㅎ

다음글로 휘리릭~

p.s. 살짝쿵 수정해보았습니다.
A에 글을 입력하고 '메시지'를 누르신후 잠시 기다리시면 메시지 박스가 출력됩니다