小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C# Remoting的一個(gè)簡(jiǎn)單例子

 水底の小魚 2009-05-06
 
2007-10-26 09:07
.Net對(duì)于遠(yuǎn)程調(diào)用提供了兩種方法:Remoting和WebService。
WebService現(xiàn)在是如火如荼,特別是有一種比較流行的架構(gòu):Winform+WebService(Java、.Net),
我曾經(jīng)做過的一個(gè)項(xiàng)目就是這樣子的,分布式、跨平臺(tái)、極佳的用戶體驗(yàn),這三者結(jié)合起來是不是很誘人?
不過,這里我只說Remoting,Remoting具有以下特點(diǎn):
1、Tcp通道的Remoting速度非???br>2、雖然是遠(yuǎn)程的,但是非常接近于本地調(diào)用對(duì)象
3、可以做到保持對(duì)象的狀態(tài)
4、沒有應(yīng)用程序限制,可以是控制臺(tái),winform,iis,windows服務(wù)承載遠(yuǎn)程對(duì)象
缺點(diǎn):
1、不是標(biāo)準(zhǔn)的應(yīng)用,因此有平臺(tái)限制
2、脫離iis的話需要有自己的安全機(jī)制
可以看出來,比起WebService,Remoting更適合于中小型局域網(wǎng)應(yīng)用,而不適用于企業(yè)級(jí)的應(yīng)用。
下面給出一個(gè)極其簡(jiǎn)單的Sample:
Remoting用的對(duì)象:
1namespace RemoteSample
2{
3    public class RemoteObject : System.MarshalByRefObject
4    {
5        public RemoteObject()
6        {
7             System.Console.WriteLine("New Referance Added!");
8         }

9
10        public int sum(int a, int b)
11        {
12            return a + b;
13         }

14     }

15}
將其編譯為一個(gè)lib文件:csc /t:library RemoteObject.cs

Server端:
1using System;
2using System.Runtime;
3using System.Runtime.Remoting;
4using System.Runtime.Remoting.Channels;
5using System.Runtime.Remoting.Channels.Tcp;
6using RemoteSample;
7
8namespace RemoteSampleServer
9{
10    public class RemoteServer
11    {
12        public static void Main(String[] args)
13        {
14              TcpServerChannel channel = new TcpServerChannel(6666);
15              ChannelServices.RegisterChannel(channel);
16              RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject),
17                 "RemoteObject", WellKnownObjectMode.SingleCall);
18              System.Console.WriteLine("Press Any Key");
19              System.Console.ReadLine();
20          }

21     }

22}
將其編譯為一個(gè)exe文件:csc /r:System.Runtime.Remoting.dll /r:RemoteObject.dll RemoteServer.cs

Client端:
1using System;
2using System.Runtime.Remoting;
3using System.Runtime.Remoting.Channels;
4using System.Runtime.Remoting.Channels.Tcp;
5using RemoteSample;
6
7namespace RemoteSampleClient
8{
9    public class RemoteClient
10    {
11        public static void Main(string[] args)
12        {
13             ChannelServices.RegisterChannel(new TcpClientChannel());
14             RemoteObject remoteobj = (RemoteObject)Activator.GetObject(typeof(RemoteObject),
15            "tcp://localhost:6666/RemoteObject");
16             Console.WriteLine("1 + 2 = " + remoteobj.sum(1,2).ToString());
17             Console.ReadLine();
18         }

19     }

20}
同樣的,將其編譯為exe文件:csc /r:System.Runtime.Remoting.dll /r:RemoteObject.dll RemoteClient.cs

好了,一次運(yùn)行生成的RemoteServer.exe和RemoteClient.exe,你就會(huì)發(fā)現(xiàn)原來Remoting是這樣簡(jiǎn)單。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多