分布模式

  • Remote Facade远程外观
    •  
    • 在OO模型中,存在很多规模小,且有小方法的对象.这些小对象会导致很多的对象间交互.
    • 在单一地址空间里,小对象没问题.
    • 但是,当在两个进程间做调用时,频繁的跨进程交互会造成性能开销.
    • 远程外观,减少远程调用的次数.
      • 建立在大量的细粒度对象之上,提供一个粗粒度的外观.
      • 不包括任何的领域逻辑.只是将方法转换到细粒度对象上.
    • 运行机制
      • 细粒度对象适合于解释复杂的逻辑.
      • 远程外观使用bluck accessor来使用一个getter/setter来完成在细粒度对象中的所有gettter/setter.
      • 单个远程外观,也可以作为多个细粒度对象的一个远程入口.
      • 远程外观的设计基于特定的客户需求.
        • 外观的设计是为了简化外观用户的使用,而不是为了简化内部系统.
        • 所以,远程对象中的大量不同方法实际上都在底层对象上调用了相同的方法.
      • 状态
        • 无状态.可以组成池,来提高资源的利用率和效率.
        • 有状态.当访问的客户很多时,可能会出现效率问题.
    • 使用时机
      • 需要远程访问细粒度对象模型时.
      • 最常用在表现和领域模型之间.通常它们处于不同的进程中.
      • 如果所有的交互都在单一的进程中,那么不需要这样的转变.
  • Data Transfer Object
    • 一个为了减少方法调用次数而在进程间传输数据的对象.
      • 当使用远程接口时,如果正在使用远程外观,每一次调用的代价会很大.
      • 需要减少调用的次数,就意味着每次调用都需要传递大量数据.
      • 解决的办法是使用数据传输对象.该对象将保留调用所用到的数据.
      • 它需要被序列化以便能在链接中传输.
    • 运行机制
      • DTO一般只是一堆域和getter/setter.
        • 价值在于允许一次调用中传输几部分信息.该特性是分布式的本质.
        • 一般会包含多个服务器对象,根据远端对象的需要.
        • 常见形式是记录集,或者集合数据结构.
      • 当远端对象需要某些数据时,它将询问一个合适的DTO
        • 通常,DTO会包含远多于远端对象所需要的数据量.
        • 这是因为远程调用的开销.宁可一次调用多传输以备以后使用.
      • 不想在Client端看到领域对象类.
        • 这样就等于在Client端拷贝整个领域模型.
        • 所以,应该从领域对象中传递一些简单格式的数据.
      • DTO中的域都是简单的原生类型,或者是其它的DTO.
        • DTO之间的结构应该只是简单的分层结构.
        • 目的是更简单的进行序列化.
        • 并且使传输的双方更容易理解.DTO必须被传输的双方知道.
      • DTO是围绕特定的Client端而设计的.
        • WEB和GUI会关联不同的DTO.
      • DTO的数目
        • 使用单一的DTO来处理整个交互.减少编码量,难以理解传输数据.
        • 用不同的DTO来处理不同的请求.清晰,但是会产生大量的DTO.
      • 请求双方
        • 请求方和发送方各自一个DTO,还是公用一个DTO.
      • 可变/恒定的DTO
        • 恒定的DTO,从Client端收到一个DTO后,新创建并回传一个不同的DTO.
        • 可变的,直接修改请求的DTO.逐步放入数据的方式.
      • 组装器
        • 独立了领域对象和DTO.使两者不相互依赖.
        • 映射器模式的实例:组装器
          • 负责从领域模型组装一个DTO.或者依据DTO更新领域模型.
        • 同时可以有多个组装器对象共享一个DTO.
          • 相同的数据在不同场景下有不同的更新语义.
    • 使用时机
      • 在一个方法调用中,在两个进程之间传输多个数据项,应使用它.
      • DTO可以作为不同软件层次间通用的数据源.
        • 每个层次对DTO做修改,然后将它传递到下一层.

 

转载于:https://www.cnblogs.com/robyn/p/3527038.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ 2485 Highways(最小生成树 Prim)

Highways大意:给你一个用邻接矩阵形式存储的有n个顶点的无向图,让你求它的最小生成树并求出在这个生成树里面最大的边的权值。 思路:用Prim求,判断条件改一下就行。 PS:dis数组初始化的时候用memset一直RE,…

oracle用户获取datameta权限,Oracle数据库提权(低权限提升至dba)

0x01 Oracle存储过程”缺陷”在 Oracle 的存储过程中,有一个有趣的特点:运行权限。运行权限分为两种,definer 和 invoker。definer 为函数创建者的权限,而 invoker 则是当前调用函数的用户。运行权限在函数创建时就已经被钦定了&a…

linux将文件下载到本地windows,XSHELL下直接下载文件到本地(Windows)

xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz首先你的Ubuntu需要安装rz.sz(如果没有安装请执行以下命令,安装完的请跳过.其它版本linux请自行安装相应软件)yum install lrzsz安装完毕即可使用rz,sz是便是Linux/Uni…

android远程linux命令,测试可用的Android远程语音识别实例

测试可用的Android远程语音识别实例:代码下载在:相关文件下载在Linux公社的1号FTP服务器里,下载地址:用户名:www.linuxidc.com密码:www.muu.cc在 2011年LinuxIDC.com\10月\10月\测试可用的Android远程语音识别实例pack…

容器set和multiset

一、set和multiset基础 set和multiset会根据特定的排序准则&#xff0c;自动将元素进行排序。不同的是后者允许元素重复而前者不允许。 需要包含头文件&#xff1a; #include <set> set和multiset都是定义在std空间里的类模板&#xff1a; [cpp] view plaincopyprint? t…

linux rom打包工具,Android rom解包打包工具

eMMC主要是针对手机和平板电脑等产品的内嵌式存储器&#xff0c;由于其在封装中集成了一个控制器&#xff0c;且提供标准接口并管理闪存等优势&#xff0c;越来越受到Android手机厂商的青睐&#xff0c;以eMMC为存储设备的android手机&#xff0c;其文件系统(system、data分区)…

winform(C#)透明方法

1.设置窗体opacity属性&#xff1a; 2.窗体的BackColor和TransparencyKey属性设置相同的值&#xff1a; 2.加using System.Runtime.InteropServices;引用然后加上以下代码&#xff1a; [StructLayout(LayoutKind.Sequential)]public struct MARGINS{public int Left;public int…

分布式缓存应用(转载的)

前言 Asp.Net中使用Couchbase——Memcached缓存入门篇 见http://www.cnblogs.com/aehyok/p/3436721.html 主要讲解Couchbase服务端的安装配置和客户端的引用调用&#xff0c;然后通过一个零配置的代码来完成最简单的代码实现调用。那么本次课先通过简单的配置文件进行配置&…

Jquery通过遍历数组给checkbox赋默认值

需求&#xff1a;有一个数组&#xff1a;(北京菜&#xff0c;粤菜)&#xff0c;checkbox如下&#xff1a; 现在想通过遍历这个数组&#xff0c;使数组里包含的值&#xff0c;在checkbox选中 代码&#xff1a; var flavors new Array([北京菜 , 粤菜]); $.each(flavors,functio…

Win8 IIS 安装和部署网站问题

安装IIS 比较win7的安装来说&#xff0c;多选了几个钩钩&#xff0c;不然会报错&#xff0c;偶就遇到这样的错误。 控制面板-》程序和功能-》启动和关闭windows功能&#xff0c;钩钩图例&#xff1a; 安装好iis后 在控制面板-》管理工具 目前只用过iis 信息管理器。 6.0 大概…

在SharePoint 2010中创建网站的权限级别

转&#xff1a;http://www.360sps.com/Item/CreatePermissionLevels.aspx 权限级别是SharePoint 2010新增加的功能&#xff0c;使我们对权限的设置又提高了一个层次。SharePoint 2010的权限级别指的是可分配给用户或用户组的单个权限组。SharePoint 2010自带的权限级别有&#…

仿新浪微盾客户端项目简介一

最经公司的项目需要实现类似于新浪微盾功能的功能&#xff0c;因此我把这个实战的demo的经历分享给大家。 新浪微盾是啥子玩意&#xff1f; 微盾是由新浪网推出的一款产生一次性动态密码的产品&#xff0c;可以用于新浪旗下各服务&#xff0c;包括新浪微博&#xff0c;新付通&a…

linux读取pdf文件字体,Linux有问必答:如何在PDF中嵌入LaTex中的所有字体

提问: 我通过编译LaTex源文件生成了一份PDF文档。然而&#xff0c;我注意到&#xff0c;并不是所有字体都嵌入到了PDF文档中。我怎样才能确保所有的字体嵌入在由LaTex生成的PDF文档中&#xff1f;当你创建一个PDF文件时&#xff0c;在PDF文件中嵌入字体是一个好主意。如果你不嵌…

CSS3 2D转换

CSS3 转换 通过CSS3转换&#xff0c;我们能够对元素进行移动、缩放、转动、拉长或拉伸。 它如何工作&#xff1f; 转换是是元素改变形状、尺寸和位置的一种效果。 你可以使用2D或3D转换你的元素。 浏览器支持 属性浏览器支持transform IE10、FireFox以及Opera支持transform…

然爸读书笔记(2014-5)----团队正能量

先说下题外话&#xff0c;今天下午吃烤肉&#xff0c;吃了2个小时&#xff0c;我擦啊&#xff0c;时间真心挺长&#xff0c;上面的图就是咯&#xff0c;你们嘴馋不咯。嘿嘿&#xff01; 今天真的是快速阅读了一本书&#xff0c;很早以前买的&#xff0c;一直没时间来看。刚看了…

ssh密钥代理转发(ssh agent forwarding)

之前一直用SecureCRT登陆服务器A然后再跳到服务器B&#xff0c;某日突然需要从另一台可信任的机器C用ssh登陆&#xff0c;ssh的key已经复制好&#xff0c;所以登陆A没有问题&#xff0c;但是登陆B会出现Pubkey Unauthorization.仔细翻查SecureCRT的设置&#xff0c;发现有密钥代…

c语言程序编程线性方程,C语言编程求解线性方程

C语言编程求解线性方程 本 科 专 业 学 年 论 文题 目 &#xff1a; 线性方程组求解方法比较姓 名 郭 凤 专 业 计算机科学与技术专业 班 级 08 级本科(2 )班 指导教师 刘 晓 娜 完成日期&#xff1a;2010 年 1 月 8 日题 目 &#xff1a; 线性方程组求解方法比较摘 要目前在许…

EISCONN的故事

在这春风明媚的日子里&#xff0c;有位T同学很苦恼。忙碌了一整天&#xff0c;有个BUG愣是定位不出来。简单描述呢&#xff0c;现象是这样子的&#xff1a; 第一次处理是正常的&#xff0c;但是后续的处理就是报错。sendto()调用错误码是 EISCONN&#xff08;已被连接&#xff…

c语言内循环,C语言循环控制语句

C语言循环控制语句是一个基于C语言的编程语句&#xff0c;该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。中文名C语言循环控制语句类 别while循环语句&#xff0c;do-while语句等目 地实现循环结构属 于计算机领域归 类编程语句基 …

同步,异步,多线程,你怎么看?

同步&#xff0c;异步&#xff0c;多线程&#xff0c;你怎么看&#xff1f; 原文:同步&#xff0c;异步&#xff0c;多线程&#xff0c;你怎么看&#xff1f;[原创]讲解同步与异步的帖子多如牛毛&#xff0c;个人的理解&#xff0c;简单地说同步就是串行&#xff0c;异步就是并…