今天主要学习了一下内容:
1.NET Framework 高级开发
Managed Extensibility Framework 概述
XML Web Services Created Using ASP.NET and XML Web Service Clients
2下面介绍个章节的详细内容:
外接程序和扩展性
外接程序和扩展性外接程序为宿主应用程序提供扩展的功能或服务。 .NET Framework 提供了一个编程模型,编程人员可以使用该模型开发外接程序并在外接程序的宿主应用程序中激活它们。 该模型通过在宿主与外接程序之间构造一个通信管线来实现这一点。 该模型是通过使用System.AddIn、System.AddIn.Hosting、System.AddIn.Pipeline 和 System.AddIn.Contract 命名空间中的类型来实现的。
本概述包含以下几节:
外接程序管线
这些管线段的程序集不需要在同一应用程序域中。 可以将外接程序加载到其自己的新应用程序域、现有的应用程序域中,甚至加载到宿主的应用程序域中。 可以将多个外接程序加载到同一应用程序域中,从而使外接程序可以共享资源和安全上下文。外接程序模型支持并建议在宿主和外接程序之间有一个可选边界,这个可选边界称为隔离边界(也称为远程处理边界)。 此边界可以是应用程序域或进程边界。
管线中间的协定段加载到宿主的应用程序域和外接程序的应用程序域。 协定定义宿主和外接程序之间用于互相交换类型的虚方法。
若要通过隔离边界进行传递,则类型必须或者是协定类型,或者是可序列化类型。 非协定或非可序列化类型的类型必须由管线中的适配器段转换为协定。
管线的视图段是抽象基类或接口,用于向宿主和外接程序提供一个它们共享的、由协定定义的方法的视图。
下面介绍外接程序模型的功能。
独立的版本控制
外接程序模型允许宿主和外接程序独立进行版本控制。 因此,使用外接程序模型可以实现以下方案:
创建一个适配器,该适配器使宿主能够使用为以前版本的宿主生成的外接程序。
创建一个适配器,该适配器使宿主能够使用为以后版本的宿主生成的外接程序。
创建一个适配器,该适配器使宿主能够使用为其他宿主生成的外接程序。
发现和激活
可以使用表示某个信息存储区中发现的外接程序的集合中的标记来激活外接程序。 外接程序是通过搜索对宿主的外接程序视图进行定义的类型找到的。 您还可以通过定义外接程序的类型发现特定的外接程序。 信息存储区包含两个缓存文件:管线存储区和外接程序存储区。
.
隔离级别和外部进程
外接程序模型支持外接程序与其宿主之间或者不同外接程序之间的若干隔离级别。 从最低的隔离程度开始,这些级别如下所述
外接程序与宿主运行在同一应用程序域中。 不建议使用此隔离级别,其原因是您失去了使用不同应用程序域时获取的隔离和卸载功能。
多个外接程序加载到同一应用程序域,并且该应用程序域不同于宿主使用的应用程序域。
每个外接程序以独占形式加载到其自己的应用程序域。 这是最为常见的隔离级别。
多个外接程序加载到外部进程中的同一应用程序域。
每个外接程序以独占形式加载到外部进程中其自己的应用程序域。 这是一种隔离程度最高的方案。
生存期管理
由于外接应用程序模型跨应用程序域和进程边界,因此自行进行垃圾回收不足以释放和回收对象。 外接程序模型提供使用标记和引用计数的生存期管理机制,通常不需要进行额外编程。.