承载 Silverlight 等外部应用程序的 Web 部件

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

适用范围: SharePoint Foundation 2010

本文内容
概述
不同的开发级别
Silverlight 跨域数据访问
外部应用程序提供程序
创建宿主 Web 部件

本节中的主题介绍如何在 Web 部件中承载非 SharePoint 应用程序,其中包括介绍如何使用户通过利用 Microsoft SharePoint Foundation 中内置的 Silverlight Web 部件来承载 Silverlight 应用程序的主题。Silverlight 应用程序可执行文件可能与页面中包含 Silverlight Web 部件的 SharePoint Foundation Web 应用程序位于不同的域中。您还可以通过创建自定义外部应用程序提供程序 (EAP),来创建自定义应用程序宿主 Web 部件,甚至可以自定义宿主应用程序的 SharePoint Foundation 体系结构。

概述

在遵守某些限制的情况下,拥有参与者权限的网站用户可以将承载非 SharePoint 应用程序(例如 Silverlight 应用程序)的 Web 部件添加到他们的 SharePoint 网页中。如果这些应用程序已正确注册为应用程序主体,它们甚至可以承载在 SharePoint Foundation Web 应用程序所在域以外的服务器上,并且可以读取和写入 SharePoint 数据。这些 Web 部件可为开发小组提供将非 SharePoint 应用程序快速集成到 SharePoint Foundation 网站的方法。

备注

在以下情况下,应用程序属于外部 SharePoint Foundation Web 应用程序,即,它位于不同的域中:应用程序可执行文件的 URI 在 Silverlight 中的 HTTP 通信和安全:跨域通信所描述的四个方面的任何一方面与 Web 应用程序的 URI 不同。

不同的开发级别

将应用程序集成到 SharePoint Foundation 中所必需的开发工作量主要取决于以下因素。

  • 该应用程序的可执行文件是承载在 SharePoint Foundation Web 应用程序中还是承载在某个外部域中。

  • 该应用程序是否需要读写 SharePoint Foundation 数据。

  • 是否必须更改控制 Web 部件呈现方式的默认设置。

  • 该应用程序是否需要自定义配置信息,以便能够在 SharePoint Foundation Web 部件中运行。

  • 在创建和编辑承载该应用程序的 Web 部件的属性时,是否需要使用 SharePoint Foundation 中的自定义 UI。

在最为简单的情况下,非 SharePoint 应用程序或者 位于 SharePoint Foundation Web 应用程序所在的域中,或者 承载在外部 URL 中,但它不需要访问 SharePoint 数据。在上述任一情况下,都不需要进行 SharePoint 开发。完成可执行文件后,Web 应用程序管理员会将该应用程序部署到应用程序服务器或文档库中。当用户添加可以承载非 SharePoint 应用程序的 Web 部件时,系统会提示他们提供该可执行文件的 URL。如果应用程序在本地部署,则它可以使用当前用户上下文中的托管客户端对象模型访问 SharePoint Foundation 数据。(如果外部应用程序是 Silverlight 应用程序,则它可以使用客户端对象模型的特殊 Silverlight 版本。)

如果要将应用程序部署到与 Web 应用程序不同的域中,并且 该应用程序需要访问 SharePoint 数据,则集成过程需要使用 Silverlight 跨域数据访问 (Silverlight CDA)。

Silverlight 跨域数据访问

对 SharePoint Foundation 用户而言,能够承载与 SharePoint Foundation Web 应用程序位于不同域中的应用程序的优势是:许多此类应用程序都可以承载在应用程序服务器上并提供给服务器场中的所有 Web 应用程序使用。Silverlight CDA 使管理员可以控制承载外部应用程序的外部服务器的权限,而不会过度限制用户将承载这些应用程序的 Web 部件添加到 Web 部件页的能力。应用程序作为一种独特类型的用户(称为"应用程序主体")登录到 SharePoint Foundation Web 应用程序。应用程序的权限是管理员授予此特殊用户的权限与打开网页(该网页包含承载应用程序的 Web 部件)的实际用户的权限的交集。

备注

通常,如果外部服务器承载 SharePoint Foundation 中使用的多个应用程序,那么所有此类应用程序都将使用相同的应用程序主体用户凭据。可以为每个应用程序创建不同的应用程序主体用户,但没有什么可以阻止该服务器将其任意应用程序主体用户用于其任意应用程序。

下面是开发人员需注意的 Silverlight CDA 中的一些关键要素。

  • 场管理员必须通过注册外部应用程序提供程序 (EAP) 来允许从外部域中的应用程序访问 SharePoint Foundation 数据。出于安全原因,无法在 SharePoint Foundation UI 中实现此目的,而是必须以编程方式实现。您可以在解决方案中包含所需代码的相关说明,或者提供一个小型实用程序供服务器场管理员运行。有关创建此实用程序代码的详细信息,请参阅如何:启用外部应用程序提供程序

    备注

    只需注册一次 EAP,即使要使用多个外部应用程序时也是如此。

  • 必须创建某个外部应用程序 XML 标记,以便为 SharePoint Foundation 提供所需的应用程序相关信息。系统会提示添加可承载应用程序的 Web 部件的用户提供此标记,因此必须为这些用户提供此标记。有关创建此标记的详细信息,请参阅如何:创建外部应用程序 XML 标记

  • 场管理员必须创建外部应用程序用于登录到 SharePoint Foundation 的用户标识,并且必须将该用户配置为"应用程序主体"。出于安全原因,不能在 UI 中进行此项配置。您必须提供一个实用程序,以便为 SPUser 对象(代表需要跨域访问 SharePoint Foundation 数据的应用程序登录)的特定属性赋值。有关创建此实用程序的详细信息,请参阅如何:创建应用程序主体用户。希望其参与者能够添加承载应用程序的 Web 部件的网站所有者会将应用程序主体作为用户添加到他们的网站中。

  • 您必须创建一个安装在外部应用程序所在域中的 HTTP 请求处理程序。来自外部应用程序的、对 SharePoint Foundation Web 应用程序的请求将首先被定向到该处理程序,然后该处理程序会将这些请求与安全哈希和用户凭据一同转发到 SharePoint Foundation 前端 Web 服务器。有关创建该处理程序的详细信息,请参阅如何:为外部应用程序创建 HTTP 请求转发器

  • Silverlight 应用程序中用于向 SharePoint Foundation Web 应用程序读取/写入数据的代码使用 SharePoint Foundation 客户端对象模型的特殊 Silverlight 版本,该模型是在其自己的客户端程序集中实现的。有关此对象模型及对其进行编程的详细信息,请参阅使用 Silverlight 对象模型Silverlight 部署

备注

尽管仅当应用程序位于外部域中 需要访问 SharePoint Foundation 数据时才必须 执行上述任务,但您可能仍希望在不满足其中某个条件时执行这些任务。例如,您可能希望使用外部应用程序 XML 自定义 Web 部件的宽度和高度。

外部应用程序提供程序

EAP 是一种用于承载非 SharePoint 应用程序的 Web 部件的配置和设置引擎。它可以解释外部应用程序 XML,管理承载应用程序的 Web 部件的创建过程,以及管理 Web 部件的属性的编辑过程。

除非注册自定义 EAP,否则将使用默认 EAP。服务器场中的每个 SPWebService 对象只能有一个 EAP。因此所有 Web 应用程序(它们是同一 Web 服务的子级)中的 Web 部件承载的所有外部应用程序均由同一 EAP 进行管理。有关 SPWebService 和 Web 服务的详细信息,请参阅 Microsoft SharePoint Foundation 的服务层次结构背景:Microsoft SharePoint Foundation 中的服务实体

您可以创建自定义 EAP 并用它替换默认 EAP。您可能希望在以下情况下执行此操作:

  • 承载非 SharePoint 应用程序的 Web 部件需要一个自定义工具部件,用户可利用该部件来编辑该 Web 部件的属性或完成其他工作,例如为外部应用程序自动创建一个应用程序主体用户。

  • Web 部件需要自定义的部件版式。

  • Silverlight 应用程序(更确切地说是应用程序的请求转发器)需要客户端哈希,以便可以确认从 SharePoint Foundation 前端 Web 服务器收到的查询响应未被篡改。有关请求转发器的详细信息,请参阅如何:为外部应用程序创建 HTTP 请求转发器

  • Web 部件的外部应用程序 XML 需要包含自定义配置属性。

  • 创建 Web 部件的子控件时需要执行自定义逻辑。

有关创建自定义 EAP 的详细信息,请参阅如何:创建自定义外部应用程序提供程序

创建宿主 Web 部件

Silverlight Web 部件内置于 SharePoint Foundation 中。如果希望在 Web 部件中承载其他种类的应用程序,则可以从 ClientApplicationWebPartBase 派生新的 Web 部件类型。有关创建承载非 SharePoint 应用程序的 Web 部件的详细信息,请参阅如何:创建承载外部应用程序的 Web 部件

请参阅

任务

如何:启用外部应用程序提供程序

如何:创建应用程序主体用户

如何:为外部应用程序创建 HTTP 请求转发器

如何:创建自定义外部应用程序提供程序

如何:创建承载外部应用程序的 Web 部件

引用

SPExternalApplicationRegistrationInformation

SPExternalApplicationRequestProperties

SPExternalApplicationRequestResult

SPExternalApplicationRegistrationException

SPExternalApplicationSettings

SPExternalApplicationProvider

ClientApplicationWebPartBase

SilverlightWebPart

概念

Silverlight 对 Web 应用程序的请求的生命周期

如何:创建外部应用程序 XML 标记

外部应用程序 XML

其他资源

Overview of Integrating External Applications with Web Parts