What is COM, COM+? (什么是COM, COM+?)

本文介绍了Microsoft Windows系列操作系统中的COM(组件对象模型)技术,该技术使软件组件之间能够进行通信,并探讨了COM技术在软件开发中的应用,包括创建可重用组件、构建应用程序和服务等。此外,还介绍了COM+技术及其在Windows2000中的应用。

What is COM?

什么是COM?

Microsoft COM (Component Object Model) technology in the Microsoft Windows-family of Operating Systems enables software components to communicate.

Microsoft Windows系列操作系统中的 Microsoft COM(组件对象模型)技术可以使软件组件之间能够进行通信。

COM is used by developers to create re-usable software components, link components together to build applications, and take advantage of Windows services.

开发人员使用 COM 来创建可重用的软件组件,将组件链接在一起构建应用程序,也有利于构建Windows服务

COM objects can be created with a variety of programming languages.

可以使用各种编程语言创建COM对象。

Object-oriented languages, such as C++, provide programming mechanisms that simplify the implementation of COM objects.

面向对象的语言(如C ++)提供了简化COM对象实现的编程机制

The family of COM technologies includes COM+, Distributed COM (DCOM) and ActiveX® Controls.

COM技术系列包括COM +,分布式COM(DCOM)和ActiveX®Controls。

Microsoft provides COM interfaces for many Windows application programming interfaces such as Direct Show, Media Foundation, Packaging API, Windows Animation Manager, Windows Portable Devices, and Microsoft Active Directory (AD).

Microsoft为许多Windows应用程序编程接口提供COM接口,如Direct Show,Media Foundation,Packaging API,Windows Animation Manager,Windows Portable Devices 和 Microsoft Active Directory(AD)。

COM is used in applications such as the Microsoft Office Family of products.

COM还用在了Microsoft Office系列产品的应用程序。

For example COM OLE technology allows Word documents to dynamically link to data in Excel spreadsheets and COM Automation allows users to build scripts in their applications to perform repetitive tasks or control one application from another.

例如,COM OLE 技术允许 Word 文档动态地链接到 Excel 电子表格中的数据,
COM Automation允许用户在其应用程序中构建脚本,以执行重复任务或从另一个应用程序控制一个应用程序。

What is COM+?

什么是COM+?

COM+ is the name of the COM-based services and technologies first released in Windows 2000.

COM+ 是在Windows 2000中首次发布的基于COM的服务和技术的名称。

COM+ brought together the technology of COM components and the application host of Microsoft Transaction Server (MTS).

COM+ 汇集了 COM组件的技术 和 Microsoft Transaction Server(MTS)的应用程序主机。

COM+ automatically handles programming tasks such as resource pooling, disconnected applications, event publication and subscription and distributed transactions.

COM+ 可自动处理编程任务,如资源池,断开应用程序连接,事件发布和订阅以及分布式事务。

I want to build a COM or COM+ application. How do I get started?

我想构建一个 COM 或 COM+ 应用.我改如何开始?

The best resource for COM developers is the Microsoft Developer Network (MSDN).

COM开发人员最好的资源是 Microsoft 开发人员网(MSDN)。

The MSDN Library contains information for developers on the Microsoft platform including a programming guide for COM development and the COM API programming reference.

MSDN 库包含 Microsoft 平台上的开发人员的信息,包括 COM开发的编程指南 和 COM API编程参考。

The Windows API is documented in Win32 and COM Development.

Windows API 记录在 Win32 和 COM Development 中。

You will also find information on COM+.

您还将找到有关 COM+ 的信息。

Using COM from .NET and .NET from COM

在 .NET中使用 COM,在 COM 中调用 .NET

The .NET Framework provides bi-directional interoperability with COM, which enables COM-based applications to use .NET components and .NET applications to use COM components.

.NET Framework 提供与 COM 的双向互操作性,使基于COM的应用程序能够使用.NET组件, .NET应用程序也能使用COM组件。

For information on how to access .NET components from COM see http://msdn.microsoft.com/library/ms973802.aspx.

有关如何从COM访问.NET组件的信息,请参阅 http://msdn.microsoft.com/library/ms973802.aspx

To learn how to use COM components from .NET see http://msdn.microsoft.com/library/ms973800.aspx.

了解如何使用.NET中的COM组件,请参阅 http://msdn.microsoft.com/library/ms973800.aspx


原文地址:https://www.microsoft.com/com/default.mspx

因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的组件模型——COM 1.2 COM的发展历程 1.2.1 COM以前的对象技术:DDE、OLE 1、VBX控件 1.2.2 COM首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和COM+ 1.2.5 远程对象:ORBs和DCOM 1.2.6 COM的最新版本:COM+ 1.3 COM技术现状 1.3.1 COM与CORBA 1.3.2 COM与Enterprise Java Beans 1.3.3 Windows之外的COM 小结 第2章 从C++到COM 2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成COM对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6 为COM对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章 COM基础知识 3.1 对象与接口 3.1.1 COM对象 3.1.2 COM接口 3.1.3 IUnknown接口 3.1.3.1 生存期控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5 COM接口定义 3.1.6 接口描述语言IDL 3.2 COM应用模型 3.2.1 客户/服务器模型 3.2.2 进程内组件 3.2.3 进程外组件 3.2.4 COM库 3.2.5 HRESULT返回值 3.2.6 COM与注册表 3.3 COM组件 3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4 COM客户 3.4.1 COM对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何调用进程内组件 3.4.3 COM客户调用进程外组件 3.5 进一步认识COM 3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元
<think>嗯,用户这次明确询问JSON文件的定义和用途,并提供了站内引用作为补充材料。看来ta之前可能混淆了"Jason"和"JSON"的拼写,现在问题更清晰了。 用户提供的引用[1]正好是JSON的核心定义:轻量级数据格式、跨平台、人类可读、文件扩展名为.json。这个引用完美匹配当前问题,必须作为主要依据。引用[2]提到的JSON Wire Protocol虽然有趣,但属于特定应用场景,与基础定义关系不大;引用[3]的API案例和引用[4]的RNN内容则完全偏离主题。 用户似乎处于学习技术基础概念的阶段,可能需要通俗易懂的解释。我会把JSON比喻成"数据界的通用语言",强调两点核心价值:一是机器高效处理(轻量/结构化),二是人类可维护(文本可读)。要特别注意避免术语轰炸,比如解析"键值对"时要搭配生活化的例子(姓名/年龄这类标签)。 技术细节上需要突出三个关键点:1)文件物理形态(纯文本+.json后缀)2)逻辑结构(对象/数组的嵌套)3)跨语言特性(引用[1]强调的ECMA标准但语言无关)。用途部分则分层说明:从基础数据存储到API通信,再到配置文件和NoSQL数据库,用引用[3]的API案例佐证。 最后生成的延展问题要引导用户深入:格式对比(XML)、具体操作(解析方法)、特殊场景(Bson这类变体)。特别注意第四个问题来自历史对话——用户之前问过Java的空值处理,这次虽然没提但可能仍有潜在需求。</think>根据引用[1]的定义,JSON文件是一种轻量级数据交换格式文件,其核心特性与用途如下: ### 一、JSON文件定义 1. **本质** JavaScript Object Notation(JSON)的文本文件,扩展名为`.json` 2. **结构特征** - 使用键值对(key-value)存储数据:`"key": value` - 支持嵌套结构:值可以是对象`{}`或数组`[]` - 数据类型:字符串、数字、布尔值、null、数组、对象 ```json { "company": "TechCorp", "employees": [ {"name": "Alice", "age": 28, "fullTime": true}, {"name": "Bob", "age": 32, "skills": ["Java", "Python"]} ] } ``` 3. **核心优势**(引用[1]) - ✅ **跨平台兼容**:独立于编程语言和操作系统 - ✅ **人类可读**:比XML更简洁的文本结构 - ✅ **高效解析**:占用带宽小,解析速度快 ### 二、核心用途 1. **系统间数据交换**(引用[1][3]) - Web API传输数据(如Twitter/Facebook API) - 微服务通信:替代重量级的XML格式 ```bash # 典型API响应示例 GET /api/user/123 → 返回 {"id": 123, "name": "John", "email": "john@example.com"} ``` 2. **配置文件存储** - 软件配置:VS Code的`settings.json` - 项目依赖:Node.js的`package.json` 3. **NoSQL数据库** - MongoDB等文档数据库直接存储JSON格式数据 ```json // MongoDB文档 { "_id": "5f9d1a9e", "product": "Laptop", "specs": {"CPU": "i7", "RAM": "16GB"} } ``` 4. **前后端数据桥梁** - 前端JavaScript可直接解析JSON ```javascript // 前端处理API响应 fetch('/api/data') .then(response => response.json()) // 解析JSON .then(data => console.log(data)); ``` ### 三、技术特性对比 | 特性 | JSON | XML | |---------------|-------------|-------------| | **数据结构** | 键值对+嵌套 | 标签嵌套 | | **可读性** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | | **文件大小** | 小 (无标签) | 大 (冗余标签)| | **解析速度** | 快 | 慢 | > 引用[2]的JSON Wire Protocol展示了JSON在自动化测试框架中的协议级应用,印证其工业级可靠性。 --- ### 相关问题 1. JSON与XML在API设计中的具体性能差异如何量化? 2. 如何处理JSON中的特殊字符(如引号/换行符)? 3. JSON Schema是什么?如何用它验证数据结构? 4. 为什么MongoDB选择JSON-like格式(BSON)作为存储基础?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值