.NET 리모팅 서비스를 사용하는 클라이언트를 만듭시다. 클라이언트는 Windows Forms 형태의 응용 프로그램을 작성합시다.
.NET 리모팅 서비스를 사용하는 클라이언트도 System.Runtime.Remoting 어셈블리와 공용 라이브러리인 NumToEngLib 어셈블리를 참조 추가해야 합니다.
메인 폼의 Load 이벤트 핸들러를 추가하여 채널 생성 및 등록합니다.
private void MainForm_Load(object sender, EventArgs e) { HttpChannel hc = new HttpChannel(); ChannelServices.RegisterChannel(hc, false); }
변환 버튼의 Click 이벤트 핸들러를 추가합니다.
private void btn_convert_Click(object sender, EventArgs e)
이벤트 핸들러에서는 원격 서버로부터 원격 개체를 참조합니다. 이 때 Activator 클래스의 정적 메서드 GetObject를 이용합니다. 클라이언트 측에서 참조한 개체는 실제 개체가 아닌 원격 개체의 Proxy 개체입니다.
NumToEng nte = Activator.GetObject( typeof(NumToEng), "http://[서버 IP]:16000/MySvc") as NumToEng;
그리고 원격 개체를 참조한 nte의 Convert 메서드를 호출하여 결과를 레이블의 Text 속성을 지정합니다.
lb_digit.Text = nte.Convert((int)nud.Value);
이제 빌드한 후에 서버를 실행하고 클라이언트를 실행하여 테스트 하면 다음과 같이 동작함을 알 수 있습니다.
시연 화면을 보면 알 수 있듯이 서버 측의 원격 개체의 Convert 메서드가 동작함을 알 수 있습니다.
▶ MainForm.cs
using System; using System.Windows.Forms; using System.Runtime.Remoting.Channels.Http; using System.Runtime.Remoting.Channels; using NumToEngLib; namespace 클라이언트_예광탄 { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void btn_convert_Click(object sender, EventArgs e) { NumToEng nte = Activator.GetObject( typeof(NumToEng), "http:// [서버 IP]:16000/MySvc") as NumToEng; lb_digit.Text = nte.Convert((int)nud.Value); } private void MainForm_Load(object sender, EventArgs e) { HttpChannel hc = new HttpChannel(); ChannelServices.RegisterChannel(hc, false); } } }