【Remoting-4】
【服务对象三种激活方式的不同】
【1】客户端激活方式
【A】对象的创建,对象方法的执行都是在远程服务端。
【B】服务端为每一个客户端创建其专属的对象,为这个客户提供服务,并且保存状态
【C】可以从远程获取到方法执行的返回值
【D】使用客户激活方式时候,远程对象在调用new操作时被创建[叙述了远程对象何时在服务端被创建]
【2】服务端激活方式--Singleton
【A】在服务端,服务对象的构造函数只会被调用一次
【B】后继的请求都使用该对象进行服务。==>【有状态】的激活模式
【C】多个客户端共享一个远程对象【的状态】。
【D】在【客户端】即时使用new操作符,【服务端】也不会创建一个对象,
只有在【客户端代理】中对象【代理对象】第一次调用方法时,对象在服务端才会被创建。
==>服务端只会创建一个服务对象
【3】服务端激活-SingleCall
【A】对象对每一次方法调用提供服务。
==>对于客户端的每一次方法调用,服务端都会创建一个对象为其服务,在方法执行完毕之后,在销毁对象。
【B】SingleCall无法保存对象状态==>【无状态】激活模式。
==>如果保存对象的状态?==>解决方法:将对象状态存储在对象之外。
【C】在【客户端】即时使用new操作符,【服务端】也不会创建一个对象,
只有在【客户端代理】中对象【代理对象】调用方法时,对象在服务端才会被创建。
==>每一次调用方法,服务端都会创建一个服务对象
【Remoting的传值封送】
【1】需要将对象标志位可序列化
【2】构建一个工厂类作为远程服务对象,然后将实际要传值封送到客户端的对象作为过程方法的返回值。
【3】完全没有必要,如果要将远程对象传值封送到客户端,Remoting存在还有什么意义呢?
【分离服务程序集元数据和代码实现】
如何将【宿主应用程序域,Host Appdomain】和【客户应用程序域 Client Appdomain】的服务程序集分离?
【1】使用接口分离服务程序集
==>将类型的元信息和类型的实现分离
【注意】无法创建客户端激活对象
【A】Activator.GetObject()方法只适用与服务端激活方法
【B】Activator.CreateInstance()方法,作为参数的对象需要满足两个条件;(1)继承MBR,(2)服务端需要为此类型进行注册
【2】使用空类分离服务程序集
==>服务程序集包含的代码量较少
【3】使用SoapSuds.exe工具分离程序集
==>生成一个"空类"程序集
【SoapSuds.exe】是.Net提供的一个工具,它允许客户端通过输入一个远程对象的Url,然后生成一个dll程序集文件,这个文件包含了在客户端穿件代理的全部元数据信息,
但是不包含任何具体的实现==>【"空类"程序集】
【如何使用SoapSuds.exe获取dll文件?】
【1】服务启动后,激活远程对象。【注】
【A】激活的方式只能是服务激活对象[SingleCall/Singleton]
【B】使用Http通道,且消息格式器为SOAP格式器
【C】生成dll程序集之后,无论服务端使用哪种类型的协议或者是格式,客户端都能访问到远程对象。【注】
【2】客户端使用【vs命令提示】工具,使用soapsuds命令生成服务程序集
soapsuds {-url:schemaUrl | -types:type1,assemblyname[,serviceEndpoint] [;type2,assemblyname][...]] | -is:schemafile | -ia:assemblyfile} [options]
【==>soapsuds -url:serviceObjUrl?wsdl -oa:assemblyname.dll】
【4】使用工厂方法分离
==>接口分离的一种变种
【只适用于客户端激活方式,但是表现形式上又像服务端激活一样】
【因为是工厂类,所以服务端激活对象的方式几乎都是采用Singleton】
==>解决了直接使用接口时无法创建客户端激活对象的问题
【Remoting-4】的更多相关文章
- 【.Net Remoting-1】
[.NetRemoting]2015.09.16 [分布式应用程序] 应用程序分布在不同计算机上,通过网络来共同完成一项任务 C/S架构[模式] [互操作性,Interoperability]又称[互 ...
- C#设计模式之十三代理模式(Proxy)【结构型】
一.引言 今天我们要讲[结构型]设计模式的第七个模式,也是"结构型"设计模式中的最后一个模式,该模式是[代理模式],英文名称是:Proxy Pattern.还是老套路,先从名字 ...
- 【分布式事务】基于RocketMQ搭建生产级消息集群?
导读 目前很多互联网公司的系统都在朝着微服务化.分布式化系统的方向在演进,这带来了很多好处,也带来了一些棘手的问题,其中最棘手的莫过于数据一致性问题了.早期我们的软件功能都在一个进程中,数据的一致性可 ...
- C#设计模式之十二代理模式(Proxy Pattern)【结构型】
一.引言 今天我们要讲[结构型]设计模式的第七个模式,也是“结构型”设计模式中的最后一个模式,该模式是[代理模式],英文名称是:Proxy Pattern.还是老套路,先从名字上来看看.“代理”可以理 ...
- 【Spring实战】----开篇(包含系列目录链接)
[Spring实战]----开篇(包含系列目录链接) 置顶2016年11月10日 11:12:56 阅读数:3617 终于还是要对Spring进行解剖,接下来Spring实战篇系列会以应用了Sprin ...
- 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程
反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) 背景介绍: 为了平衡社区成员的贡献和索取,一起帮引入了帮帮币.当用户积分(帮帮点)达到一定数额之后,就会“掉落”一定数量的“帮帮 ...
- 【AR实验室】mulberryAR : ORBSLAM2+VVSION
本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 mulberryAR是我业余时间弄的一个AR引擎,目前主要支持单目视觉SLAM+3D渲染,并且支持iOS端,但是该引 ...
- 【.net 深呼吸】细说CodeDom(1):结构大观
CodeDom 是啥东东?Html Dom听过吧,XML Dom听过吧.DOM一般可翻译为 文档对象模型,那 Code + DOM呢,自然是指代码文档模型了.如果你从来没接触过 CodeDom,你大概 ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【前端性能】高性能滚动 scroll 及页面渲染优化
最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作. 本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的 ...
随机推荐
- Funsion Charts 学习(一)
学习官网: http://www.fusioncharts.com/explore/line-area-charts/ 参数: numvdivlines number 垂直线显示vd ...
- JavaScript---while和do while的区别
JavaScript,while 和do while的区别: 场景一:小盒子身上有100元,用while输出能吃多少次米线,一碗米线12元,最终还剩下多少钱. var money = 100; whi ...
- InetAddress类的使用
1.1. 简介 IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础.InetAddress是Java对IP地址的封装,在java.net中有 ...
- bootstrap模态框垂直居中
很久没有写东西了,之前想写一些移动端的东西以后补上吧,移动端发展还是蛮快的,回正题. 因为最近在弄一个系统,系统中引用了bootstrap,发现模态框垂直不居中,遂搜索了一下,也都试了一下,无非都是在 ...
- Delphi 10.1 Berlin 与 Delphi 10 Seattle 共存
以下安装环境是win7 64位 1. 安装Delphi10.1 Berlin 版本. 2.修改C:\Program Files (x86)\Embarcadero\Studio\18.0\cglm.i ...
- c# vs2010 winfrom控件检测网络环境
写下以作备用,代码附上. public partial class UserControl1 : UserControl, IObjectSafety { //检测网络状态 [DllImport(&q ...
- linux mysql 优化
第一 在 /etc/my.cnf 中加入 skip-name-resolve ,重启mysql,这样就能禁用DNS解析,连接速度会快很多.不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用 ...
- joseph-约瑟夫环问题
约瑟夫环运作如下: 1.一群人围在一起坐成环状(如:N) 2.从某个编号开始报数(如:K) 3.数到某个数(如:M)的时候,此人出列,下一个人重新报数 4.一直循环,直到所有人出列,约瑟夫环结束 关于 ...
- Application.HookMainWindow完全替代了原来的窗口过程(但是好像也会继续传递)
unit HookMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialo ...
- HttpClient工具类
HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议. ...