外接程序和扩展性

上传人:汽*** 文档编号:508552810 上传时间:2023-05-06 格式:DOCX 页数:26 大小:148.10KB
返回 下载 相关 举报
外接程序和扩展性_第1页
第1页 / 共26页
外接程序和扩展性_第2页
第2页 / 共26页
外接程序和扩展性_第3页
第3页 / 共26页
外接程序和扩展性_第4页
第4页 / 共26页
外接程序和扩展性_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《外接程序和扩展性》由会员分享,可在线阅读,更多相关《外接程序和扩展性(26页珍藏版)》请在金锄头文库上搜索。

1、外接程序和扩展性外接程序为宿主应用程序提供扩展的功能或服务。.NET Framework提供了一个编程模型,编程人员 可以使用该模型开发外接程序并在外接程序的宿主应用程序中激活它们。该模型通过在宿主与外接程 序之间构造一个通信管线来实现这一点。该模型是通过使用System.AddIn、System.AddIn.Hosting System.AddIn.Pipeline 和 System.AddIn.Contract 命名空间中的类型来实现的。有关更多代码示例以及用于生成外接程序管线的工具的客户技术预览,请参见Managed Extensibility and Add-In Framework

2、site on CodePlex(CodePlex上的托管扩展性和外接程序框架站点)。本节内容外接程序概述描述.NET Framework的外接程序编程模型。管线开发描述从宿主应用程序到外接程序之间的段的通信管线。在演练主题中提供了一些代码示例, 这些主题介绍如何在Visual Studio中构造管线以及如何将段部署到管线。外接程序的发现介绍如何使外接程序可被宿主应用程序发现。外接程序的激活描述如何激活和停用外接程序。外接程序性能描述如何使用域无关的程序集加载和本机映像来提高外接程序性能。如何:使用不同的隔离和安全级别激活外接程序。介绍如何在各种应用程序域、进程以及安全级别方案中激活外接程序。

3、如何:使用限定数据描述如何应用和访问属于外接程序和管线段的自定义数据。外接程序开发人员体验外接程序概述.NET Framework 3.5更新:2007年11月外接程序的.NET Framework编程模型支持通信管线的开发,通信管线可以实现在各种各样的可适应 情形下承载外接程序。国说明:可以在 Managed Extensibility and Add-In Framework site on CodePlex (CodePlex 上的托管扩展性和外接程序框架站点)上找到更多代码示例,以及有关用于生成外接程序管线的工具的客户技术预览。既外接程序模型外接程序模型包含一系列的段,这些段组成负责外

4、接程序和宿主之间所有通信的外接程序管线(也称 为通信管线)。管线是在外接程序与外接程序宿主之间交换数据的段的对称通信模型。在宿主和外接 程序之间开发这些管线段可以提供必需的抽象层,用于支持外接程序的版本管理和隔离。下图显示了管线。外接程序管线保掬或11.密.1:准晶印器这些管线段的程序集不需要在同一应用程序域中。可以将外接程序加载到其自己的新应用程序域、现 有的应用程序域中,甚至加载到宿主的应用程序域中。可以将多个外接程序加载到同一应用程序域中, 从而使外接程序可以共享资源和安全上下文。外接程序模型支持并建议在宿主和外接程序之间有一个可选边界,这个可选边界称为隔离边界(也称 为远程处理边界)。

5、此边界可以是应用程序域或进程边界。管线中间的协定段加载到宿主的应用程序域和外接程序的应用程序域。协定定义宿主和外接程序之间 用于互相交换类型的虚方法。若要通过隔离边界进行传递,则类型必须或者是协定类型,或者是可序列化类型。非协定或非可序列 化类型的类型必须由管线中的适配器段转换为协定。管线的视图段是抽象基类或接口,用于向宿主和外接程序提供一个它们共享的、由协定定义的方法的 视图。有关开发管线段的更多信息,请参见管线开发下面几节介绍外接程序模型的功能。独立的版本控制外接程序模型允许宿主和外接程序独立进行版本控制。因此,使用外接程序模型可以实现以下方案: 创建一个适配器,该适配器使宿主能够使用为以

6、前版本的宿主生成的外接程序。 创建一个适配器,该适配器使宿主能够使用为以后版本的宿主生成的外接程序。 创建一个适配器,该适配器使宿主能够使用为其他宿主生成的外接程序。发现和激活可以使用表示某个信息存储区中发现的外接程序的集合中的标记来激活外接程序。外接程序是通过搜 索对宿主的外接程序视图进行定义的类型找到的。您还可以通过定义外接程序的类型发现特定的外接 程序。信息存储区包含两个缓存文件:管线存储区和外接程序存储区。有关更新和重新生成信息存储区的信息,请参见外接程序的发现。有关激活外接程序的信息,请参见 外接程序的激活和如何:使用不同的隔离和安全级别激活外接程序。隔离级别和外部进程外接程序模型支

7、持外接程序与其宿主之间或者不同外接程序之间的若干隔离级别。从最低的隔离程度 开始,这些级别如下所述: 外接程序与宿主运行在同一应用程序域中。不建议使用此隔离级别,其原因是您失去了使用 不同应用程序域时获取的隔离和卸载功能。 多个外接程序加载到同一应用程序域,并且该应用程序域不同于宿主使用的应用程序域。 每个外接程序以独占形式加载到其自己的应用程序域。这是最为常见的隔离级别。 多个外接程序加载到外部进程中的同一应用程序域。 每个外接程序以独占形式加载到外部进程中其自己的应用程序域。这是一种隔离程度最高的 方案。有关使用外部进程的更多信息,请参见如何:使用不同的隔离和安全级别激活外接程序。生存期管

8、理由于外接应用程序模型跨应用程序域和进程边界,因此自行进行垃圾回收不足以释放和回收对象。外 接程序模型提供使用标记和引用计数的生存期管理机制,通常不需要进行额外编程。有关更多信息, 请参见生存期管理区分外接应用程序和宿主外接程序和宿主的区别仅在于宿主激活外接程序。宿主可以是两个程序中较大的一个,例如,字处理 应用程序和其拼写检查器;宿主也可以是两个程序中较小的一个,例如,嵌入媒体播放器的即时消息 客户端。外接程序模型既在客户端方案中支持外接程序,也在服务器方案中支持外接程序。服务器外 接程序的示例包括提供具有病毒扫描、垃圾邮件筛选器和IP保护功能的邮件服务器的外接程序。客 户端外接程序示例包括

9、字处理的引用外接程序、图形程序和游戏的专用功能以及本地电子邮件客户端 的病毒扫描。请参见概念应用程序域和程序集其他资源外接程序和扩展性管线开发.NET Framework 3.5更新:2007年11月外接程序管线是管线段的路径,宿主应用程序及其外接程序必须使用管线段来互相进行通信。下面的插图显示了通信管线及其段。外接程序管线外横外中保掬或11智小渎宿主应用程序位于管线的一端,外接程序位于管线的另一端。宿主应用程序和外接程序分别从各自的 端开始向中间移动,它们都具有一个抽象基类,用于定义它们共享的对象模型的视图。这些类型(类) 组成外接程序视图管线段以及外接程序管线段的宿主视图。外接程序视图管线

10、段通常包含多个抽象 类,但外接程序从中继承的类称为外接程序基。外接程序端适配器管线段和宿主端适配器管线段转换其视图管线段和协定管线段之间的类型流。管线 的中段是从IContract接口派生的协定。此协定定义宿主应用程序及其外接程序都将使用的方法。如果将宿主和外接程序加载到不同的应用程序域,则您就会拥有将宿主应用程序范围与外接程序范围 分开的隔离边界。协定是唯一同时加载到宿主和外接程序应用程序域中的程序集。宿主和外接程序只 引用它们各自的协定方法视图。因此,它们被一个抽象层从协定中隔离开。若要开发管线段,必须创建包含管线段的目录结构。有关开发要求以及范围准则的更多信息,请参见 管线开发要求下面的

11、插图显示了组成管线段的类型。插图中显示的类型名称是任意的,但除宿主和外接程序宿主视 图之外的所有其他类型都需要属性,以使构造信息存储区的方法可以发现它们。LJ指示M陌JI性的英理I:需耍的属性“宿主制HostVIewOrAddln类型不需娈 原性。下表介绍了用于激活外接程序的管线段。有关这些段的更多信息,请参见协定、视图和适配器管线段说明宿主创建外接程序实例的应用程序程序集。外接程序的宿主视图表示用于与外接程序通信的对象类型和方法的宿主应用程序的视图。宿主视图是一个 抽象基类或接口。宿主端适配器具有一个或多个类的程序集,该程序集调整方法以使其适合协定,或者调整协定以使其适合方法。此管线段使用H

12、ostAdapterAttribute属性来标识。不支持多模块程序集。协定派生自IContract接口并定义宿主及其外接程序之间的通信类型协议的接口。此管线段通过设置AddInContractAttribute属性来标识。外接程序端适配器具有一个或多个类的程序集,该程序集调整方法以使其适合协定,或者调整协定以使其适合方法。此管线段使用AddInAdapterAttribute属性来标识。包含具有AddInAdapterAttribute属性的类型的外接程序端适配器目录中的每个程序集都将加载到外接程序的应用程序域中。外接程序端目录中的每个程序集都加载到其自己的应用程序域中。不支持多模块程序集外接

13、程序视一个程序集,表示用于与宿主通信的对象类型和方法的外接程序的视图。外接程序视图是一个抽象基类或接口。此管线段使用AddInBaseAttribute属性来标识。包含具有AddInBaseAttribute属性的类型的AddInViews目录中的每个程序集都将加载到外接程序的应用程序域中。外接程序一个执行宿主服务的实例化类型。管线激活路径下面的插图显示了外接程序激活时类型的激活。该图还显示了到宿主的对象传递,例如计算结果或对 象集合的传递。这是最为典型的情形。从外接程序到宿主的激活路径HoitVIewOfAddinAddlnBaseHost AdapterLAddlnAdspter|Acil

14、IiiCbntract)Host AddinA i 11税类电采用芾r %根姓的类型*1作为自己的构耄函那,目标类啊H篇头根姓的类票缝知J#剂i指心新蔓情性的知通过如下操作,构造管线的激活路径:1. 宿主应用程序使用Activate方法激活外接程序。2. 将外接程序、外接程序视图、外接程序端适配器以及协定程序集加载到外接程序的应用程序 域。3. 将外接程序视图(其中,类由AddInBaseAttribute属性标识)用作外接程序端适配器实例 的构造函数创建该实例。外接程序端适配器从协定中继承。4. 将类型化为协定的外接程序端适配器跨(可选)隔离边界传递到宿主端适配器的构造函数。5. 将外接程序

15、宿主视图、宿主端适配器以及协定程序集加载到宿主的应用程序域中。6. 创建宿主端适配器的实例,并将协定用作其构造函数。宿主端适配器从外接程序的宿主视图 中继承。7. 宿主具有外接程序(类型化为外接程序的宿主视图)并可以继续调用其方法。演练以下三个演练主题介绍了如何使用Visual Studio创建管线: 演练:创建可扩展的应用程序介绍为宿主执行加、减、乘和除计算的计算器外接程序。 演练:在宿主发生变化时启用向后兼容性介绍具有增强计算功能的计算器外接程序,并介绍如何保持与第一个计算器外接程序的兼容 性。 演练:在宿主和外接程序之间传递集合介绍如何使用书店方案通过管线传递数据集合。请参见概念 外接程序管线方案外接程序概述外接程序的发现.NET Framework 3.5其他版本Microsoft此主题尚未评级-评价此主题更新:2007年11月宿主应用程序可以发现可用于它们的外接程序。发现包括两个任务: 将有关所有外接程序和管线段的信息注册到缓存文件中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号