zoukankan      html  css  js  c++  java
  • 【.NetRemoting-2】2015.09.17

    【Remoting架构】
    【1】是.NetFramework的一个重要组成
    【2】框架的两个重要特性
    【A】基本实现【B】可扩展/可定制

    【各个组成部分】
    【1】【客户端,客户端应用程序域】
    【组成】
    【A】代理【Proxy】
    【B】格式器【Formatter】
    【C】通道【Channel】

    【要点】
    1.总是通过代理【Proxy】和服务端对象进行交互的
    2.【Proxy】知道远程对象的确切位置
    【代理与远程对象】
    【A】Client向Proxy请求属性或者方法,Proxy将请求发送给服务端对象==>【典型的代理模式】
    【B】代理与远程对象的绑定关系

    【Proxy】
    【两个部分】
    【透明代理,Transparent Proxy】
    提供和服务对象一致的接口,将【栈帧,Stack Frame】转换为【消息,Message】
    【真实代理,Real Proxy】
    负责使用【格式化器,Formatter】将消息序列化,终端客户端程序[block],强序列化之后的消息发送到【通道,Channel中】
    【消息,Message】
    【客户端发送请求的过程】
    【obj】-->【透明代理】-->【真实代理】-->【格式化器】-->【通道】---->【到达服务端】

    【2】【服务端,宿主应用程序域】
    【组成】
    【A】通道【Channel】
    【B】格式化器【Formatter】
    【C】栈生成器【Stack Builder】
    【注意】
    【A】宿主程序保持对Remoting所打开的端口监听

    【服务端处理过程】
    保持监听-->【Channel接受到Message】-->【Formatter,反序列化】-->【Stack Builder,创建或获取对象,并调用对象方法,得到方法返回,并封装为消息】-->【Formatter,序列化】-->
    【发送给Channel】----->【返回给客户端】

    *【Remoting对象【传引用封送】的三种激活方式】
    【共同点】
    【服务对象创建且一直保持在宿主程序域中】
    【A】客户端激活【Client activated】
    ==>创立专属的远程对象为其服务,对象的状态一直维持着
    ==>缺点:
        (1)增大服务端压力;(2)浪费服务端系统资源[服务端一直维持对象状态]
    【B.1】服务端激活Singleton【Server activated Singleton】
    ==>所有客户端共享同一个对象,后记的访问不能够重新创建对象,服务类型必须要求提供无参的构造函数
    ==>考虑线程同步
    【B.2】服务端激活SingleCall【Server activated SingleCall】
    ==>为每一个请求创建一个对象,二在每次方法返回支护销毁对象。
    ==>不会过久的占用资源
    ==>不保存对象状态
    ==>需要求开发者自己写程序逻辑维持状体
    ==>服务类型必须要求提供无参的构造函数


    【服务端激活】==>【Well-KnowOject,WKO】

  • 相关阅读:
    Spring配置多个数据源
    虚拟机内存结构
    Java中sleep,wait,yield,join的区别
    Java的四种引用方式
    Java 中的泛型详解-Java编程思想
    Java RTTI和反射
    linux 分析java 线程状态
    小容量的byteBuffer 读取大文本
    @Conditional 原理
    替换字符串占位符
  • 原文地址:https://www.cnblogs.com/bea084100123/p/4822538.html
Copyright © 2011-2022 走看看