没有合适的资源?快使用搜索试试~ 我知道了~
DCOM组件对象模型概述,DCOM是组件对象模型(COM)的进一步扩展。COM定义了组件和它们的客户之间互相作用的方式。它使得组件和客户端无需任何中介组件就能相互联系。
资源推荐
资源详情
资源评论
DCOM 概述
Microsoft 的分布式 COM(DCOM)扩展了组件对象模型技术(COM),使
其能够支持在局域网、广域网甚至 Internet 上不同计算机的对象之间的通讯。使
用 DCOM,你的应用程序就可以在位置上达到分布性,从而满足你的客户和应
用的需求。
因为 DCOM 是世界上领先的组件技术 COM 的无缝扩展,所以你可以将你
现在对基于 COM 的应用、组件、工具以及知识转移到标准化的分布式计算领
域中来。当你在做分布式计算时,DCOM 处理网络协议的低层次的细节问题,
从而使你能够集中精力解决用户所要求的问题。
为什么要做分布式应用
将应用分布化并不是问题的结束。分布式应用引入了一个全新的设计和扩
展概念,它增加了软件产品的复杂性,但是带来了可观的回报。某些应用本身
就带有分布性,例如多人对战游戏、聊天程序以及远程会议系统等等。因此,
一种健壮的分布式计算框架所带来的好处是不言自明的。很多其它的应用也是
分布式的,即它至少有两个组件运行在不同的计算机上,但是因为它不是为分
布性应用而设计的,所以它们的规模和可扩展性就有很大的局限性。任何的工
作流或群件应用程序,大多数的客户机/服务器应用程序一些桌面办公系统本质
上都控制着它们的用户的通讯和协作。将这些系统作为分布式系统并能够在正
确的地方运行正确的组件会给用户带来好处,并且使人们对网络和计算机资源
的运用更加充满信心。设计应用程序时考虑到分布性,能通过在客户端运行组
件使应用适用于具有不同性能的不同的客户。
设计应用时考虑分布性能够使系统在扩展上具有很高的灵活性。
分布式应用与它们的非分布式版本比起来具有更大的可扩展性。如果整个
复杂应用的逻辑结构可以用一个简单的模型来表示,那么仅仅只有一种方法来
增加系统的工作效率:用更快的机器,而无需的应用本身进行调整。虽然现在
的服务器和操作系统升级很快,但是买一个同样性能的机器还是比将服务器的
速度升级为原来的两倍所花的钱少。有了一个设计适当的分布式应用系统,一
台功能不怎么强大的服务器就能够运行所有的组件。当负载增加时,可以将一
些组件扩展到价格便宜的附加的机器上。
DCOM 的结构
DCOM 是组件对象模型(COM)的进一步扩展。COM 定义了组件和它们
的客户之间互相作用的方式。它使得组件和客户端无需任何中介组件就能相互
联系。客户进程直接调用组件中的方法。图 1 说明了组件对象模型的表示法:
Client Component
图 1 同一进程中的 COM 组件
在现在的操作系统中,各进程之间是相互屏蔽的。当一个客户进程需要和
另一个进程中的组件通讯时,它不能直接调用该进程,而需要遵循操作系统对
进程间通讯所做的规定。COM 使得这种通讯能够以一种完全透明的方式进行:
它截取从客户进程来的调用并将其传送到另一进程中的组件。图 2 表明了
COM/DCOM 运行库是怎样提供客户进程和组件之间的联系的。
Client Component
COM
run-time
DCE RPC
LPC
COM
run-time
Security
Provider
DCE RPC
LPC
Security
Provider
图 2 不同进程中的 COM 组件
当客户进程和组件位于不同的机器时,DCOM 仅仅只是用网络协议来代替
本地进程之间的通讯。无论是客户还是组件都不会知道连接它们的线路比以前
长了许多。
图 3 显示了 DCOM 的整体结构:COM 运行库向客户和组件提供了面向对
象的服务,并且使用 RPC 和安全机制产生符合 DCOM 线路协议标准的标准网
络包。
Client Component
COM
run-time
DCE RPC
Protocol Stack
COM
run-time
DCOM network-
protocol
Security
Provider
DCE RPC
Protocol Stack
Security
Provider
图 3 DCOM: 不同机器上的 COM 组件
组件和复用
大多数分布式应用都不是凭空产生的。现存的硬件结构、软件、组件以及
工具需要集成起来,以便减少开发和扩展时间以及费用。DCOM 能够直接且透
明地改进现存的对 COM 组件和工具的投资。对各种各样组件需求的巨大市场
使得将标准化的解决方案集成到一个普通的应用系统中成为可能。许多熟悉
COM 的开发者能够很轻易地将他们在 COM 方面的经验运用到基于 DCOM 的分
布式应用中去。
任何为分布式应用开发的组件都有可能在将来被复用。围绕组件模式来组
织开发过程使得你能够在原有工作的基础上不断的提高新系统的功能并减少开
发时间。基于 COM 和 DCOM 的设计能使你的组件在现在和将来都能被很好到
使用。
位置独立性
当你开始在一个真正的网络上设计一个分布式应用时,以下几个相互冲突
的设计问题会很清楚地反映出来:
相互作用频繁的组件彼此间应该靠得更近些。
某些组件只能在特定的机器或位置上运行。
小组件增加了配置的灵活性,但它同时也增加了网络的拥塞。
大组件减少了网络的拥塞,但它同时也减少了配置的灵活性。
当你使用 DCOM 时,这些设计上的限制将很容易解决,因为配置的细节并
不是在源码中说明的。DCOM 使得组件的位置对你来说完全透明,无论它是位
于客户的同一进程中或是在地球的另一端。在任何情况下,客户连接组件和调
用组件的方法的方式都是一样的。DCOM 不仅无需改变源码,而且无需重新编
译程序。一个简单的再配置动作就改变了组件组件之间相互连接的方式。
DCOM 的位置独立性极大地简化了将应用组件分布化的任务,使其能够达
到最合适的执行效果。例如,设想某个组件必需位于某台特定的机器上或某个
特定的位置,并且此应用有许多小组件,你可以通过将这些组件配置在同一个
LAN 上,或者同一台机器上,甚至同一个进程中来减少网络的负载。当应用是
由比较少的大组件构成时,网络负载并不是问题,此时你可以将组件放在速度
快的机器上,而不用去管这些机器到底在哪儿。
图 4 显示了相同的“有效性检查组件”在两种不同情况下是如何分别配置的 。
一种情况是当“客户”机和“中间层”机器之间的带宽足够大时,它是怎样配置在客
户机上的;另一种情况是当客户进程通过比较慢的网络连接来访问组件时,它
又是怎样配置在服务器上的。
Client
User-Interface
Component
Validation
Component
Business Rule
Component
Database
Component
Database
COM
COM
DCOM
Validation
Component
DCOM
COM
DCOM
Client
Middle-tier Back-end
图 4 位置独立性
有了 DCOM 的位置独立性,应用系统可以将互相关联的组件放到靠地比较
近的机器上,甚至可以将它们放到同一台机器上或同一个进程中。即使是由大
量的小组件来完成一个具有复杂逻辑结构的功能,它们之间仍然能够有效到相
互作用。当组件在客户机上运行时,将用户界面和有效性检查放在客户端或离
客户端比较近的机器上会更有意义;集中的数据库事务应该将服务器靠近数据
库。
语言无关性
在设计和实现分布式应用系统时,一个普遍的问题就是为开发一个特定的
组件而选择语言以及工具的问题。语言选择是一个典型的在开发费用、可得到
的技术支持以及执行性能之间的折衷。作为 COM 的扩展,DCOM具有语言独
立性。任何语言都可以用来创建 COM 组件,并且这些组件可以使用更多的语
言 和 工 具 。 Java , Microsoft Visual C++ , Microsoft Visual
Basic,Delphi,PowerBuilder 和 Micro Focus COBOL 都能够和 DCOM 很好地相
互作用。
因为 DCOM 具有语言独立性,应用系统开发人员可以选择他们最熟悉的语
言和工具来进行开发。语言独立性还使得一些原型组件开始时可以用诸如
Visual Basic 这样的高级语言来开发,而在以后用一种不同的语言,例如 Visual
C++和 Java 来重新实现,而这种语言能够更好地支持诸如 DCOM 的自由线程/
多线程以及线程共用这些先进特性。
连接管理
网络连接本身就比同一台机器中的连接更脆弱。当一个客户不再有效,特
别是当出现网络或硬件错误时,分布式应用中的组件需要被加以注意。
DCOM 通过给每个组件保持一个索引计数来管理对组件的连接问题,这些
组件有可能是仅仅只连到一个客户上,也有可能被多个客户所共享。当一个客
户和一个组件建立连接时,DCOM 就增加此组件的索引计数。同理,当客户释
放连接时,DCOM 就减少此组件的索引计数。如果索引计数为零,组件就可以
被释放了。
DCOM 使用有效的地址合法性检查(pinging)协议来检查客户进程是否仍
然是活跃的。客户机周期性地发送消息,当经过大于等于三次 ping 周期而组件
没有收到 ping 消息时,DCOM 就认为这个连接中断了。一旦连接中断,DCOM
就减少索引计数,当索引计数为零时就释放组件。从组件的这一点看来,无论
是客户进程自己中断连接这种良性情况,还是网络或者客户机崩溃这种致命情
况,都被同一种索引计数机制处理。
在很多种情况下,组件和它的客户进程之间的信息流是没有方向性的:组
件需要在客户端进行某些初始化操作,例如一个长进程的结束,用户所观看数
据的更新,或者诸如电视以及多用户游戏这些协作环境中的下一条信息等。许
多协议使得完成这种对称性的通迅十分困难。使用 DCOM,任何组件都既可以
使功能的提供者,有能是功能的使用者。通迅的两个方向都用同一种机制来管
理使得完成对等通迅和客户机/服务器之间的相互作用一样容易。
DCOM 提供了一个对应用完全透明的分布式垃圾收集机制。DCOM 是一个
天生的对称性网络协议和编程模型。它不仅提供传统的单向的客户机-服务器
之间的相互作用方式,还提供了客户机和服务器以及对等进程之间的丰富的交
谈式的通迅方式。
可扩展性
分布式应用的一个重要因素是它的处理能力能够随着用户的数量、数据量
所需性能的提高而增加。当需求比较小时,应用系统就比较小而速度快,并且
它要能够在不牺牲性能和可靠性的前提下处理附加的需求。DCOM 提供了许多
特性来增强你的应用的可扩展性。
对称的多进程处理(SMP)
DCOM 提高了 Windows NT 对于多进程处理的支持。对于使用自由线程模
式的应用,DCOM 使用一个线程队列来处理新来的请求。在多处理器机上,线
程队列是由可利用的处理器的数量来决定的:太多的线程会导致经常性的上下
文切换,而太少的线程又会使处理器处于空闲状态。DCOM 只提供一个手工编
码的线程管理器,从而使开发者从线程的细节中解脱出来并获得最好的性能。
DCOM 通过使用 Windows NT 对于对称性多进程处理的高级支持功能就能
轻易地将应用从一个单处理机扩展到庞大的多处理机系统上去。
剩余27页未读,继续阅读
资源评论
foxssil
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功