数据设计器扩展性 (DDEX)为 Visual Studio 扩展的数据设计器提供了一种机制与外部数据源进行通信并显示它们的对象层次结构并允许在 服务器资源管理器的层次结构视图。 DDEX 允许到外部数据源对象的访问在设计时,不仅提供了 Visual Studio的数据对象可见性,,还启用拖放功能、对象属性网格可见性和集成到 Visual Studio 设计器的功能。 为简单起见, DDEX 允许第三方数据源的提供程序享受在 Visual Studio 设计时体验的完整环境身份。
备注
DDEX 提供程序与 .NET 数据提供程序不同。有关更多信息,请参见 DDEX 提供程序。
数据设计器扩展性,然后,使用的是 DDEX SDK 和功能的体系结构和托管 API 集成外部数据源对象 Visual Studio 环境。
备注
应与 扩展 Visual Studio 概述结合使用此 SDK。
体系结构概述
下图提供 DDEX 体系结构的一个高级,摘要视图。 在中,可以看到 DDEX 客户端在 Visual Studio承载,因此,它使用访问和核心服务 (的一部分 DDEX 托管类库)。 DDEX 提供程序进行通信并与之交互。 DDEX 提供程序是支持实体的实现,是托管类。 使用私有的 .NET 数据提供程序, DDEX 与数据层然后进行通信。 然而,请注意,该数据提供程序可以省略,在 DDEX 提供程序使用必需的函数提供与数据源的交互。
DDEX 体系结构关系图
DDEX 层,其两部分的中心:DDEX 支持实体和 DDEX 服务。
支持实体、核心服务和访问服务
DDEX 支持实体是接口以启用数据扩展性的该 DDEX 提供程序的实现。 实际上,它是构成 DDEX 这些提供程序的实现支持实体。
DDEX 服务,另一方面,是类的核心服务和访问服务。 核心服务是支持实体显示的基本服务。 它们是作为 Visual Studio 调用创建顶级 DDEX 提供程序支持实体与数据提供程序和数据源一起使用的托管类在内部实现的接口。 访问服务,也是作为托管类在内部实现的接口,提供 Visual Studio 能够创建和使用数据连接以及有权访问数据对象的内存中数据结构表示的支持 XML 和数据视图支持 XML。 此外,访问服务使用支持实体。
下图表示之间的关系更详细地支持实体和服务。
支持实体和访问服务关系图
支持实体
通常构成一个 DDEX 提供程序流程分为三个类别中的托管 API:
连接支持
数据对象支持
数据视图支持
连接支持
连接支持方式指定连接信息,包括数据源和连接字符串。 该操作可以用于以编程方式,因此,如果连接信息知道,或者使用提示用户的连接 UI 对于所需的连接信息。 或者, DDEX 提供程序可在 Visual Studio 连接对话框承载的连接控件。
数据对象支持
使用数据对象支持 XML 文件, DDEX 提供程序定义特定数据源的数据提供程序显示的数据对象。 它还定义对象层次结构或对象模型,这些对象。
Visual Studio 元数据引擎维护能够识别如表、视图和存储过程的泛型数据源对象强类型类的库,以及一般对象的属性,减少到映射键入。 在 XML 文件中提供的数据对象定义使您能映射数据提供程序支持的对象类型到由元数据引擎识别这些泛型类型之一。
除了定义目标类型并将它们外泛型类型,数据对象支持模式还必须指定:
如何枚举指定类型的对象,通过指定完成需要调用,则时枚举对象的处理程序。
如何检索元数据对象元数据,如对象标识符或对象属性。
如何构造剪贴板对象,在复制操作在指定类型的对象的情况下执行。 Visual Studio 数据设计器使用数据源引用 (DSRef)剪贴板格式。 支持 DSRef 的对象可以拖放到某 Visual Studio 数据设计器上。
有关数据对象的更多信息,请参见 DDEX 数据对象支持。
数据视图支持
使用数据视图支持 XML 文件, DDEX 提供程序定义数据对象物理层次结构显示在 Visual Studio 服务器资源管理器的特定连接 " 节点下。 可以定义同一数据源的多个视图。
除了定义物理对象进行层次结构之外,还可以指定有关层次结构节点的附加信息,包括诸如未经本地化的显示名称、上下文菜单命令 (命令名、 CLSID 和处理程序),图标和其他信息,如需要。
有关数据视图的更多信息,请参见 DDEX 数据视图支持。
核心服务
DDEX 提供在内部实现为托管类 Visual Studio 调用访问 DDEX 提供程序实现的功能。顶部的窗体支持实体的组接口。 这些接口统称, DDEX 核心服务。
更重要的核心服务包括:
提供程序管理器可以枚举注册的 DDEX 提供程序和查询特定类型 (IVsDataProviderManager 接口的对象)。
数据提供程序对象工厂提供一种创建 DDEX 提供程序实现的数据对象 (IVsDataProviderObjectFactory 接口)。
DDEX 核心服务在设计时上下文使 Visual Studio 连接到数据源。 这需要具有服务与数据源的连接和设置专用的服务提供对数据源其分层格式目标类型和视图的元素。
在一个典型的实现, DDEX 客户端在数据提供程序对象工厂调用实例化关键成员。 这些键生成块包括生成连接,并连接支持对象 (请参见支持实体和访问服务关系图)。 其中一些预制生成块的对象并生成辅助对象,如有必要,在下支持实体层次结构。
访问服务
DDEX 提供在内部实现为托管类 Visual Studio 对数据连接的访问功能,并且数据对象内存表示支持 XML,并且数据视图支持 XML 的组接口。 这些接口统称为 DDEX 访问服务。
一些更重要的访问服务包括:
数据连接工厂用于创建连接对象 (IVsDataConnectionFactory 接口)。
数据连接对话框允许您提示用户提供连接信息和创建连接对象 (IVsDataConnectionDialog 接口)。
可以查看数据源连接 (及其关键部分,如连接管理器和连接工厂) 作为数据扩展性框架提供的一项集成服务。 在此视图中, Visual Studio 元数据引擎象连接客户端,使用的访问服务 API,或调用到相应支持实体。 这是 Visual Studio 程序集支持 framework 到服务与数据源的连接的结构。
重叠在访问之间服务和支持实体
之间的主要差异支持实体,访问服务是扩展性客户端使用访问服务 (主要连接对象),或与 DDEX 提供程序进行通信。 使用支持实体 API,查看以相反的方向,提供程序与连接交互。
在某些情况下,访问服务的角色和支持实体重叠,尤其是确保线程安全的位置是必需的。 DDEX 体系结构因此提供数据提供程序和连接客户端之间的一个安全锁定的层。 下面的示例阐释功能。
当您访问,例如,从连接对象的 IVsDataCommand 服务,而不是获取数据命令对象,连接对象获取 IVsDataCommand 接口的代理实现。 代理实现与实现它的支持实体通信;另外,代理实现是线程安全的。 这样,代理第一个锁连接然后调用滚动到支持实体;当完成与连接,再次打开连接,释放线程锁定。
在此示例中, IVsDataCommand 接口实现为访问服务 (因为客户端直接调用它,),而且其行为支持实体,因为数据提供程序实现同一接口,,结果是一个安全锁定层的创建在提供程序和连接客户端之间的。
DDEX 引用
DDEX SDK 提供了完整语言参考文档:
数据对象支持 XML 架构
使用数据对象支持架构 (DataObjectSupport.xsd) 以编程方式管理和枚举数据源对象实例。 有关数据对象的更多信息,请参见 DDEX 数据对象支持。
数据视图支持 XML 架构
使用数据视图支持架构 (DataViewSupport.xsd) 管理数据对象层次结构布局的一个或多个视图,出现在服务器资源管理器中。 有关数据视图的更多信息,请参见 DDEX 数据视图支持。
托管类库参考
使您可以编写一个托管 DDEX 提供程序的 DDEX SDK 提供了一组托管接口和基类。