MOSS 开发人员 - 第 1 部分:Web 部件
Microsoft ASP.NET 2.0 提供了一个 Web 部件基础结构,可帮助您构建自定义 Web 部件并将其部署到使用 Microsoft Windows SharePoint Services 3.0 构建的网站上。本文是来自 www.myrampup.com 的 MOSS 内容的第二部分。
引言
Microsoft ASP.NET 2.0 提供了一个 Web 部件基础结构,可帮助您构建自定义 Web 部件并将其部署到使用 Microsoft Windows SharePoint Services 3.0 构建的网站上。
本文根据业务需求,为选择 ASP.NET 2.0 Web 部件和 Windows SharePoint Services 3.0 Web 部件的最佳实践提供了建议,回顾了 ASP.NET 2.0 Web 部件基础结构,并指导您如何构建可在标准 ASP.NET 2.0 网站和 Windows SharePoint Services 3.0 中使用的自定义 Web 部件。文章还概述了在将 Web 部件添加到 SharePoint 网站之前需要考虑的部署和安全注意事项。
您需要安装 Windows SharePoint Services 3.0、Windows SharePoint Services 3.0 SDK 和 Windows SharePoint Services 3.0 Tools: Visual Studio 2008 扩展,版本 1.2。
Web 部件框架
SharePoint Web 部件是支持自定义和个性化的 UI 元素。Web 部件是一个 ASP.NET 服务器控件,旨在由知识工作者在浏览器中进行编辑和修改。它充当 SharePoint 网站的一个组件,用于显示从多个数据源提取的信息。通过 Web 部件,您可以在企业门户和网站上创建信息仪表板。Web 部件页面允许您通过更新特定 Web 部件属性的值来个性化满足您需求的信息。
Microsoft Windows SharePoint Services 2.0 和 Microsoft Office SharePoint Portal Server 2003 中的 Web 部件基础结构允许您使用托管代码构建针对 Microsoft SharePoint 产品和技术定制的自定义 Web 部件。
ASP.NET 2.0 包含一组新的 Web 部件控件,可在独立于 SharePoint 产品和技术的自定义网站上进行站点自定义和个性化。
Windows SharePoint Services 3.0 中的 Web 部件基础结构位于 ASP.NET 2.0 Web 部件基础结构之上。如下图所示,这为 Microsoft Windows Server 2003 平台引入了下一代 Web 部件基础结构。

在 ASP.NET 2.0 Web 部件和 Windows SharePoint Services 3.0 Web 部件之间进行选择
Office SharePoint Server 2007 和 Windows SharePoint Services 3.0 构建在 ASP.NET 2.0 框架之上。Windows SharePoint Services 3.0 使用 ASP.NET 2.0 Web 部件基础结构,利用母版页和自定义 Web 部件开发等功能,同时提供完整的 Windows SharePoint Services 功能集,如文档服务、事件、工作流、搜索、网站列、内容类型等。
您可以通过两种方式为 Windows SharePoint Services 3.0 构建 Web 部件:
- 创建自定义 ASP.NET 2.0 Web 部件
- 创建基于 SharePoint 的 Web 部件
只要有可能,就应该创建 ASP.NET 2.0 Web 部件。但是,在某些情况下,使用基于 SharePoint 的 Web 部件可能具有优势……下表提供了一个决策矩阵,可帮助您根据业务需求选择最佳选项。
创建自定义 ASP.NET 2.0 Web 部件 | 创建基于 SharePoint 的 Web 部件 |
|
|
创建新的 Web 部件解决方案
扩展中包含的 Web 部件项目模板专门用于为 Windows SharePoint Services 环境创建 Web 部件。
创建新的 Web 部件解决方案
- 打开 Microsoft Visual Studio 2008。
- 在 **文件** 菜单上,单击 **新建**,然后选择 **项目**。
- 在 **项目类型** 中,选择 **Visual C#**,然后选择 **SharePoint**。
- 在 **模板** 中,选择 **Web 部件**。
- 指定 Web 部件的新名称、位置或解决方案名称,然后单击 **确定**。扩展会创建一个新的 Web 部件解决方案项目,其中包括以下内容:
- 对所需 DLL 的引用
- AssemblyInfo.cs,一个允许您为 Web 部件程序集指定公司和产品信息以及版本信息的文件
- Temporary.snk,一个 Web 部件程序集的临时签名密钥文件
- 一个用于 Web 部件的 Visual C# 代码文件,名称与 Web 部件名称相同
默认情况下,Web 部件的代码文件包含以下内容:
- 用于必要的
System
和 Windows SharePoint Services 命名空间(如Microsoft.SharePoint
、Microsoft.SharePoint.WebControls
和Microsoft.SharePoint.WebPartPages
)的using
语句 - 一个空的 Web 部件类,它继承自
System.Web.UI.WebControls.WebParts.WebPart
- 将您想要的代码添加到 Web 部件类中
自定义 Web 部件解决方案包
构建解决方案时,会创建一个 SharePoint 解决方案包(*.wsp 文件)以启用解决方案的安装。WSP 视图提供了对 VSeWSS 生成的清单和功能解决方案文件的可见性。这些文件的内容基于站点定义中的项。
在 VSeWSS 1.0 版本中,此功能是通过项目属性提供的。新的 WSP 视图使这些文件更加可见和易于维护。现在可以编辑解决方案中的功能、清单和其他 *.xml 文件,从而可以更全面地控制许多以前隐藏的 SharePoint 元素。
WSP 视图可通过 Visual Studio 的“视图”菜单访问。选择“其他窗口”,然后选择“WSP 视图”。也可以使用 Ctrl+W, I。
WSP 视图提供了一种查看解决方案将如何打包到 WSP 中的详细信息的方法。新的视图还包括拖放功能以及打开和修改解决方案 *.xml 文件的能力。
根据所选的 VSeWSS 项目模板,会创建一个项目解决方案文件夹。WSP 视图中的每个项目解决方案文件夹都包含一个 manifest.xml 文件。该文件包含唯一的 SolutionID
、XMLNS 命名空间、部署服务器类型以及项目解决方案的重置 Web 服务器选项。manifest.xml 文件还描述了解决方案程序集和解决方案包中包含并部署到 SharePoint 的子清单的信息。
有关解决方案程序集的信息位于 manifest.xml 文件中的 <Assemblies>
节点中。每个 <Assembly>
节点都包含其 *.dll 文件的位置和部署目标。
manifest.xml 文件的子清单如下所述:
- 功能清单用于将功能部署到 SharePoint。
<FeatureManifests>
节点可以有一个或多个<FeatureManifest>
元素。每个元素都包含一个单一的强制属性 location。此属性指定解决方案包内 Feature.xml 文件的路径。部署解决方案时,功能清单文件会将元素清单中引用的所有文件复制到指定位置。然后,该功能将在 SharePoint 中安装。 - 站点定义清单允许通过使用
<SiteDefinitionManifests>
元素将站点定义包含在解决方案中。该元素可以有一个或多个<SiteDefinitionManifest>
元素,每个元素都包含一个单一的强制属性 location 和子元素<WebTempFile>
。
功能文件夹
注意:文件夹名称将不是“Feature”,而是功能的实际名称。
Feature 文件夹包含一个 feature.xml 文件,其中包含有关解决方案功能的信息,例如:
- 唯一功能 ID
- 标题
- 范围
该文件还描述了功能打包和部署所需的信息。
feature.xml 文件中的 <ElementManifest>
节点描述了功能中使用的项目模板(例如,列表定义、内容类型、Web 部件)以及项目项 *.xml 文件的位置。
<ElementFile>
节点描述了功能所有其他组件的位置。
站点定义文件夹
与通过项目项模板创建的 *Feature* 文件夹不同,站点定义文件夹是通过项目模板(如团队网站定义或空白网站定义)创建的。站点定义文件夹具有更详细的元素结构,包括站点定义 *.xml 文件、onet.xml 和 default.aspx 页面。
站点定义元素
- SiteDefinition.xml - 此 *.xml 文件不命名为“
SiteDefinition
”,而是采用实际站点定义的标题。该文件描述了站点定义模板的属性,例如显示时的模板名称、模板 ID、描述和模板类别。 - Onet.xml - 描述了站点定义模板中包含的组件及其行为设置。设置可以包括诸如启用的内容类型、默认列表视图、文档模板文件以及应包含在站点中的任何特定 Web 部件等属性。
- Default.aspx - 此文件是站点定义的默认显示页面(或主页)。它定义了将在站点定义模板的默认主页上显示的所有组件的外观和感觉。
使用 WSP 视图
启动
尽管扩展程序会自动将 WSP 解决方案包安装为部署项目文件的机制,但当项目启动时,WSP 视图不会自动更新显示中的 WSP 结构。
需要通过单击左上角的 WSP 视图刷新按钮来刷新 WSP 视图。或者也可以使用 F5 键。
重命名
WSP 视图中的重命名功能与解决方案资源管理器中的重命名功能不同。这是因为其他文件对更改名称很敏感,并且可能对解决方案产生影响。
因此,WSP 视图限制了重命名文件的功能,仅限于文件夹级别,这可以保护诸如 manifest.xml 和 feature.xml 等完整性重要的文件。可以重命名某些文件夹,例如项目解决方案、功能和功能元素。
在 WSP 视图中,选定文件夹后启用了重命名功能的 F2 键。或者,可以选择一个文件夹,然后再次单击它,就像在 Windows 资源管理器中一样。
对于文件的重命名,建议使用解决方案资源管理器面板。这将强制 manifest.xml 文件更新命名引用,从而保持解决方案包的准确性。值得注意的是,通过解决方案资源管理器进行重命名并不总能更新生成包,因此如果遇到错误,值得对此进行检查。
安全控件
安全控件是 <Assembly>
元素的(可选)子元素。<SafeControls>
元素允许用户从 Web 应用程序的(web.config)文件中添加一个或多个 <SafeControl>
元素。这是将 Web 部件、Web 控件或字段控件部署到 SharePoint 的关键步骤,因为没有安全控件,SharePoint 将不允许使用它们。
每个安全控件元素包含 4 个强制属性:
- Assembly - 程序集的完全限定名
- Namespace - 要标记为安全控件的类型的命名空间
- Type Name - 实现要标记为安全的控件的类的名称
- Safe - 布尔字段,指示是否将该类型标记为安全或不安全
WSP 会自动将 Web 部件、Web 控件和字段控件元素的“安全控件”条目添加到 manifest.xml 文件中。它们在打包时添加到 WSP 文件中。因此,在 WSP 视图的 manifest.xml 中看不到任何安全控件元素。对于任何程序集,无需手动将安全控件添加到 manifest.xml 中。
如果需要为特定程序集添加任何其他安全控件,可以通过附加的 <SafeControl>
条目添加。这可以通过 WSP 视图中的 manifest.xml 文件中相应的 <Assembly>
节点手动完成。
自定义 WSP 结构
WSP 默认会为每个功能创建一个文件夹。一旦向项目中添加了许多功能,结构就会变得复杂且笨重。应修改结构以提供清晰性。更清晰组织的文件夹结构将有助于长期理解和维护。
保持解决方案包有序
- 为每种类型的功能(例如,内容类型或 Web 部件)创建一个父文件夹
- 将功能元素拖放到其相应的父文件夹中
- 单击提示时的“是”或“全部是”,允许 WSP 自动更新 manifest.xml 和 feature.xml 文件。
删除不再包含功能元素的任何功能文件夹。
部署和调试 Web 部件
只需按 F5 即可部署并开始调试您的 Web 部件。
当您按 F5 时,扩展程序会自动生成、部署并启动您的 Web 部件解决方案功能的调试。为了实现这一点,扩展程序会自动执行以下操作:
- 生成 Web 部件程序集。
- 将 Web 部件解决方案打包为 Windows SharePoint Services 功能。
- 如果此 Web 部件解决方案以前已部署,扩展程序将撤销先前版本的 Web 部件解决方案功能。
- 将 Web 部件程序集安装到全局程序集缓存中。
- 在 Windows SharePoint Services 中部署并激活您的 Web 部件解决方案功能。
- 将您的 Web 部件添加到 SafeControls 列表。
- 通过调用 iisreset 命令重启 Microsoft Internet Information Services (IIS)。
- 附加到 w3wp 进程以启用调试。
部署和调试您的 Web 部件
- 按 F5。扩展程序会自动生成、部署并启动您的 Web 部件解决方案功能的调试。
- 导航到 SharePoint 网站上要添加 Web 部件的 Web 部件页面。
- 在 Web 部件页面上,单击 **站点操作**,然后选择 **编辑页面**。
- 在要添加 Web 部件的 Web 部件区域中,单击 **添加 Web 部件**。
- 在 **添加 Web 部件** 对话框中,在 **所有 Web 部件** 部分的 **杂项** 下,选择您的 Web 部件,然后单击 **确定**。
其他资源和参考
- 使用 ASP.NET 2.0 Web 部件和 Windows SharePoint Services 3.0
- Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions 用户指南,版本 1.1
- 使用 Visual Studio 创建 Windows SharePoint Services 3.0 Web 部件
- 面向专业 .NET 开发人员的 SharePoint 产品和技术简介
- Windows SharePoint Services 开发人员中心
- Windows SharePoint Services TechCenter
- SharePoint Server 开发人员中心
- SharePoint Server TechCenter