首页 理论教育 VisualC++高级编程技术:客户/服务器模型示例

VisualC++高级编程技术:客户/服务器模型示例

时间:2023-11-16 理论教育 版权反馈
【摘要】:COM客户/服务器模型用一句话来概括就是“COM组件向COM客户提供服务”。整个的客户/服务器模型如图8-5所示。图8-5COM组件的应用模型客户/服务器应用模型有很多的优势,比如:高稳定性和可靠性、很强的扩展性和事务处理能力等。图8-6中主要体现了四种类型的客户/服务器模型,其中每一个箭头就代表一个客户/服务器关系,圆圈表示对象提供的接口。

VisualC++高级编程技术:客户/服务器模型示例

COM客户/服务器模型(Client/Server,简称C/S模型)用一句话来概括就是“COM组件向COM客户提供服务”。COM组件是服务者,承担着提供服务的功能,而使用组件的程序则称为客户,客户是服务的需求者。从COM的核心机制看,在组件与客户打交道的过程中,接口是处于核心地位的,而COM库又在这里起着至关重要的作用。整个的客户/服务器模型如图8-5所示。

图8-5 COM组件的应用模型(客户/服务器模型)

客户/服务器应用模型有很多的优势,比如:高稳定性和可靠性、很强的扩展性和事务处理能力等。COM因为规定了标准,所以它能以更加灵活的方式使用该模型,这种灵活性可以用图形来说明,参见图8-6。

图8-6中主要体现了四种类型的客户/服务器模型,其中每一个箭头就代表一个客户/服务器关系(这里省略了COM库和注册表),圆圈表示对象提供的接口。(www.xing528.com)

第一种类型:客户程序C与COM对象A的关系是这种类型,它们之间只是一个简单的客户/服务器关系。

第二种类型:COM对象B既为客户C直接提供服务,也为COM对象A提供服务,这时COM对象A就有了双重身份,它成为对象B的客户,同时又为客户C提供服务。在这样的模型中,COM对象A由客户C直接创建,而COM对象B既可以由客户C创建,也可以由COM对象A创建。

第三种类型和第四种类型:它们是COM的两种重要的对象重用模型,分别称为包容(Containment)和聚合(Aggregation)。在这两种模型中,客户C只知道对象D和F的存在,并不知道对象E和G的存在,但对象D和F在实现某些服务时,分别调用了E和G的服务。包容和聚合的区别在于:在前者的模型中,客户C调用对象D的一些服务时,用对象D调用E,再把结果返回给客户C,所以客户C间接调用对象E的服务;而在后者模型中,虽然客户不知道对象G的存在,但它是直接调用对象G的服务。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈