Business Connectivity Services 对象模型概述

Microsoft Business Connectivity Services (BCS) 提供了丰富且可扩展的对象模型,您可以利用这些模型创建基于现有 Business Connectivity Services 功能构建的自定义解决方案。

上次修改时间: 2010年7月15日

适用范围: SharePoint Server 2010

本文内容
BDC 对象模型
BDC 运行时对象模型
BDC 管理对象模型
BCS 缓存对象模型
BCS 解决方案包对象模型

本主题提供了在运行 Microsoft SharePoint Foundation 2010 或 Microsoft SharePoint Server 2010 的服务器上以及在运行 Microsoft Office 2010 的客户端上可用的 Business Connectivity Services 对象模型的高级概述,如下所示:

  • BDC 对象模型

    • 服务器和客户端上的 BDC 运行时对象模型

    • 服务器上的 BDC 管理对象模型和客户端上的 BDC 管理客户端对象模型

  • 客户端上的 BCS 缓存对象模型

  • 运行 SharePoint Server 2010 的服务器上的 BCS 解决方案包对象模型

    备注

    此对象模型在 SharePoint Foundation 2010 中不可用。

除了 Business Connectivity Services 对象模型之外,您还可使用可与 SharePoint Foundation 2010 一起使用的 SharePoint 列表对象模型和客户端对象模型来处理外部列表。有关详细信息,请参阅将 SharePoint 列表对象模型和 SharePoint 客户端对象模型与外部列表一起使用Business Connectivity Services 类库(该链接可能指向英文页面)中的对象模型文档。

BDC 对象模型

Business Data Connectivity (BDC) Service 使用元数据来描述外部系统的 API。在 BDC 中注册外部系统的 API 说明后,BDC 将提供与外部数据的动态数据访问连接,而无需其他代码。例如,为了显示 SharePoint 列表和 Web 部件中的 AdventureWorks Web 服务中的数据,有经验的用户或开发人员会通过定义 Web 服务中可用的业务实体和方法来定义元数据。在 AdventureWorks 示例中,您可能需要定义以下外部内容类型的元数据:Customer 和 SalesOrder。可通过使用 Microsoft SharePoint Designer 2010 轻松执行此操作。外部内容类型由对象模型中的 Entity 对象表示。对于要使其在 BDC 中可用的每个外部内容类型,您应为将用于提取外部系统中的数据的方法定义元数据。

BDC 元数据模型将基础物理源抽象化,并为使用不同类型的外部系统的元数据作者提供一致的简单模型。图 1 演示了元数据对象的层次结构。

图 1. 元数据对象的层次结构

元数据对象的层次结构

BDC 模型定义了语义元数据,如外部内容类型和为 API 添加含义的关联。在将该模型导入 BDC 元数据存储中后,通过使用 BDC 对自定义解决方案进行编程的开发人员便无需了解 API,即可改用简化的 BDC 对象模型。例如,BDC 运行时对象模型提供了 System.Entity、Entity.FindFiltered 和 Entity.FindAssociated 等调用,它们将简化获取所需外部数据的过程。利用此设计,开发人员可更轻松地使用通常具备复杂 API 的外部系统。

必须先将 BDC 模型存储在关系数据库中并加载到内存,然后才能通过 BDC 运行时解释这些模型。用于保留、读取和修改 BDC 模型的数据库表和存储过程的集合构成了 BDC 元数据存储组件。该组件仅在 Business Connectivity Services 的服务器部署中存在。您应使用管理对象模型来编辑 BDC 模型的元素,而不是直接编辑数据库;绝不要编辑数据库。在客户端上,此组件将替换为 Microsoft SQL Server 2005 Compact Edition 数据库中 BDC 模型的暂时内存中反序列化。

图 2 演示 BDC 的低级体系结构。

图 2. BDC 的低级体系结构

BDC 的低级体系结构

备注

BDC 元数据存储不包含外部数据。它只包含有关外部系统的元数据。

在使用 BDC 对象模型时,您应了解与业务数据目录对象模型的向后兼容性和沙盒解决方案中对象模型的可用性的以下相关信息。

与业务数据目录的向后兼容性

Microsoft SharePoint 2010 中的业务数据连接对象模型与 Microsoft Office SharePoint Server 2007 中的业务数据目录对象模型不兼容,尽管这两个对象模型非常相似。但由于 SharePoint 2010 包含过时的业务数据目录对象模型,因此使用此对象模型的现有应用程序将在新版本的 SharePoint 2010 中继续正常运行。建议您在 SharePoint 2010 中使用新的业务数据连接模型,以便使用产品中公开的丰富功能。还建议您迁移现有应用程序以使用业务数据连接对象模型,从而确保将来兼容和利用新的功能。有关升级到 SharePoint Server 2010 的详细信息,请参阅计划升级到 Business Connectivity Services (SharePoint Server 2010)

BDC 对象模型在沙盒解决方案中不可用

无法直接从沙盒解决方案中调用业务数据连接对象模型。有关 SharePoint 中的沙盒解决方案的详细信息,请参阅沙盒解决方案。不过,业务数据连接 API 与 Microsoft .NET Framework 安全模型兼容,并可通过在 .NET Framework 部分信任下运行的代码调用。有关 .NET Framework 中的代码访问安全性的详细信息,请参阅代码访问安全性。即使在通过部分信任的代码来调用业务数据连接 API 时,因该调用而运行的任何外部代码都将在完全信任下执行,包括 Web 服务代理, .NET 连接器程序集、自定义连接器、自定义类型反射器和自定义呈现器。

BDC 运行时对象模型

如 BDC 的体系结构图中所示,BDC 公共接口具有两组 API。运行时对象模型和管理对象模型。

运行时对象模型专供 BDC 客户端和应用程序使用。其主要功能是提供一个面向对象的直观接口,该接口可对基础数据源进行抽象化。运行时对象模型使客户端应用程序无需使用特定于外部系统的编码范例,并使客户端能够通过单个联合接口来访问所有外部系统。由于运行时对象模型的存在,使得对 SAP 应用程序调用方法与对 Siebel 应用程序调用方法或对 Microsoft SQL Server 执行查询非常相似。通过使用运行时对象模型,应用程序可读取、写入和更新外部数据。

备注

BDC 将实际方法调用委派给数据库的相应 ADO.NET 提供程序、Web 服务的 Web 服务代理以及 .NET Framework 程序集的 .NET Framework 程序集。

由于运行时对象模型使用的是内存中的缓存元数据,因此其速度很快。必须在元数据存储中查询元数据信息的客户端应使用运行时对象模型。

Runtime 命名空间具有三个关键对象:

  • IEntity  表示外部系统中的业务实体(如 Customer 或 Order),它通常称作外部内容类型。

  • IEntityInstance  从概念上说,实体实例是从 BDC 中的外部系统返回的单个项。IEntityInstance 接口将对基础数据源进行抽象化,并使客户端无需使用特定于应用程序的代码范例;使客户端可通过一种简化方式来访问所有业务数据。通过使用 IEntityInstance 接口,可按照使用由 Web 服务返回的复杂 .NET Framework 结构的方式来使用数据库中的数据行。

    BDC 中的实体实例已附加特殊语义。例如,它能够确定行中表示实体实例标识符的字段,并使您能够对该实体实例调用 GetAssociated、GetIdentifierValues 和Execute 等方法。

  • IEntityInstanceEnumerator  可使用枚举器读取集合中的数据,但不能使用枚举器修改基础集合。IEntityInstanceEnumerator 支持流,因此它在外部系统返回大量数据时很有用。

BDC 管理对象模型

可使用管理对象模型在 BDC 元数据存储中创建、读取、更新和删除元数据对象。它具有相对较高的延迟性,在 BDC 更新部署中的所有前端 Web 服务器和应用程序服务器中的缓存之前,最多会有一分钟的延迟。此组件存在于 Business Connectivity Services 的服务器部署上。管理对象模型的客户端版本存在于客户端上。

BCS 缓存对象模型

Microsoft Business Connectivity Services (BCS) 提供了一个公共对象模型(即 Microsoft.BusinessData.Offlining 命名空间)以便以编程方式刷新 BCS 客户端缓存、修改缓存订阅和查找并纠正错误。

在 BDC 运行时对象模型中的方法实例级别,可利用 Business Connectivity Services 传入一个操作模式,该模式告知运行时是否要使用缓存以及如何使用缓存。Business Connectivity Services 支持两类缓存使用模式,如下所示:

  • 联机  如果将应用程序设置为联机模式,则不使用缓存。对外部系统的所有调用(例如,ReadUpdate)将通过 Business Data Connectivity (BDC) Service 运行时直接传送到外部系统。

  • 缓存  如果将应用程序设置为缓存模式,则使用缓存。在部署时,使用外部系统中的实体实例填充缓存,并按指定间隔刷新外部系统中的数据。不会立即将操作传送到外部系统,而是将其传送到缓存。缓存会将这些操作放入操作队列,并逐个执行它们。

BCS 解决方案包对象模型

声明性解决方案是一类在 Microsoft Outlook 2010 中运行的解决方案。声明性解决方案以声明方式使用 Business Connectivity Services 富客户端运行时。您应创建几个 XML文件(例如,BDC 模型、解决方案清单 (OIR.config)、订阅、功能区和布局),然后在打包过程中将它们传递到 Business Connectivity Services。Business Connectivity Services 在 Outlook 中打包和部署解决方案,并按照您在 XML 文件中指定的方式运行它。在此类解决方案中,您可参考和使用自定义数据部件、自定义操作、任务窗格和功能区。

Business Connectivity Services 提供了一个公共对象模型,以便在 Outlook 中打包声明性解决方案。在客户端上将生成的包部署为 Visual Studio 2010 中的 Office 开发工具加载项包。加载项的二进制文件不是包的一部分,而是在设置 Microsoft Office 时由 Business Connectivity Services 作为全局程序集缓存中当前放置的托管 DLL 的一部分提供。

请参阅

概念

设置上下文便于使用 BDC 对象模型

最常用的 15 个 BCS 对象模型类

将 SharePoint 列表对象模型和 SharePoint 客户端对象模型与外部列表一起使用

什么是外部内容类型?

BDC 模型基础结构

Business Connectivity Services:操作方法和演练

Business Connectivity Services:示例 XML 和代码示例

其他资源

Business Connectivity Services 类库