BDC 体系结构

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

适用范围: SharePoint Server 2010

本文内容
BDC 模型和 BDC 元数据存储
运行时对象模型
管理对象模型
体系结构组件
BDC 连接器和连接器框架
Secure Store Service 和 SharePoint 安全体系结构
元数据缓存

Business Data Connectivity (BDC) Service 继承了 Microsoft Office SharePoint Server 2007 中提供的业务数据目录。在此版本中,通过 Microsoft SharePoint Foundation 2010 提供 BDC。BDC 允许您以声明方式对外部系统进行建模,以便您可以在 SharePoint 2010 中(以及在 Microsoft Office 应用程序中通过 Business Connectivity Services 富客户端扩展)公开外部数据。BDC 允许您通过新的外部列表功能和 外部数据列、Web 部件、搜索、用户配置文件以及自定义应用程序,将不同外部系统中的键数据放置到 SharePoint 列表中,从而连接 SharePoint 网站和外部系统。

BDC 在 Microsoft SharePoint Foundation 2010 中作为一个共享服务实现,并且可以由中心管理员启用。BDC 的核心功能是提供与以下类型的外部系统的连接:

  • 数据库

  • Windows Communication Foundation (WCF) 端点

  • .NET 连接程序集

  • 自定义数据源(BDC 提供一个框架,开发人员可在其中插入新的外部系统类型的连接器,以便可以通过 BDC 访问这些外部系统类型)。

BDC 的主要设计目标就是,使您能够在编写最少量的代码的情况下,以声明方式访问不同外部系统中的数据。为了实现这个目标,BDC 使用一个元数据模型来提供对基础数据源的同类访问。此元数据模型提供了一个一致的、简化的客户端对象模型。

Microsoft Business Connectivity Services (BCS) 在 Microsoft SharePoint Designer 和 Microsoft Visual Studio 中提供工具支持。具有与数据库开发人员相当的技能的经验丰富的用户可以使用 SharePoint Designer 中的外部内容类型设计器,通过描述业务应用程序的 API 来创建外部内容类型。用户在 SharePoint Designer 中保存外部内容类型之后,通过 SharePoint 2010 和 BDC 对象模型中的其他 Business Connectivity Services 功能,外部系统中的数据立即就可以供用户的 SharePoint 网站使用。

BDC 由 BDC 元数据存储和一个对象模型组成。该对象模型为驻留在不同业务应用程序中的业务逻辑提供了一个简单而一致的面向对象的编程接口。

图 1 显示了 BDC 体系结构的高级视图。

图 1. BDC 体系结构的高级视图

BDC 的高级视图

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

图 2. BDC 体系结构的低级视图

BDC 的低级体系结构

BDC 模型和 BDC 元数据存储

BDC 使用元数据来描述外部应用程序的 API。在 BDC 中注册了外部应用程序的 API 说明之后,BDC 可提供到外部数据的动态数据访问连接,而无需另外编写代码。例如,若要在 SharePoint 列表和 Web 部件中显示 AdventureWorks 数据库中的数据,则可以为访问 AdventureWorks 数据库中的数据的 SQL 查询定义元数据。

经验丰富的用户或开发人员通过定义业务应用程序与之交互的业务实体以及应用程序中可用的方法,可对每个数据源的元数据进行定义。在 AdventureWorks 示例中,您可能想要定义以下实体的元数据:Customer、SalesOrder 和 Product。对于您想要在 BDC 中使用的每个实体,可以为将要用来提取外部系统中数据的方法定义元数据。

元数据模型将基础物理源抽象化,并为使用不同类型的业务应用程序的元数据作者提供一致而简单的模型。

BDC 模型定义可为 API 增添意义的语义元数据,例如,外部内容类型和关联。在编写元数据之后,通过使用 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 模型反序列化取代。

备注

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

有关详细信息,请参阅BDC 模型基础结构

运行时对象模型

如前面的低级图中所示,BDC 公共接口具有两组 API:运行时对象模型和管理对象模型。

运行时对象模型设计为由 BDC 客户端和应用程序使用。它具有以下两大主要功能:

  • 提供一个将基础数据源抽象化的直观的、面向对象的接口。运行时对象模型使客户端应用程序不必了解后端具体的编码范例,并使客户端能够通过单一的统一接口访问所有外部系统。由于有了运行时对象模型,调用 SAP 应用程序的方法类似于调用 Siebel 应用程序的方法或对 Microsoft SQL Server 执行查询。通过使用运行时对象模型,应用程序可以读取、写入和更新后端数据。

    备注

    BDC 不执行实际的方法操作。它只是将客户端调用委托给适当的 ADO.NET 提供程序(对于数据库)、Web 服务代理(对于 Web 服务)和 .NET Framework 程序集(对于 .NET Framework 程序集)。

  • 允许从元数据数据库中读取(只读)元数据对象,并执行其中描述的业务逻辑。运行时对象模型使用内存中缓存的元数据,因此速度很快。只需要查询元数据数据库中元数据信息的客户端使用运行时对象模型。

Runtime 命名空间包含两个主要对象:

  • IEntityInstance. 从概念上讲,实体实例是从 BDC 中的后端业务应用程序返回的单行数据。IEntityInstance 接口将基础数据源抽象化,并使客户端不必了解应用程序特定的编码范例。这样一来,客户端便可以通过单一的、简化的方式访问所有的业务数据。通过使用 IEntityInstance 接口,可以按照与使用由 Web 服务返回的复杂 .NET Framework 结构的相同方法,使用数据库中的数据行。

    BDC 中的实体实例具有附加的特殊语义。例如,它能够确定行中的哪个字段或哪些字段代表实体实例的标识符,并允许您对该实体实例调用 GetAssociated、GetIdentifierValues 和 Execute 等方法。

  • IEntityInstanceEnumerator. 枚举器可用来读取集合中的数据,但不能用来修改基础集合。IEntityInstanceEnumerator 支持流处理,因此,它在后端应用程序返回大量数据时非常有用。

管理对象模型

您可以使用管理对象模型来创建、读取、更新和删除 BDC 元数据存储中的元数据对象。它在发布时提供完整的元数据验证,并在存储中维护引用完整性。它使用内存中元数据缓存来提高性能。因此,它具有相对较高的延迟,尤其是在 BDC 更新部署中的所有前端 Web 服务器和应用程序服务器中的缓存之前,延迟多达一分钟之久。此组件存在于 Business Connectivity Services 的服务器部署中。客户端版本的管理对象模型存在于客户端上。

体系结构组件

在 Microsoft.SharePoint.dll 的 Microsoft.BusinessData.Infrastructure 命名空间中定义体系结构组件。

如前面的 BDC 的低级别体系结构图中所示,运行时对象模型依赖于体系结构组件来创建和管理与物理数据源的连接。体系结构组件为 BDC 客户端提供运行时连接管理和共享安全服务。

BDC 连接器和连接器框架

Business Connectivity Services 为其支持的所有数据源类型提供连接器。另外,它还通过提供程序模型提供可扩展性。ISV 和合作伙伴可开发适用于 BDC 不提供本地支持的后端类型的 BDC 连接器。

Secure Store Service 和 SharePoint 安全体系结构

BDC 通过 Office SharePoint Server 2007 中集成的身份验证或单一登录 (SSO),提供对后端系统的身份验证。在 SharePoint Server 2010 中,它还支持基于声明或令牌的身份验证。SSO 由同样可插入的安全存储取代。因此,如果任何第三方不打算使用 SharePoint 安全存储而是使用自定义或任何其他 ISV 的 SSO,则 BDC 都将提供完全支持。

元数据缓存

为了提供更好的性能,BDC 将缓存所有的元数据对象。通过这种方式,它将从缓存中将所有元数据对象具体化,并一次性将这些元数据对象提供给运行时对象模型,而不是针对每个方法调用来回地访问元数据数据库。元数据缓存可以让客户端更快地访问它们正在调用的元数据对象。

备注

通过使用对象模型,您可以在单独的元数据对象级别打开或关闭缓存功能。因此,您无需缓存那些很少使用的对象。

在对象首次加载时,BDC 将会缓存这些对象。在每个服务器上运行的计时器每分钟将会查找一次对元数据对象所做的任何更改。如果它发现了对某个元数据对象所做的更改,则会清除缓存,然后重新加载该元数据对象。因此,在您更改元数据之后,您必须等待一分钟,以便这些更改传播到服务器场中的所有服务器。在您进行更改的服务器上将会立即应用更改。