C# Remoting的一個簡單例子
.Net對于遠端調用提供了兩種方法:Remoting和WebService。
WebService現在是如火如荼,特别是有一種比較流行的架構:Winform+WebService(Java、.Net),
我曾經做過的一個項目就是這樣子的,分布式、跨平台、極佳的使用者體驗,這三者結合起來是不是很誘人?
不過,這裡我隻說Remoting,Remoting具有以下特點:
1、Tcp通道的Remoting速度非常快
2、雖然是遠端的,但是非常接近于本地調用對象
3、可以做到保持對象的狀态
4、沒有應用程式限制,可以是控制台,winform,iis,windows服務承載遠端對象
缺點:
1、不是标準的應用,是以有平台限制
2、脫離iis的話需要有自己的安全機制
可以看出來,比起WebService,Remoting更适合于中小型區域網路應用,而不适用于企業級的應用。
下面給出一個極其簡單的Sample:
Remoting用的對象:
namespace RemoteSample
2
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 {
3
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 public class RemoteObject : System.MarshalByRefObject
4
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 {
5
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 public RemoteObject()
6
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 {
7
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 System.Console.WriteLine("New Referance Added!");
8
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 }
9
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 10
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 public int sum(int a, int b)
11
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 12
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 return a + b;
13
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 14
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 }
15
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 }
将其編譯為一個lib檔案:csc /t:library RemoteObject.cs
Server端:
1
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 using System;
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 using System.Runtime;
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 using System.Runtime.Remoting;
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 using System.Runtime.Remoting.Channels;
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 using System.Runtime.Remoting.Channels.Tcp;
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 using RemoteSample;
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 namespace RemoteSampleServer
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 public class RemoteServer
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 public static void Main(String[] args)
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 TcpServerChannel channel = new TcpServerChannel(6666);
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 ChannelServices.RegisterChannel(channel);
16
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject),
17
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 "RemoteObject", WellKnownObjectMode.SingleCall);
18
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 System.Console.WriteLine("Press Any Key");
19
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 System.Console.ReadLine();
20
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 }
21
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 22
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 将其編譯為一個exe檔案:csc /r:System.Runtime.Remoting.dll /r:RemoteObject.dll RemoteServer.cs
Client端:
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 namespace RemoteSampleClient
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 public class RemoteClient
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 public static void Main(string[] args)
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 ChannelServices.RegisterChannel(new TcpClientChannel());
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 RemoteObject remoteobj = (RemoteObject)Activator.GetObject(typeof(RemoteObject),
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 "tcp://localhost:6666/RemoteObject");
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 Console.WriteLine("1 + 2 = " + remoteobj.sum(1,2).ToString());
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 Console.ReadLine();
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子 同樣的,将其編譯為exe檔案:csc /r:System.Runtime.Remoting.dll /r:RemoteObject.dll RemoteClient.cs
好了,一次運作生成的RemoteServer.exe和RemoteClient.exe,你就會發現原來Remoting是這樣簡單。
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子
C# Remoting的一個簡單例子