借助于基维百科给它的概念如下:

NET Remoting 是微软 .NET
Framework

中的一种网络通信技术,与 XML Web Service 分裂的是,它能够采纳 SOAP
以外的协定来报纸发表,而在伺服端和用户端之间所操作的点子近乎一致,用户端能够不用考虑采取的签订,即可存取伺服端所开放的物件。这些技能与是由Distributed
COM
所发展而来的,与DCOM最大的两样是,DCOM有限量使用
TCP Port,但.NET Remoting 能够选择接纳 TCP 或 HTTP
的主意通信,而资料能够运用 SOAP
或二进制传输方式在网络上流动,二进制的传输效率是 SOAP 所无法比的,但
SOAP 却足以拿走和 Web Service 相互交流的力量,由此 .NET Remoting
的布署弹性较大。

.NET Remoting 技术如今已组成到 Windows Communication
Foundation

中。

 

原理

.NET Remoting 使用了 ChannelSerialization
机制来串接两台机器间的物件,Channel 是承担处理互联网通信的部份,而
塞里alization 则是处理物件与串流动资金料的拍卖工作。

  • Channel 支援了 IPC(行程间通讯)、TCP 与 HTTP
    通信协定[\[1\]](http://zh.wikipedia.org/#cite_note-0)
  • Serialization 支援二进制(binary)或
    XML(SOAP)通信协定的资料串流[\[2\]](http://zh.wikipedia.org/#cite_note-1)

当伺服端设定好应用的坦途以及协定后,用户端必须求跟随伺服端的设定,并且依伺服端决定的活化模型来运转,而程式设计的不二法门和一般呼叫元件般简单。

public static void Main()
{
   RemotingConfiguration.Configure("Client.exe.config"); // configure Remoting configuration.
   RemotableType remoteObject = new RemotableType(); // create remoting object.
   Console.WriteLine(remoteObject.SayHello()); // call remoting object's method.
}

组态设定

.NET Remoting
的统一筹划理念,就是为着要简化互连网上的物件通信,而且要让开发人员不必太过分在通信的底层伤脑筋,因而在网络通信协定上做了众多的包裹,并且同意在Configuration File(app.config)中一直设定,或是由 .NET Remoting 的
Configuration API 来设定即可,故组态设定的选项复杂度较高,设计较复杂的
.NET Remoting 应用程式在组态的设定上数十次会一定复杂。

以下为设定 .NET Remoting 用户端的范例设定:

<configuration>
   <system.runtime.remoting>
      <application>
         <client>
            <wellknown 
               type="RemotableType, RemotableType"
               url="http://localhost:8989/RemotableType.rem"
            />
         </client>
      </application>
   </system.runtime.remoting>
</configuration>

活化模型

活化(Activation)是指用户端运行伺服端元件的法子,.NET Remoting
中帮忙了二种办法[\[3\]](http://zh.wikipedia.org/#cite_note-2)

  • Single-Call:在每2次用户端呼叫时都生成贰个履行个体。
  • Single-ton:在第③次呼叫时就成形执行个体,之后每一次呼叫都使用相同的实行个体。

物件传递

在 .NET Remoting 中,不论是传值或传址,每三个物件都不能够不要继承
System.MarshalByRefObject 连串,才能够使用 .NET Remoting
来传输[\[4\]](http://zh.wikipedia.org/#cite_note-3)

以下程式码为服务端的 Remoting 元件:

// RemotableType.cs
using System;
public class RemotableType : MarshalByRefObject // Remoting 物件必須繼承自 System.MarshalByRefObject 類別。
{
    public string SayHello()
    {
        Console.WriteLine("RemotableType.SayHello() was called!");
        return "Hello, world";
    }
}

 

相关文章

网站地图xml地图