DCOM揭秘之三

DCOM例子,绝对可以用的。 安装和配置说明请参考我的BLOG文章: DCOM在局域网内安装配置说明 地址: http://hi.youkuaiyun.com/link.php?url=http://blog.youkuaiyun.com%2Flinhancai 立即下载
理解简单的DCOM服务器

  以上我们主要讲解了如何通过一个客户 应用 使用COM。对于客户来说,COM的编程技巧是相当简单的。客户端的应用向COM子系统请求一个特定的组件, 服务器 端将其传送过来。 

  实际上,对于后台的组件管理工作,还需要写很多的代码。真正的对象实现需要使用复杂的系统组件和标准的应用模块。就算是使用MFC,也是很复杂的。大多数的专业编程者都不会花时间来研究这个过程。自从COM的标准发布以来,很快就令我们明白到让开发者来自己写这些代码是不现实的。

  当你查看实现COM的真正代码时,你会发现其中大部分都是重复的。对于这类复杂的问题,传统 C ++的解决之道是创建一个COM类库。实际上,MPC OLE类提供了大部分的COM特性。

  不过对于COM组件来说,MFC和OLE并不是一个好的选择,有几个理由。随着ActiveX和 微软 Internet策略的推出,COM对象应该要非常的紧凑和快速。ActiveX需要COM对象可以经过网络相当快地被复制。如果你使用MFC较多,就会发现它实在太大了(特别是在静态链接时)。通过网络来传送巨大的MFC对象是不现实的。

  或许通过MFC/OLE方法来实现COM组件的最大问题是复杂性。OLE编程是复杂的,并且大部分的编程者都不会在上面走得很远。有大量关于OLE的书,这都说明它是非常难以掌握的。

  由于OLE的开发有不少的难度,因此微软创建了一个称为ATL(Active Template Library)新工具。对于COM编程来说,ATL是当前最实用的工具。实际上,如果你对其背后的东西没有兴趣,使用ATL向导来编写COM服务器是相当简单的。

  这里介绍的例子都是通过ATL和ATL应用向导来创建的。这一节我们将讲解如何建立一个基于ATL的服务器,并对向导产生的代码给出了一个摘要。


关于代码

  有一点你要花时间去习惯,编写ATL服务器和传统的编程是不一样的。COM服务器其实是几个独立组件的协作构成的,包括有:

   。你的应用

   。COM子系统

   。ATL模板类

   。“IDL”代码和MIDL产生的“C”头文件和程序

   。系统寄存器

  要将一个基于ATL的COM应用作为一个整体看是挺困难的。即使你知道它正在做什么,还有很大一块应用你是看不到的。真正服务器中的大部分逻辑都深入隐藏在ATL的头文件中。你将不会找到一个单一的用来管理和控制服务器的main()函数。你只找到一个用来调用基本ATL对象的瘦外壳。

  在以下的部分中,我们将把所有这些令服务器运作的部分放在一起。首先我们会使用ATL COM应用向导来创建服务器。第二步我们将加入一个COM对象和一个方法。我们将写一个进程内的服务器,因为它是最容易实现的COM服务器之一。一个进程内的服务器也不用建立一个proxy和stub对象。

  建立一个基于DLL(进程内)的COM服务器

  一个进程内的服务器就是一个会在运行时载入到你程序中的COM类。用其它话来说,就是一个动态链接库(DLL)中的COM对象。用传统的观点来看,一个DLL并不是一个真正的服务器,因为它会直接载入到客户的地址空间中。如果你熟悉DLL,你已经知道了许多关于COM对象如何载入和映射到调用程序的知识。

  通常在调用LoadLibrary()时,DLL就会被载入。在COM中,你无需显式调用LoadLibrary()。在客户端的程序调用CoCreateInstance()时,所有的处理都会自动启动。CoCreateInstance需要的其中一个参数是你要使用的COM类的GUID。当服务器在编译时创建时,它就会登记了所有它支持的COM对象。当客户端需要该对象时,COM找到服务器DLL,并且自动装载它。一旦载入,DLL就拥有了创建COM对象的类库。

  CoCreateInstance() 返回一个指向COM对象的指针,它是用来调用方法的(再这里的例子中,这个方法就是被称为Beep()的方法)。COM的一个便利之处是DLL可以在不需要的时候被自动卸载。在对象被释放和CoUninitialize()被调用后,FreeLibrary()将会被调用来卸载服务器DLL。

  如果你对以上的都不熟悉也不要紧。要使用COM,你不需要知道关于DLL的任何知识。你所要做的是调用CoCreateInstance()。COM的其中一个好处是它隐藏了这些细节,因此你无需担心此类问题。

  进程内的COM服务器有优点也有缺点。如果动态链接是你的系统设计中的重要一环,那么你将发现COM可提供一个极好的方式来管理DLL。一些有经验的编程者会将所有他们的DLL都写成为进程内的COM服务器。COM处理所有涉及载入、卸载的杂事,而输出DLL函数和COM函数调用只有很少的系统开销。

  我们选择一个进程内服务器的主要理由就更简单了:它可令例子更加简单。我们不必关心如何启动远程的服务器(EXE或者服务),因为我们的服务器将会在需要的时候自动载入。我们也无需建立一个proxy/stub DLL来做marshalling的工作。

  缺点是,由于进程内的服务器与我们的客户绑定很紧密,因此COM许多重要的“分布”特性没有展现出来。一个DLL服务器和它的客户共享内存,而一个分布的服务器将令客户端更加隔离开来。在一个分布的客户和服务器间传送数据的处理被称为marshaling。marshaling在COM上的利用是受到限制的,而在进程内的服务器中,我们无需关心这些。

使用ATL向导创建服务器

  为了让你理解COM的基本规则,我们将创建一个非常简单的COM服务器。该服务器只有一个方法--Beep()。这个方法只是发出Beep的声音--一个不是很有用的方法。我们将要做的是设置该服务器所有部分。一旦该体系设置完毕,要加入其它有用的方法就变得非常简单了。

  使用ATL AppWizard是一个可快速产生一个COM服务器的简单方法。该向导可让我们选择所有基本的选项,并且将产生我们需要的大部分代码。以下就是一个产生服务器的详细步骤。在这个程序中,我们将称该服务器为BeepServer。所有的COM服务器都至少要有一个接口,而我们的接口将会被称为IBeepObj。你可以为你的COM接口取任意的名字,不过如果你想遵循标准的命名传统,你最好使用“I”的前缀来命名它。

  注意:很多人在这时可能还会分不清COM“对象”、“类”和“接口”定义之间的区别。特别是对于C++的编程者,这些术语开始都不太令人舒服。不过,当你了解这些例子后,你的混淆就会减少。在大部分的微软文档中,COM类都用“coclass”来表示,以将COM类和普通的C++类区分开来。

  以下就是使用Visual C++ version 6来创建一个新的COM服务器的步骤(它与版本5中的几乎一样):

   1。首先,创建一个新的“ATL COM AppWizard”项目。由主菜单中选择File/New。

   2。在“New”的对话框中选择“Projects”标签页。在项目类型中选择“ATL COM AppWizard”。选择以下的选项并且按下OK。

   。项目的名字:BeepServer

   。创建新的Workspace

   。Location:你的工作目录



******************图一*******************

  3。在第一个的AppWizard对话框中我们将创建一个基于DLL(进程内)的服务器。输入以下的设置:

   。动态链接库

   。不允许合并proxy/stub代码

   。不支持MFC


*******************图二********************

  4。按下完成

  AppWizard创建一个基于DLL的COM服务器,并且带有所有必要的文件。虽然该服务器将可编译和运行,但它只是一个空壳。为了令它做我们想做的事情,我们将需要一个COM接口和支持该接口的类。我们也必须写接口中的方法。

  加入一个COM对象和一个方法

  现在我们继续COM对象的定义,包括接口和方法。类的名字是BeepObj,它拥有一个称为IBeepObj的接口:
   1。查看“Class View”的标签页。在开始的时候它的列表中仅有唯一一个项目。右击“BeepServer Classes”项

   2。选择“New ATL Object...”。这个步骤也可通过主菜单来完成。在弹出的菜单项中选择“New ATL Object”。


******************图三*******************

  3.在对象向导的对话框中选择“Objects”。选择“Simple Object”并且按Next。

 
**************图四*****************

  4。选择Names的标签页。输入对象的名字:BeepObj。其余所有的选择都会自动填入标准的名字


************图五*******************

  5。按下“Attributes”标签页并且选择Apartment Threading, Custom Interface, No Aggregation。很明显,在aggregation在这个服务器中并没有用到。


**************图六*****************

  6。按下OK,这将创建Com对象

为服务器加入一个方法

  我们现在已经创建了一个空的COM对象。不过,它还是一个无用的对象,因为它并不做任何的事情。我们将创建一个称为Beep()的简单方法,它可令系统发出一次beep声。我们的COM方法将调用Win32 API函数:Beep()。

  1。打开“Class View”标签。选择IBeepObj的接口。该接口有由一个类似匙的小图标代表


***************图七******************

  2。右击IBeepObj的接口。由菜单中选择“Add Method”。

  3。在“Add Method to Interface”对话框中,输入以下的信息并且按下OK。加入“Beep”的方法并且给它一个单一的[in]参数作为持续时间。这将是发beep音的长度,以毫秒计。


***************图八***********************

  4.“Add Method”已经创建了我们定义方法的MIDL定义。该定义以IDL编写,并且定义该方法到MIDL编译器。如果你想看IDL的代码,双击“Calss View”标签页中的“IBeepObj”接口。这将打开和显示BeepServer.IDL文件的内容。我们没有必要改变这个文件,我们的接口定义如下所示:

interface IBeepObj : IUnknown
{
 [helpstring("method Beep")] 
 HRESULT Beep([in] LONG duration);
};

  IDL的句法与 C ++类似。这一行和C++的函数原型相当。我们将在以后谈论IDL的句法。

  5。现在我们将要写该方法的C++代码。AppWizard已经为我们的C++函数写入一个空壳,并且将它加入到头文件的类定义中(BeepServer.H)。

  打开BeepObj.CPP的源文件。找到//TODO:行并且加入到API Beep函数的调用。修改Beep()方法为如下:

STDMETHODIMP CBeepObj::Beep(LONG duration)
{
// TODO: Add your implementation code here
::Beep( 550, duration );
return S_OK;
}

  6。保存文件,并且便宜该项目

  我们已经拥有一个完整的COM服务器了。当项目结束编译时,你应该会看到如下的信息:

---------Configuration: BeepServer - Win32 Debug------
Creating Type Library...
Microsoft (R) MIDL Compiler Version 5.01.0158 
Copyright (c) Microsoft Corp 1991-1997. All rights reserved.
Processing D:\UnderCOM\BeepServer\BeepServer.idl
BeepServer.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\oaidl.idl
oaidl.idl
.
.
Compiling resources...
Compiling...
StdAfx.cpp
Compiling...
BeepServer.cpp
BeepObj.cpp
Generating Code...
Linking...
Creating library Debug/BeepServer.lib and object Debug/BeepServer.exp
Performing registration

BeepServer.dll - 0 error(s), 0 warning(s)

  这意味着开发工具已经完成了以下的步骤:

   。执行MIDL编译器来产生代码和类库

   。编译源文件

   。链接项目来创建BeepServer.DLL

   。注册COM组件

   。使用RegSvr32注册DLL,以便在需要的时候自动下载

  看看我们产生的项目吧。在我们按下按钮的时候,AppWizard已经产生了文件。如果你观看“FileView”标签,可看到已经产生了以下的文件

  
源文件描述
BeepServer.dswProject workspace
BeepServer.dsp项目文件
BeepServer.plg项目的日志文件,包含了项目建立时的详细错误信息
BeepServer.cppDLL主程序,DLL输出的实现
BeepServer.hMIDL产生文件包含了接口的定义
BeepServer.def声明标准的DLL模块参数: DllCanUnloadNow, DllGetClassObject, DllUnregisterServer 
BeepServer.idlBeepServer.dll的IDL源。IDL文件定义了所有的COM组件
BeepServer.rc资源文件。这里主要的资源是IDR_BEEPDLLOBJ,它定义了注册表的脚本,用来将COM的信息载入到寄存器中。
Resource.h 微软Developer Studio产生的包含文件
StdAfx.cpp预编译头的源
Stdafx.h标准的头
BeepServer.tlb由MIDL产生的类库。该文件是COM接口和对象的二进制描述。作为连接一个客户的一个可选方法,TypeLib是非常有用的
BeepObj.cppCBeepObj的实现。该文件包含了所有真正的C++代码,用来实现COM BeepObj对象中的所有方法。
BeepObj.hBeepObj COM对象的定义
BeepObj.rgs注册表的脚本,用来在注册表中登记COM组件。在服务器工程被建立时,注册是自动进行的
BeepServer_i.c包含了IID和CLSID的真正定义,这个文件通常被包含在cpp代码中。
还有另外几个proxy/stub文件,由MIDL产生。

  只是几分钟,我们就创建了一个完整的COM服务器 应用 。在没有向导的日子里,写一个服务器将需要数个小时。向导的缺点是我们有了一大块没有完全弄懂的代码。在下面的部分我们将更为详细地查看产生的模块,然后是整个的应用。

   总结

  整个服务器的代码几乎都是完全由ATL向导产生的。我们使用的是一个基于DLL的服务器。不过这个过程对于所有的服务器类型几乎都是一样的。使用这个架构,我们可以很快的开发出一个服务器应用,因为你不需知道许多的细节就可以开始工作。

  在以下的章节中,我们将查看进程内服务器和ATL的代码。

深入解析ADC采样电容:从充电误差到LSB精度的关键设计 本文深入解析了ADC采样电容在模数转换中的核心作用,重点探讨了充电时间常数与采样误差的博弈关系。通过推导最小采样时间公式,揭示了精度、速度、源阻抗与内部电容之间的制约关系,并提供了从理论计算到外部驱动电路设计的实战指南,是确保ADC达到LSB精度的关键。 阅读详情

相关推荐

告别谷歌!QGC地面站v4.0.x保姆级教程:用高德/天地图瓦片替换老旧地图源

本文提供QGroundControl(QGC)地面站v4.0.x的详细教程,指导用户如何用高德地图和天地图瓦片替换默认地图源,解决数据陈旧、访问不稳定等问题。教程涵盖环境配置、源码修改、地图集成及性能优化,帮助无人机开发者打造稳定高效的中文地图解决方案。

weixin_30836759的博客 503

DCOM(分布式组件对象模型)原理浅析(一)

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

weixin_34342207的博客 451

走马观碑组智能车竞赛:目标板识别算法优化与实战技巧(基于OpenCV)

本文针对智能车竞赛走马观碑组别的核心挑战,深入探讨了基于OpenCV的目标板识别算法优化与实战技巧。文章系统分析了PVC赛道环境下的光照、运动模糊等干扰因素,详细拆解了从红色矩形定位、透视校正到特征提取与分类的完整流程,并提供了工程优化、速度提升及现场调试的实用策略,旨在帮助参赛队伍构建一套在高速运动中既准又快的鲁棒识别系统。

life6的博客 733

DCOM揭秘之二

理解简单的DCOM服务器   以上我们主要讲解了如何通过一个客户应用使用COM。对于客户来说,COM的编程技巧是相当简单的。客户端的应用向COM子系统请求一个特定的组件,服务器端将其传送过来。    实际上,对于后台的组件管理工作,还需要写很多的代码。真正的对象实现需要使用复杂的系统组件和标准的应用模块。就算是使用MFC,也是很复杂的。大多数的专业编程者都不会花时间来研究这个过程。自从

stypace的专栏 1648

PCB设计教程【入门篇】——PCB设计基础-PCB构成与组成

本教程基于B站Expert电子实验室的PCB设计教学的整理,为个人学习记录,旨在帮助PCB设计新手入门。所有内容仅作学习交流使用,无任何商业目的。若涉及侵权,请随时联系,将会立即处理。

2501_91732643的博客 7656

告别手动拖拽!PyQt5/PyQt6 QTableView列宽自适应窗口的三种实战方案(附性能对比)

本文详细介绍了PyQt5/PyQt6中QTableView列宽自适应窗口的三种实战方案,包括Stretch模式、resizeEvent手动计算和ResizeToContents模式,并附有性能对比。帮助开发者解决窗口大小变化时列宽不变的常见问题,提升用户体验和开发效率。

weixin_42538752的博客 234

DCOM揭秘

http://www.pcdog.com/p/html/2004927/27920042820_1.htm Distributed COM --跨网络工作  DCOM代表的是“Distributed(分布式)”COM。在前面的部分中,我们已经讲解了运行在同一部计算机的COM客户和服务器。在这一部分,我们将讨论如何将它扩展到DCOM的领域和分布式计算。   大多数的COM编程者仅使用本地的“进程内”

天道酬勤 6624

大语言模型在建筑规范自动化合规审查中的微调策略与规模效应实践

大语言模型(LLM)通过在海量文本数据上预训练,具备了强大的语言理解和生成能力。其核心原理是基于Transformer架构,通过自注意力机制捕捉长距离依赖关系。在工程实践中,为了将这种通用能力适配到建筑、法律、金融等高度专业化的垂直领域,通常需要采用领域微调技术。微调通过使用特定领域的高质量指令数据对模型参数进行更新,使其掌握专业术语、逻辑规则和任务范式,从而解决通用模型在专业场景下知识匮乏和“幻觉”问题。结合检索增强生成(RAG)技术,将动态外部知识库作为模型的“参考手册”,能进一步提升事实准确性并降低幻

weixin_30667831的博客 364

DCOM原理

1、DCOM       COM的进程透明特性表现在组件对象和客户程序即可以拥有各自的进程空间,也可以共享同一个进程空间,COM负责把客户的调用正确传到组件对象中,并保证参数传递的正确性。组件对象和客户代码不必考虑调用传递的细节,只要按照一般的函数调用的方式实现即可。如果进一步拓展进程透明特性,考虑组件对象与客户程序运行在不同计算机上的情形,把进程透明性拓展为位置透明性,形成分布式组件对象模型

frank_zu的专栏 3235

基于 PCL 的工业盒体点云精准分割

本文提出一种基于PCL点云库的工业盒体点云分割算法,采用由粗到精的分层策略解决传统方法在噪声、稀疏和堆叠场景下的分割问题。算法通过区域生长粗分割、RANSAC平面筛选、球面回溯补全、凹包边界提取和圆柱回溯精分割五大核心模块,充分利用盒体几何先验特征,实现高效精准的分割效果。文章详细阐述了算法流程、参数调优指南及工程化要点,指出该方法相比深度学习具有速度快、鲁棒性强、部署简单的优势。同时分析了算法在倾斜、异形目标上的局限性,并展望了结合深度学习特征的混合模型发展方向。该算法为工业自动化场景中的3D视觉检测提供

weixin_45196569的博客 172

软考 系统架构设计师历年真题集萃(248)

软考 系统架构设计师历年真题集萃(248)

phmatthaus的专栏 792

DCOM 揭秘

DCOM 揭秘之四 8/21/2001 9:0:32· ·QQ新人类··Yesky1 2  下一页  我们已经讨论了DCOM的基本要点,了解了如何创建一个简单的DCOM服务器和一个相关的客户端。你也可以看到这个基本的过程是非常简单的---ATL向导处理了服务器端的大部分细节,要激活服务器,你只需要在客户端写10行左右的代码就可以了。  接下来我们将讨论两个相

8080的专栏 1250

chembl_webresource_client 包数据接口下载chembl数据库;ZINC数据库下载、simles获取

点击进去https://zinc.docking.org/subclasses/kinase/predictions/,然后下载sdf模式,这里可以转化simles格式,如果下载csv里面没有包含simles。参考:https://github.com/chembl/chembl_webresource_client/blob/master/demo_wrc.ipynb。参考:https://zinc.docking.org/这是网页搜索查看,16条数据。这个数据这下载特别慢。

weixin_42357472的博客 3052

DCOM 揭秘之三

Distributed COM --跨网络工作   DCOM代表的是“Distributed(分布式)”COM。在前面的部分中,我们已经讲解了运行在同一部计算机的COM客户和服务器。在这一部分,我们将讨论如何将它扩展到DCOM的领域和分布式计算。    大多数的COM编程者仅使用本地的“进程内”服务器,作为DLL运行。DLL载入到客户程序的处理空间,因此很可靠和有效。我们打算使用一

stypace的专栏 9652

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

DCOM揭秘之六

<br />   Distributed COM --跨网络工作<br /> <br /><br /><br />  DCOM代表的是“Distributed(分布式)”COM。在前面的部分中,我们已经讲解了运行在同一部计算机的COM客户和服务器。在这一部分,我们将讨论如何将它扩展到DCOM的领域和分布式计算。 <br /><br />  大多数的COM编程者仅使用本地的“进程内”服务器,作为DLL运行。DLL载入到客户程序的处理空间,因此很可靠和有效。我们打算使用一个基于EXE的服务器。这意味着服务器和客

谭杰凯的专栏 1110

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

DCOM 揭秘之四

<br />  我们已经讨论了DCOM的基本要点,了解了如何创建一个简单的DCOM服务器和一个相关的客户端。你也可以看到这个基本的过程是非常简单的---ATL向导处理了服务器端的大部分细节,要激活服务器,你只需要在客户端写10行左右的代码就可以了。<br /><br />  接下来我们将讨论两个相关的主题。首先是创建你自己的COM客户和服务器,结合第一部分我们所学到的,让你了解要在自己的代码中集成一个DCOM服务器,确实需要做哪些事情。然后我们将快速地看一下由ATL向导产生的代码。<br /><br /> 

谭杰凯的专栏 530

DCOM揭秘之一

传说中的COM,很难明,咬牙切齿……转载天极的一篇文章,说得稍微易懂点,但依然还是稀里糊涂,不懂……              COM的基本要素         首先要弄懂COM是怎样工作的。为什么这个工作是首要的呢?因为COM使用它自己专有的词汇。第二个原因是COM包含有不少的新概念。要掌握这些词汇和概念,最简单的其中一个方法是将COM对象和普通的C++对象作比较,并且比较它们

embededvc的专栏 1709

DCOM揭秘之五

<br />  理解ATL产生的代码<br /><br />  我们服务器端DLL的源代码是由ATL产生的。对于许多人来说,可以完全不用了解ATL创建的代码。不过,对于一些喜欢寻根究底的人来说,这是不可以接受的。这里就介绍一下由ATL产生的代码。<br /><br />  服务端的DLL代码由三种不同类型的文件组成<br /><br />   首先,是传统的C++源文件和头文件。在开始时,所有这些代码是由ATL向导产生的<br /><br />   Beep方法是通过使用“AddMethod”对话框加入的,

谭杰凯的专栏 744

DCOM揭秘之六——远程COM调用(服务器端和客户端)

DCOM揭秘之六 2001-08-23 09:27作者:QQ新人类出处:Yesky责任编辑:方舟    Distributed COM --跨网络工作   DCOM代表的是“Distributed(分布式)”COM。在前面的部分中,我们已经讲解了运行在同一部计算机的COM客户和服务器。在这一部分,我们将讨论如何将它扩展到DCOM的领域和分布式计算。

coolbear1027的专栏 9826
上一篇: DCOM揭秘之二
下一篇: DCOM 揭秘之四
embededvc
博客等级 码龄21年 176粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值