博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
何为.Net Remoting
阅读量:7079 次
发布时间:2019-06-28

本文共 1795 字,大约阅读时间需要 5 分钟。

借助基维百科给它的定义如下:

NET Remoting 是微软 中的一种网络通讯技术,与 XML Web Service 不同的是,它可以使用 SOAP 以外的协定来通讯,而在伺服端和用户端之间所操作的方法近乎相同,用户端可以不必考虑使用的协定,即可存取伺服端所开放的物件。这个技术与是由所发展而来的,与DCOM最大的不同是,DCOM有限制使用 TCP Port,但.NET Remoting 可以选择使用 TCP 或 HTTP 的方式通讯,而资料可以利用 SOAP 或二进制传输方式在网络上流动,二进制的传输效能是 SOAP 所不能比的,但 SOAP 却可以得到和 Web Service 相互沟通的能力,因此 .NET Remoting 的设计弹性较大。

.NET Remoting 技术目前已整合到 中。

 

原理

.NET Remoting 使用了 ChannelSerialization 机制来串接两台机器间的物件,Channel 是负责处理网络通讯的部份,而 Serialization 则是处理物件与串流资料的处理工作。

  • Channel 支援了 IPC(行程间通讯)、TCP 与 HTTP 通讯协定
  • Serialization 支援二进制(binary)或 XML(SOAP)通讯协定的资料串流

当伺服端设定好使用的通道以及协定后,用户端必须要跟随伺服端的设定,并且依伺服端决定的活化模型来启动,而程式设计的方法和一般呼叫元件般简单。

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 用户端的范例设定:

活化模型

活化(Activation)是指用户端启动伺服端元件的方式,.NET Remoting 中支援了两种方式

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

物件传递

在 .NET Remoting 中,不论是传值或传址,每一个物件都必须要继承 System.MarshalByRefObject 类别,才可以利用 .NET Remoting 来传输

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

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

 

转载地址:http://jypml.baihongyu.com/

你可能感兴趣的文章
tensorflow 1.0 学习:参数初始化(initializer)
查看>>
kvm虚拟化学习笔记(七)之kvm虚拟机克隆
查看>>
apache2.4.27编译安装
查看>>
Linux的chattr与lsattr命令详解
查看>>
二、文件系统管理
查看>>
Starting MySQL. ERROR! Manager of pid-file quit without updating file.
查看>>
Python——创建更加牛逼的对象
查看>>
Ubuntu16.04安装Kafka集群
查看>>
keeplive+haproxy+nginx
查看>>
将ACCESS数据批量导入SQL SERVER
查看>>
Scala 高级算子
查看>>
海南金垦赛博信息科技有限公司获智慧农业解决方案供应商新锐奖
查看>>
PHP浅拷贝、深拷贝简析
查看>>
mysql大量TIME_WAIT解决办法
查看>>
101个MySQL调试和优化技巧
查看>>
给MariaDB开启日志审计功能
查看>>
DW快速去除tppabs冗余代码
查看>>
AngularJs(3)
查看>>
HT for Web的HTML5树组件延迟加载技术实现
查看>>
MySQL备份,恢复方案,mysqlbinlog,mysqldump,主从,主主复制
查看>>