背景:

在学习三层架构的时候,知道三层分为UI层(表现层)、BLL层(业务逻辑层)、DAL层(数据访问层),相对于传统的二层架构(客户端和数据库)来说,多了一个中间层BLL(业务逻辑层),处于UI层和DAL层之间,起到承上启下的作用,客户端并不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,在经中间层与数据库进行交换。读到这里的时候,问题就来了,什么是COM/DCOM通讯?它在三层架构体系中起到什么作用……

【COM】

COM是Component Object Model (组件对象模型)的缩写,是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术,是关于如何建立组件以及如何通过组件建立应用程序的一个规范,说明了如何可动态交替更新组件。COM是个开放的组件标准,有很强的扩充和扩展能力。COM规定了对象模型和编程要求,使COM对象可以与其他对象相互操作。这些对象可以用不同的语言实现,其结构也可以不同。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。

我的理解:COM为组件对象的一种模型,一种对于组件对象主要特征的描述,并不是真正的产品或商品,基于这个模型,开发人员才能开发出较为完整和规范的实际产品,研究出COM的目的是方便开发人员开发出各种组件,真正地可以实际应用到系统开发中。

【区分组件和对象】

组件(Component)是系统中一种物理的、可代替的部件、它封装了实现并提供了一系列可用的接口。一个组件代表一个系统中实现的物理部分,包括软件代码(源代码,二进制代码,可执行代码)或者一些类似内容,如脚本或者命令文件。简而言之,组件就是对象,是对数据和方法的简单封装。

对象(Object)是指现实世界中客观存在的事物。

组件基于对象,同时又是对象的一种,可插入系统中的对象。

   组件可以在另一个称为容器(有时也称为承载者或宿主)的应用程序中使用,也可以作为独立过程使用;
   组件可以由一个类构成,也可以由多个类组成,或者是一个完整的应用程序;
   组件为模块重用,而对象为代码重用。

我的理解:组件相对于对象来说,更加复杂化,更加整合,它可以被当作一个独立的主体拿来用,在不同的系统中实现组件的替换,组件的粒度大于对象,组件是对对象的一种装饰,将简单的对象根据不同的需求加以封装成单一功能的组件,使用起来更加方便灵活,组件的粒度大于对象,组件之间是通过接口实现交互,接口内含有多个信息,而对象之间交互是单个信息,用信件传送信息时,对象需要一封一封的传送,而组件则是将所有信息一次性传送完,再举一个生活化的例子:盖房子的时候需要用到水泥、沙土、石子等原材料,而有一种材料叫做混凝土,它是用水泥作胶凝材料,砂、石作集料,加上一定比例的水制成的一种材料,前者可以看做是对象,后者可以看做是组件,而不同的粒度也因此显现出来。

有两个问题:关于组件和对象的关系有没有更为精准的描述词语?面向组件技术优于面向对象技术吗?

关于面向组件和面向对象技术的知识还有许多,期待大家继续去探索……

【COM的优点】

1. 用户一般希望能够定制所用的应用程序,而组件技术从本质上讲就是可被定制的,因而用户可以用更能满足他们需要的某个组件来替换原来的那个。

2.由于组件是相对应用程序独立的部件,我们可以在不同的程序中使用同一个组件而不会产生任何问题,软件的可重用性将大大的得到增强。      3.随着网络带宽及其重要性的提高,分布式网络应用程序毫无疑问的成为软件市场上越来越重要的买点。组件价构可以使得开发这类应用程序的过程得以简化。

【DCOM】

分布式组件对象模型(Microsoft Distributed Component Object Model)的简称,是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。DCOM基于组件对象模型(COM),COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口(运行在Windows95或者其后的版本上)。

DCOM相对于OCM来说就多了一个单词Distrbuted,它的意思是分布式的,分散式的。分布式是指一个业务分拆多个子业务,部署在不同的服务器上。 而集群是指将几台服务器集中在一起,实现同一业务。

DCOM为分布在网络不同节点的两个COM组件提供了互操作的基础结构。DCOM增强COM的分布处理性能,支持多种通信协议,加强组件通信的安全保障,把基于认证Internet安全机制同基于Windows NT的C2级安全机制集成在一起。DCOM自动建立连接、传输信息并返回来自远程组件的答复。DCOM在组件中的作用有如PC机间通信的PCI和ISA总线,负责各种组件之间的信息传递,如果没有DCOM,则达不到分布计算环境的要求。

我的理解:DCOM是为了方便两个COM之间的沟通连接,分布式的提出,就要求分散在两台计算机上的COM组件之间相互通信,COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口,而DCOM支持不同的两台机器上的组件间的通信,而且不论它们是运行在局域网、广域网、还是Internet上。借助DCOM你的应用程序将能够任意进行空间分布。

【DCOM的特点】

1.组件复用

任何为分布式应用开发的组件都有可能在将来被复用,DCOM能够直接且透明地改进现存的对COM组件和工具的投资。对各种各样组件需求的巨大市场使得将标准化的解决方案集成到一个普通的应用系统中成为可能。

2.位置独立

DCOM中配置的细节并不是在源码中说明的,DCOM使得组件的位置来说完全透明,在任何情况下,客户连接组件和调用组件的方法的方式都是一样的。DCOM不仅无需改变源码,而且无需重新编译程序。一个简单的再配置动作就改变了组件组件之间相互连接的方式。

3.语言无关

作为COM的扩展,DCOM DCO具有语言独立性。任何语言都可以用来创建COM组件,并且这些组件可以使用更多的语言和工具。Java,Microsoft Visual C++,Microsoft Visual Basic,Delphi,PowerBuilder和Micro Focus COBOL都能够和DCOM很好地相互作用。

4.连接管理

DCOM通过给每个组件保持一个索引计数来管理对组件的连接问题,这些组件有可能是仅仅只连到一个客户上,也有可能被多个客户所共享。使用DCOM,任何组件都既可以是功能的提供者,又能是功能的使用者。通讯的两个方向都用同一种机制来管理使得完成对等通讯和客户机/服务器之间的相互作用一样容易。

5.可扩展性

DCOM通过使用Windows NT对于对称性多进程处理的高级支持功能就能轻易地将应用从一个单处理机扩展到庞大的多处理机系统上去。

6.灵活配置

使用DCOM,可以很容易地改变客户进程同组件以及组件之间的连接方式。同一组件无需作别的改动甚至无需重新编译就可以被动态地重新配置。所有必须做的工作只是更新登记、文件系统以及所涉及的组件所在的数据库而已。

7.带宽问题

DCOM自己将网络循环时间最小化,使得避免网络中潜在的拥塞成为可能。DCOM选择了TCP/IP协议套件中的无连接UDP协议作为自己的传输协议。协议的无连接特性使得D  COM能够将许多低级别的确认包和实际的数据以及地址合法性检查(pinging)信息混合起来从而改善了性能。

8.共享连接

DCOM对每台机器使用一个keep-alive消息。即使一台客户机使用了某一台服务器上的100个组件,仅仅只要一条ping消息就能使所有这些客户连接保持活跃状态。为了将所有的ping消息组合起来,DCOM使用delta pinging机制来将这些ping消息的大小最小化。

9.优化网络

DCOM使得组件开发者能够轻易地执行批量技术而无需客户端也使用批量形式的API。DCOM的marshling机制使得组件可以将代码加到客户端,这叫作“代理对象”,它可以拦截多个方法调用并将其捆绑到一个远程调用中去。如果需要的话,DCOM甚至允许将组件插入任意一个传统的协议中,这个协议可以使用不在DCOM机能范围内的方法。组件可以使用传统的配置方法将任意的代理对象放到客户进程中,此进程能够使用任何协议将信息传回组件。

10.负载平衡

DCOM促进负载平衡的几种不同的技术:并行配置,分离关键组件和连续进程的pipelining技术。

11.容错性

DCOM在协议级提供了对容错性的一般支持。前面的“应用系统间的共享式连接管理”部分所描叙的一种高级pinging机制能够发现网络以及客户端的硬件错误。如果网络能够在要求的时间间隔内恢复,DCOM就能自动地重新建立连接。

【三层中的应用】

三层体系中的中间层也叫组件层,而COM/DCOM为客户端和组件层之间进行通讯提供了方便,三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理,涉及到业务逻辑的处理,就需要多个组件之间相互通讯,而DCOM还会使负载平衡,所有客户都连接到指示组件,指示组件中包含所有的配置信息,它向每个客户返回合适的组件。只需改动指示组件就可以改变所有的客户。

【总结】

COM/DCOM是一种简单的分布式组件对象模型,它的编程模型非常简洁明了,使用该模型可以方便地将处于不同组件中的功能组合起来,以最简单的方法规范了组件之间的交互。除了COM/DCOM之外,现在比较流行的是COM+通讯技术,它更优于COM/DCOM,想了解更多,多去探索,多去发现……

在学习三层的时候看到了这个COM/DCOM这个名词,不是很懂,就查了一下,参照百度和别人的经验写完的这篇博客,许多内容不是很明白,希望路过的你多多提意见,相互交流看,共同进步!

【三层架构】——COM/DCOM初识相关推荐

  1. 三层架构之初识庐山真面目

    一.概念: 三层架构(3-tier architecture) 通常是指将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).目的是"高内聚,低耦合"的 ...

  2. c#利用三层架构做一个简单的登录窗体

    就个人而言,三层架构有点难理解,不知道该如何下手,各层与各层之间怎么调用 最近一直在研究三层架构,经过网上学习与多方打听写一下自己的心得.有不足之处,可以评论和私聊探讨 言归正传: 三层架构(3-ti ...

  3. Basic:三层架构开发

    三层结构解释     所谓三层体系结构,是在客户端与数据库之间加入了一个中间层,也叫组件层.这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层 ...

  4. c/s三层结构信息系统的三个层次_网络资讯:三层架构是什么

    今天来说一下三层架构是什么这方面的一些讯息,不少朋友对一个完整计算机系 统的组成部分应该是这方面的一些讯息颇感兴趣的,小编今天就整理了一些信息,希望对有需要的朋友 有所帮助. 三层架构 通常意义上的三 ...

  5. 三层架构与设计模式思想部署企业级数据库业务系统开发

    1. 三层架构介绍 1.1关于架构 架构这个词从它的出现后,就有许许多多的程序员.架构师们激烈地讨论着它的发展,但是架构一词的出现,却是随着三层架构的出现才出现的.当然,目前应用三层架构开发也正是业界 ...

  6. J2EE三层架构简介

    三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低 ...

  7. B/S三层架构[转载]

    三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦 ...

  8. java三层架构的好处,java三层架构原理与作用小结

    三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦 ...

  9. 黑马程序员-三层架构介绍

    ---------------------- Windows Phone 7手机开发. .Net培训.期待与您交流! ---------------------- 三层架构介绍 1关于架构 架构这个词 ...

最新文章

  1. 马斯克39也火星计划PPT
  2. 画世界怎么用光影_【干货】详解光影的魅力及其绘画技巧,一起打造极致炫丽的光影世界吧!...
  3. 博途创建vb脚本实例_基于博途V15 西门子S7-1200 定时器指令应用实例
  4. .NET遗留应用改造——性能优化篇
  5. [react] 请描述下你对react的新特性Hooks的理解?它有哪些应用场景?
  6. 一个人成为废材的9大原因
  7. java 嵌套类 map_java – 将groupingBy用于嵌套Map,但收集到不同类型的对象
  8. 我一个月2000多元钱退休工资,可以完成自驾游全国的心愿吗?
  9. mysql中如何查询最近24小时、top n查询
  10. 程序员女朋友都是在哪找的?
  11. 华为老总任正非给公司患抑郁症员工的一封信
  12. Shell脚本文本三剑客之Sed
  13. img文件的解压与压缩
  14. 台风怎么看内存颗粒_《CY》又一4000+的颗粒,三星新版D-DIE颗粒超频测试
  15. 基于随机游走的personalRank算法
  16. android:kotlin语言开发再也不用findViewById与ButterKnife
  17. 【思维导图】对外经济贸易大学公开课:企业财务报表分析
  18. 怎么给图片加滤镜?我来教你图片滤镜怎么调才好看
  19. 计算机指令集的相关概念
  20. 如何批量生成文件夹?

热门文章

  1. MuddyWater APT 样本分析
  2. mustache学习笔记
  3. Windows 开机启动画面,声音等设置
  4. linux笔记本两块显示屏,戴尔双屏笔电新专利曝光:一台笔记本两块可拆卸屏!...
  5. vue-router 路由模式有⼏种?
  6. 为你的网站引入Fancybox
  7. Kubernetes中Pods的详细介绍
  8. Pods各种报错踩坑
  9. Android 组合键
  10. 渗透测试通过SHODAN收集信息