三九宝宝网宝宝百科宝宝知识

有关Office的对象模型

11月24日 编辑 39baobao.com

[充分参与“平均分”,渗透数学模型思想方法]小学生要认识除法,必先认识平均分。除法的含义是建立在 平均分 的基础上的,要突破除法学习的难点,关键是理解 分 ,尤其是 平均分 。平均分是认识除法含义的基础,是一个比较抽象的...+阅读

Office 应用程序可以公开 接口。例如,虽然您可以专注于 Word Document 对象并以逻辑方式独立地实例化该对象,但在实际中会执行 Word 进程来提供此对象。但如果您确实需要一个开发平台,那么虽然在某种特定情况下您只使用一个组件,您仍然会希望该平台的其余部分保持可用。您希望该组件使用所需的任何其他平台服务,而不必亲自手动实例化这些服务。

在 Office 解决方案环境中,哪里适合进行组件化?许多客户构建其自己的特定于域、可重复使用的组件,并将其放在 Office 的上层。例如,特定于某种投资银行业务功能的组件可能会使用 Excel 计算引擎。此组件的解决方案端接口是特定于域的,而平台端接口则特定于 Excel。这种抽象允许该组件针对 Excel 的多个版本进行工作,而这通常恰恰是客户所要求的。

或者,您可以构建一个可重复使用、不影响宿主应用程序的通用组件。例如,看一看 UserControl,它使用 Web Services 在自定义任务窗格中显示数据。这个控件可以在多个 Office 应用程序中重复使用。

Office 应用程序随着时间的推移已经发生了演变,它们具有非常不同的功能集,因此不可避免地提供不同的对象模型。尽管如此,但应用程序之间仍然存在一些一致性。例如,对象模型大多具有层次结构,并且根位置通常具有一个 Application 对象。在 Word 中,您可以从该 Application 对象开始查找 Documents 集合,深化各个 Document 对象,然后深化各个 Range 对象。同样,在 Excel 中,您可以从 Application 对象开始下移到 Workbooks 集合,找到该集合中的 Workbook 对象,然后获取工作簿中的各个 Range 对象。

此外,Visual Studio Tools for Office 还在一致的强类型化对象模型上进行分层。您只需看看两个截然不同的 Visual Studio Tools for Office 解决方案(例如基于 Excel 文档的解决方案和基于 Outlook 应用程序的解决方案),就可以了解其一致性。两个解决方案都具有简单的 Startup 和 Shutdown 方法,因此,您可以集中精力于业务需求,而无需考虑宿主应用程序的各个特征。在仍然可以完全访问基础对象模型的同时,您还可以选择在更高的抽象级别下进行工作。

Office 的每个新版本都保持了非常高的向后兼容性。Office 应用程序是 服务器程序, 提供了多个规则(如接口永久性),从而防止出现版本不兼容问题。Office 通常按照这些规则运行。所有 Office 接口都要么为双接口,要么为纯调度接口。纯 vtable 接口(通过扩展,也包括双接口)为永久性接口,但调度接口不是,因为可以在运行时(因而也在后期绑定)发现其可用功能集和签名。在发布新版本时,Office 团队通常会利用这一特点向接口的末尾添加额外的方法和属性。他们通常还会向现有的方法中添加新的可选参数。通过这些技术,Office 可以保持向后兼容性。

保持版本复原能力的另一种技术是使用松散类型化。典型的示例为 加载项必须实现的 IDTExtensibility2 接口。当 Office 应用程序加载某个加载项时,该应用程序将调用 IDTExtensibility2::OnConnection,并传入表示宿主应用程序的松散类型化对象。在 . 代码中,此参数的类型为 System.Object,而在 C++ 中,它是一个通用的 IDispatch 指针。在运行时,它实际上是指向由宿主应用程序所提供的 Application 对象的指针。在构建传统的共享加载项时,向导生成的代码对宿主没有任何影响。这具有两方面的好处:它允许该加载项在支持 加载项的任何应用程序中运行,并允许该加载项在任何这类应用程序的任何版本中运行。

这种对宿主无影响的模型的缺点是松散类型化和后期绑定通常所具有的缺点:不能为所涉及的特定类型提供设计时或编译时支持,因为这些类型在运行时以前是未知的。这极易使编写的代码在运行时失败。另外,后期绑定会带来性能降低,因为每个方法调用都必须完成发现过程,以确定是否确实能够在运行时找到匹配的方法。

在使用 . Framework 开发加载项时,可以继续使用此松散类型化,但除非加载项本身只提供对宿主无影响的功能,否则所具有的优势将十分有限。只要加载项需要提供特定于宿主的功能,您就有可能使用宿主的特定于版本的主互操作程序集 (PIA)。另外,您还可以使用 Visual Studio Tools for Office 通过 . 代码构建加载项。Visual Studio Tools for Office 强制要求强类型化,不但可以为您带来编译时类型检查的好处,还可以为您带来设计时 IntelliSense 和自动完成的好处。强类型化可避免后期绑定所带来的性能开销。

强类型化是否意味着丧失版本的复原能力?不一定。您可以针对某一版本的 Office 构建一个松散类型化的加载项,该加载项几乎肯定可以在更高版本的 Office 中完全正常地工作。使用 . Framework 时,虽然行为会稍稍复杂一些,但您可以得到同样的结果。针对特定版本的 Office PIA 构建的 . 加载项也应能在更高版本中正常工作。实际上有两种方法可以实现这一点:加载项使用构建时所针对的 PIA 版本,或者为 PIA 部署绑定重定向,以便加载项在运行时使用对应于所安装的 Office 版本的更高版本的 PIA。

以下为关联文档:

加拿大留学移民常见骗局,你成为骗子紧盯对象了吗生活中骗局多种多样,一不小心就会上当受骗,尤其是加拿大留学生和移民。留学生和移民都是新到一个陌生地方的人群,对当地的政策或生活习俗等都不是很了解,往往会成为骗子紧盯的对...

我认识到课堂观察的工具——数学例题和模型通过对这两篇文章的分析与探讨,我认识到课堂观察的工具 数学例题和模型,都是非常有效的。如何能够更好地来运用这样的工具,我认为要遵循以下的步骤。第一步、确定要研究的问题...

11类产品列为重点监查对象本报海口12月28日讯 为确保2006年元旦、春节期间的食品安全,昨天,海口开始开展食品安全整治工作,重点对粮、肉、儿童食品等11类产品进行监查。 这11类重点产品品种包括粮、肉、...

儿童村孩子成爱心争“宠”对象由本报发起的“儿童村的孩子们想有个‘家’过年”系列公益活动,已经为儿童村的12名孩子们征集到近百名“爱心爸妈”。许多西安市民都多次来电表示,一定要领上一名儿童村的孩子...

第八讲调动感情方法之对象第八讲调动思想感情的方法之对象感 一、 理论基础 开始学习之前,要问问青少年朋友们:我们播音主持是给谁听?给谁看的? 对了,我们是为听众、观众服务的。既然不是给自己播读,就需要...

房地产估价对象介绍问题房地产估价对象是指一个房地产估价项目中需要评估其客观合理价格或价值的具体房地产。 估价对象是丰富多彩、&考试大&复杂多样的。 从实物角度来看,估价对象主要有: (1)无建筑物...

结构模型膜的分子结构及特点 虽然细胞质膜是包裹在细胞最外层的界膜,但由于细胞的新陈代谢活动必须同细胞外进行物质交换,这就要求细胞质膜具有特殊的结构,以保证生命活动的正常进行。...

VB6.0使用ADO对象连接数据库1. 定义连接对象 Global DBconnect As New ADODB.Connection 2. 执行连接语句 If DBconnect.State = adStateOpen And Not IsEmpty(adStateOpen) Then DBconnect.Close 连接OD...

模型甬翔飞机小项目计划表目标: 1、培养孩子对模型飞机的认知与热爱。 2、培养孩子手眼协调,组装甬翔飞机的技能。 3、培养孩子放飞甬翔飞机的技能。 月份 周次 学习内容 准备 策略 三 月 份 第 二 周...

推荐阅读
图文推荐