Remoting
编辑

目 录

1简介

2主要元素

3两种通道

4激活方式

5对象定义

6服务器

7客户

8基础补充

9小结

1简介

什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式。从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下。Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界。
在Remoting中是通过通道(channel)来实现两个应用程序域之间对象的通信的。首先,客户端通过Remoting,访问通道以获得服务端对象,再通过代理解析为客户端对象。这就提供一种可能性,即以服务的方式来发布服务器对象。远程对象代码可以运行在服务器上(如服务器激活的对象和客户端激活的对象),然后客户端再通过Remoting连接服务器,获得该服务对象并通过序列化在客户端运行。
在Remoting中,对于要传递的对象,设计者除了需要了解通道的类型和端口号之外,无需再了解数据包的格式。这既保证了客户端和服务器端有关对象的松散耦合,同时也优化了通信的性能。

2主要元素

3两种通道

4激活方式

在访问远程类型的一个对象实例之前,必须通过一个名为Activation的进

程创建它并进行初始化。这种客户端通过通道来创建远程对象,称为对象的激活。在Remoting中,远程对象的激活分为两大类:服务器端激活和客户端激活。

服务器端激活,又叫做WellKnow方式,很多又翻译为知名对象。为什么称为知名对象激活模式呢?是因为服务器应用程序在激活对象实例之前会在一个众所周知的统一资源标识符(URI)上来发布这个类型。然后该服务器进程会为此类型配置一个WellKnown对象,并根据指定的端口或地址来发布对象。. Net Remoting把服务器端激活又分为SingleTon模式和SingleCall模式两种。
SingleTon模式:此为有状态模式。如果设置为SingleTon激活方式,则Remoting将为所有客户端建立同一个对象实例。当对象处于活动状态时, SingleTon实例会处理所有后来的客户端访问请求,而不管它们是同一个客户端,还是其他客户端。SingleTon实例将在方法调用中一直维持其状态。举例来说,如果一个远程对象有一个累加方法(i=0;++i),被多个客户端(例如两个)调用。如果设置为SingleTon方式,则第一个客户获得值为1,第二个客户获得值为2,因为他们获得的对象实例是相同的。如果熟悉Asp .Net的状态管理,我们可以认为它是一种Application状态。
SingleCall模式:SingleCall是一种无状态模式。一旦设置为SingleCall模式,则当客户端调用远程对象的方法时, Remoting会为每一个客户端建立一个远程对象实例,至于对象实例的销毁则是由GC自动管理的。同上一个例子而言,则访问远程对象的两个客户获得的都是1。我们仍然可以借鉴Asp .Net的状态管理,认为它是一种Session状态。
客户端激活。与WellKnown模式不同, Remoting在激活每个对象实例的时候,会给每个客户端激活的类型指派一个URI。客户端激活模式一旦获得客户端的请求,将为每一个客户端都建立一个实例引用。SingleCall模式和客户端激活模式是有区别的:首先,对象实例创建的时间不一样。客户端激活方式是客户一旦发出调用的请求,就实例化;而SingleCall则是要等到调用对象方法时再创建。其次,SingleCall模式激活的对象是无状态的,对象生命期的管理是由GC管理的,而客户端激活的对象则有状态,其生命周期可自定义。其三,两种激活模式在服务器端和客户端实现的方法不一样。尤其是在客户端,SingleCall模式是由 GetObject()来激活,它调用对象默认的构造函数。而客户端激活模式,则通过CreateInstance()来激活,它可以传递参数,所以可以调用自定义的构造函数来创建实例。

5对象定义

6服务器

{
{
}
}

7客户

{
}

8基础补充

{
}
{
}
{
}
{
{
}
}
{
{
}
}
{
}
{
}
{
{
}
{
}
}
{
{
}
{
}
}

.net remoting 技术相关推荐

  1. Remoting技术简介

    一 Remoting技术出现的背景 1)分布式应用需求的迅速增长(Peer-to-Peer, Grid等技术的出现) 2)原有的C/S, B/S模式和技术已经不能胜任(串口RS232,Socket,R ...

  2. 跟我一起学WCF(2)——利用.NET Remoting技术开发分布式应用

    一.引言 上一篇博文分享了消息队列(MSMQ)技术来实现分布式应用,在这篇博文继续分享下.NET平台下另一种分布式技术--.NET Remoting. 二..NET Remoting 介绍 2.1 . ...

  3. 使用Remoting技术

    在Wifi网络环境下,我们常用WebService作为服务程序构建分布式的应用程序系统,但是现在越来越多的应用在GPRS网络,因此WebService访问性能的问题渐渐体现出来.为了解决GPRS网络下 ...

  4. 在使用 .NET Remoting 技术开发跨进程通信时可能遇到的各种异常

    在使用 .NET Remoting 开发跨进程应用的时候,你可能会遇到一些异常.因为这些异常在后验的时候非常简单但在一开始有各种异常烦扰的时候却并不清晰,所以我将这些异常整理到此文中,方便小伙伴们通过 ...

  5. Remoting 技术

    Remoting 是基于TCP连接的,要实现她要先创建一个类库,然后将类库的dll文件引用到服务端和客户端 类库的主要代码: 创建一个类库叫Compute ,在类库中创建一个接口ICompute IC ...

  6. Remoting技术使用配置文件示例

    1.创建类库工程RemotableType.dll (提供remotable 类型). RemotableType.cs using System; using System.Collections. ...

  7. 基于.net平台remoting、DB2技术的大型分布式HIS系统架构及开发(项目架构师方向)...

    课程链接:http://***/goods.php?id=131 培训定位: 适合于.net方向有一定的工作经验提高用.本次课程涉及到系统架构.DB2.抽象工厂.组件式编程.基于角色和个人的混合授权思 ...

  8. PostSharp的AOP设计在.NET Remoting中的应用

    在.NET Remoting技术中实现用户的验证和授权并不那么容易,尤其是将其宿主在windows service这样的环境中的时候.大部分时候,我们都需要实现自定义的验证方式.具体来说也不是那么复杂 ...

  9. 初识用.NET Remoting来开发分布式应用 (转载)

    初识用.NET Remoting来开发分布式应用 一..NET Remoting简介: .NET Remoting从某种意义上讲是DCOM的替代品.ASP.NET Web服务十分有用,但是这项技术在企 ...

最新文章

  1. 和晋叔吹B讨论业务驱动与架构演进
  2. 第二章 Matlab变量
  3. python语言的重要性_【一点资讯】这个可能打败Python的编程语言,正在征服科学界 www.yidianzixun.com...
  4. SAP ABAP实用技巧介绍系列之 使用simple transformation的mapping功能
  5. 浅谈 Spring 框架注解的用法分析
  6. context:annotation-config 跟 context:component-scan诠释及区别
  7. HTML5特性system,HTML5教程 FileSystemAPI整理
  8. Visual Studio安装.nupkg文件
  9. [后端人员耍前端系列]KnockoutJs篇:快速掌握KnockoutJs
  10. 马斯克、脑机交互与人机融合
  11. Calendar计算两个日期相差几个月
  12. (LINPACK)HPL测试成功步骤整理
  13. python实现简单的词形统计
  14. 树——牛客网刷题第二波
  15. VIP专区_读书_腾讯网
  16. ios共享账号公众号_forest 专注森林 ios下载账号分享 公众号 iphone ipad
  17. Matlab函数fir1(n,Wn)中的归一化频率的含义
  18. LS与DV路由选择算法的比较
  19. 报童问题求解最大利润_利用二次函数求图形面积最值问题,注意自变量,学会解题策略...
  20. 手写识别转文字怎么弄?用这三个手写识别转文字的软件就够了

热门文章

  1. (十)深入浅出TCPIP之网络阻塞和非阻塞
  2. 《Python Cookbook 3rd》笔记汇总
  3. java控制面板作用_Java
  4. STL源码剖析 list概述
  5. 进程锁 读写文件的小例子 C++代码
  6. 英语口语海报演讲--东软
  7. 新手必看一位老司机的十年开车经验
  8. 从远程(包括ftp,http等协议)地址获取文件流信息
  9. Linux 线程占用CPU过高定位分析
  10. 【BZOJ 4103】 [Thu Summer Camp 2015]异或运算 可持久化01Trie