天天看點

C# Remoting的一個簡單例子 C# Remoting的一個簡單例子

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的一個簡單例子