■ 닷넷 리모팅을 사용하는 방법을 보여준다.
[서버 실행 프로그램]
[클라이언트 실행 프로그램]
[TestRemotingServer 프로젝트]
▶ HelloWorldService.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
using System; using System.Text; namespace TestRemotingServer { /// <summary> /// Hello World 서비스 /// </summary> public class HelloWorldService : MarshalByRefObject { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Public #region Hello 말하기 - SayHello() /// <summary> /// Hello 말하기 /// </summary> /// <returns>Hello</returns> public string SayHello() { Console.WriteLine("클라이언트 요청 처리를 시작합니다."); StringBuilder stringBuilder = new StringBuilder(); for(int i = 0; i < 50000; i++) { stringBuilder.Append("0123456789"); } Console.WriteLine("클라이언트 요청 처리를 종료합니다."); return stringBuilder.ToString(); } #endregion } } |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using System.Runtime.Remoting.Channels.Http; using System.Runtime.Remoting.Channels.Ipc; namespace TestRemotingServer { /// <summary> /// 프로그램 /// </summary> public class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { Console.WriteLine("닷넷 리모팅 서버 애플리케이션..."); TcpChannel tcpChannel = new TcpChannel(8080); HttpChannel httpChannel = new HttpChannel(8088); IpcChannel ipcChannel = new IpcChannel("192.168.0.2:8089"); ChannelServices.RegisterChannel(tcpChannel , false); ChannelServices.RegisterChannel(httpChannel, false); ChannelServices.RegisterChannel(ipcChannel , false); RemotingConfiguration.RegisterWellKnownServiceType ( typeof(HelloWorldService), "HelloWorldService.rem", WellKnownObjectMode.SingleCall ); Console.WriteLine("서비스 중단을 위해 아무 키나 누르시기 바랍니다..."); Console.ReadKey(); } #endregion } } |
[TestRemotingClient 프로젝트]
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
using System; using System.Diagnostics; using System.Runtime.Remoting; using TestRemotingServer; namespace TestRemotingClient { /// <summary> /// 프로그램 /// </summary> public class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { Console.WriteLine("닷넷 리모팅 클라이언트 애플리케이션..."); Stopwatch stopWatch = new Stopwatch(); Console.WriteLine("리모팅 통신을 시작합니다."); stopWatch.Start(); RemotingConfiguration.RegisterWellKnownClientType ( typeof(HelloWorldService), "tcp://192.168.0.2:8080/HelloWorldService.rem" ); HelloWorldService helloWorldService = new HelloWorldService(); Debug.Assert(RemotingServices.IsTransparentProxy(helloWorldService) == true); for(int i = 0; i < 100; i++) { string result = helloWorldService.SayHello(); } stopWatch.Stop(); Console.WriteLine("리모팅 통신을 종료합니다."); Console.WriteLine("리모팅 통신 시간 : " + stopWatch.Elapsed.ToString()); Console.ReadKey(); } #endregion } } |