【Remoting程序的基本实现】

【一】服务程序集
【1】服务对象必须要求继承【MBR,MarshalByRefObject】

【二】服务端应用程序
【1】注册通道
【两种类型的通道】
【A】发送请求的通道,要求实现IChannelSender 接口
【B】接受请求的通道,要求实现IChannelReceiver 接口
【.Net提供的内置通道】==>均实现了IChannelSender,IChannelReceiver,IChannel
【HttpChannel】
==>可实现跨防火墙
==>【消息】通过【SOAP】格式化
【TcpChannel】
==>无法跨防火墙
==>【消息】通过【二进制】格式化
【IcpChannel】
==>不能跨计算机,只能在同一台计算机内跨线程访问。
==>底层基于【命名管道,Named Pipe】

【代码实现】
【A】实例化Channel对象
==>两种构造Channel对象的方法
【B】使用ChannelServices.RegisterChannel(channelobj,bool)注册通道

【2】注册类型==>告知客户端,宿主应用程序域中哪些对象是可以被客户端访问到的
【服务对象的三种激活方式】
【1】客户端激活
【2】服务端激活Singleton【Server activated Singleton】
【3】服务端激活SingleCall【Server activated SingleCall】

【代码实现】
==>使用RemotingConfiguration.RegisterActivatedServiceType(type)【客户端激活】方法
==>使用RemotingConfiguration.RegisterWellKnowServiceType(type,"objUri",activatType)【服务端激活方式】

【3】对象位置
客户端如何知道对象位置?==>URL
【RemotingConfiguration.ApplicationName】属性
【URL形式】
【Service Activated】
==> protocal://hsotadress:port/ApplicationName/ObjectUrl
【Client Activated Object】
==> protocal://hsotadress:port
==> protocal://hsotadress:port/ApplicationName

【三】客户端程序==>Only One Task
===>获取远程对象,调用远程对象方法。
【步骤】
【A】注册类型==>告知.Net该对象应该是在服务端注册的,而非在本地
==>客户端类型注册与服务端类型注册的方法类似【使用RemotingConfiguration】
==>使用RemotingConfiguration.RegisterActivatedClientType(type,uri)【客户端激活】方法
==>使用RemotingConfiguration.RegisterWellKnowClientType(type,"uri")【服务端激活方式】

【B】new操作符创建对象

【2】其他创建远程对象的方法
==>【RemotingServices.Connect()】==>简单,较为常用,只能调用无参构造函数,获取对象的同时创建代理
==>【Activator.GetObject()】==>简单,较为常用,只能调用无参构造函数,获取对象的同时创建代理
==>【Activator.CreateInstance()】==>可调用有参构造函数,但只能创建客户激活对象。

【.NetRemoting-3】2015.09.18的更多相关文章

  1. 【.NetRemoting-2】2015.09.17

    [Remoting架构] [1]是.NetFramework的一个重要组成 [2]框架的两个重要特性 [A]基本实现[B]可扩展/可定制 [各个组成部分] [1][客户端,客户端应用程序域] [组成] ...

  2. 【Unity|C#】基础篇(18)——正则表达式(Regex类)

    [学习资料] <C#图解教程>:https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu.com/s/ ...

  3. 【转帖】2015年2月份最佳的免费 UI 工具包

    2015年2月份最佳的免费 UI 工具包 设计师们最喜欢 UI 工具包,这是一种思路拓展的方法,同时可以利用它们来解决各种复杂的项目,同时可用来了解其他设计师的风格.这里我们收集了最近这一个月一些最棒 ...

  4. 【直播预告】7月18日3D游戏引擎免费公开课答疑,參与送C币!

    喜讯喜讯! 为了酬谢广大学员.CSDN学院特推出iOS和3D游戏引擎开发免费技术答疑公开课,让您度过一个充实的暑假~ 參与本次公开课,即有机会获得50C币! 答疑公开课时间:7月18日 晚7:30-9 ...

  5. 【英语学习】2016.09.11 Culture Insider: Teacher's Day in ancient China

      Culture Insider: Teacher's Day in ancient China 2016-09-10 CHINADAILY Today is the 32nd Chinese Te ...

  6. Python基础教程【读书笔记】 - 2016/7/18

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第七波:第3章 字符串 介绍如何使用字符串格式化其他的值,并简单了解一下利用字符串的分割.联接.搜索等方法能做些什么. ...

  7. 【python基础】第09回 数据类型内置方法 01

    本章内容概要 1.数据类型的内置方法简介 2.整型相关方法 3.浮点型相关方法 4.字符串相关方法 5.列表相关方法 本章内容详情 1.数据类型的内置方法简介 数据类型是用来记录事物状态的,而事物的状 ...

  8. 【.Net Remoting-1】

    [.NetRemoting]2015.09.16 [分布式应用程序] 应用程序分布在不同计算机上,通过网络来共同完成一项任务 C/S架构[模式] [互操作性,Interoperability]又称[互 ...

  9. NPOI2.2.0.0实例详解(十)—设置EXCEL单元格【文本格式】 NPOI 单元格 格式设为文本 HSSFDataFormat

    NPOI2.2.0.0实例详解(十)—设置EXCEL单元格[文本格式] 2015年12月10日 09:55:17 阅读数:3150 using System; using System.Collect ...

随机推荐

  1. 你所不了解的css选择器补充

    div p和div>p的区别 1.div p选择 <div> 元素内部的所有 <p> 元素 2.div>p选择父元素为 <div> 元素的所有 < ...

  2. java进程

    package com.process;   public class ProcessTest { public static void main(String[] args) { new Proce ...

  3. javascript sort排序

    var arr = [5,32,28,66,2,15,3]; arr.sort(function(a1,a2){ return a1-a2; //a2-a1 输入倒序 }); console.log( ...

  4. Draw2d中的布局管理器Layout比较

    最近在研究Eclipse中的GEF开发,在跟着GEF-whole-upload教程做一个GEF应用程序的例子时,发现Figure上的控件无法显示,谷歌了很久也没找到解决方案,最后终于发现是Layout ...

  5. Windows7下MySQL5.6.15免安装版的配置(来自yang362046076)

    1.下载mysql-5.5.20-win32.zip,解压到D:\dev,D盘的dev文件夹下就会出现mysql-5.5.20-win32目录,将其重命名为mysql. 2.配置MYSQL的环境变量  ...

  6. java多线程什么时候释放锁—wait()、notify()

    由于等待一个锁定线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不需要锁的时候及时释放锁是很重要的.在以下情况下,持有锁的线程会释放锁:    1. 执行完同步代码块.    2. 在执行 ...

  7. ZendFramework 两种安装方式

    1. 在线安装(基于composer) Zend 应用程序骨架 GitHub 地址: https://github.com/zendframework/ZendSkeletonApplication ...

  8. 重读LPTHW-Lesson1-14

    1.python print 可以用"Hello World",也可以用'Hello World',或者”””Hello World ””” 2.要打印在一行,可以在改行后加英文逗 ...

  9. 【iOS开发】collectionView 瀑布流实现

    一.效果展示 二.思路分析 1> 布局的基本流程 当设置好collectionView的布局方式之后(UICollectionViewFlowLayout),当系统开始布局的时候,会调用 pre ...

  10. Android中SensorManager.getRotationMatrix函数原理解释

    SensorManager是Android中的一个类,其有一个函数getRotationMatrix,可以计算出旋转矩阵,进而通过getOrientation求得设备的方向(航向角.俯仰角.横滚角). ...