使用 .NET 程序集连接器与编写自定义连接器之间的差异

上次修改时间: 2015年3月9日

适用范围: SharePoint Server 2010

本文内容
使用 .NET 程序集连接器
编写自定义连接器
.NET 程序集连接器与自定义连接器各自的优缺点
何时使用每种方法

本主题介绍您应该何时使用随 Microsoft Business Connectivity Services (BCS) 提供的 .NET 程序集连接器、应该何时编写一个自定义连接器,以连接到 Business Connectivity Services 不直接支持的外部系统。

自定义连接器编写为连接到一类外部系统(例如,所有数据库或所有 Web 服务)的某一不可知的外部内容类型。然而,每个 .NET 连接程序集则特定于一个外部内容类型。另外,自定义连接器还提供管理用户界面集成,但 .NET 连接程序集却不提供。

使用 .NET 程序集连接器

当您使用 .NET 程序集连接器而不是编写自定义连接器时,请执行以下操作:

  1. 将代码编写为 Microsoft .NET Framework 类,并将这些类编译到一个主 DLL 和多个依赖 DLL 中。

  2. 将这些 DLL 发布到 Business Data Connectivity (BDC) Service 数据库。

  3. 使用 Microsoft SharePoint Designer 来查找 .NET 连接程序集并创建一个模型。

  4. 将每个实体映射到 DLL 中的某个类,并将相应实体中的每项 BDC 操作映射到相应类中的某个方法。

在运行时,当用户执行 BDC 操作时,将执行主 DLL 中的对应方法。

编写自定义连接器

当您编写自定义连接器而不是使用 .NET 程序集连接器时,请执行以下操作:

  1. 实现 ISystemUtility、IConnectionManager 和 ITypeReflector 接口(只有 ISystemUtility 是强制的)。一个接口也可能重写默认连接管理器和 EntityInstance 接口。此外,通过实现 IAdministrableSystem 可提供管理 UI 属性管理支持,而通过实现 ISystemPropertyValidator 可提供 LobSystem 属性的导入时间验证(不在 Microsoft Office 客户端上)。

  2. 将步骤 1 中的代码编译成一个 DLL,并将其置于服务器和客户端上的全局程序集缓存中。

  3. 为自定义数据源创作模型 XML(SharePoint Designer 2010 不支持自定义连接器的模型创作体验)。

  4. 在运行时,当用户执行 BDC 操作时,将引发 ISystemUtility 类中的 Execute 方法。因此,执行实际后端方法的责任将指派给 Execute 方法(由自定义连接器实现)。

.NET 程序集连接器与自定义连接器各自的优缺点

下表列出了使用 .NET 程序集连接器与自定义连接器的利弊。

.NET 程序集连接器

自定义连接器

实现业务逻辑的 DLL 存储在 BDC 中。因此,您不必分别地将 DLL 置于客户端和服务器上的全局程序集缓存中。

必须将实现自定义连接器的二进制文件置于客户端和服务器上的全局程序集缓存中。

实现业务逻辑的 .NET Framework DLL 通过基于 ClickOnce 的 Business Connectivity Services 部署部署到胖客户端计算机。

需要独立的安装过程才能安装实现自定义连接器的二进制文件。

在客户端计算机上进行部署无需任何管理员权限。

在客户端计算机上将程序集放入全局程序集缓存中需要管理员权限。

使外部列表脱机后将无缝地工作,因为所需的程序集通过 ClickOnce 进行部署。

如果客户端安装程序未将程序集放入全局程序集缓存中,则使外部列表脱机后将中断工作。

可通过很少改变的静态 API 公开业务逻辑时,是很有用的方法。

后端接口频繁改变(动态)时,是很有用的方法。

不提供重写默认 TypeReflector(将各种类型解释为 .NET Framework 类型的 Business Connectivity Services 组件)的工具。

提供重写默认 TypeReflector 和实现自定义 TypeReflector 的工具。

要求 BDC 实体与 .NET Framework 类一对一映射。因此,如果一个 BDC 实体必须聚合多个类,则必须编写一个包装。这将需要重新编译和重新部署 .NET 连接程序集。

没有这类限制。

DLL 接口像 Business Connectivity Services 的后端一样工作,因此,实际的后端完全从 Business Connectivity Services 堆栈抽象出来。因为 .NET Framework 程序集 DLL 在进程中与 Business Connectivity Services 一起加载,所以没有任何安全要求。它始终被认为是"直通的"。

在自定义连接器方法中,可以使用 Business Connectivity Services 提供的不同种类的安全机制,包括自定义安全机制(Business Connectivity Services 本身支持 RevertToSelf、Passthrough、Credentials 和 WindowsCredentials)。

Business Connectivity Services 支持在 SharePoint Designer(检测)和 Visual Studio 2010(DLL 和模型的开发和部署)中使用工具处理 .NET 程序集连接器。

不提供针对自定义连接器的工具处理支持。

何时使用每种方法

.NET 程序集连接器和自定义连接器都是由 Business Connectivity Services 提供的很有价值的 Business Connectivity Services 连接扩展性机制。

如果外部系统是静态的,则推荐使用 .NET 程序集连接器方法。否则,对于后端中的每次更改,您都必须对 .NET 连接程序集 DLL 进行相应更改。这反过来需要重新编译和重新部署程序集和模型。

如果后端接口频繁改变,则推荐使用自定义连接器方法。通过使用此方法,只需要对模型进行更改即可。