1. 大家知道Windows SharePoint Services 提供了一个高度结构化的服务器端对象模型,借助该模型,即可轻松访问表示 SharePoint 网站各个方面的对象。您可以从级别较高的对象开始,逐步深入对象层次结构,以获取包含要在代码中使用的成员的对象。接下来我将从服务器体系结构和网站体系结构模型应用进行详解:
入口点
2. 根据要创建的自定义应用程序类型或解决方案类型,您可以使用不同的入口点进入对象模型,以获取要从其开始操作的合适对象。例如,如果要自定义部署的管理和配置,则可以使用静态 ContentService 属性返回当前的 Web 服务对象及其 Web 应用程序集合。若要修改管理 Web 应用程序中的设置,请使用 AdministrationService 属性。从 Microsoft.SharePoint.Administration.SPPeristedObjectCollection 类派生的集合类继承了 GetValue 方法,您可以使用此方法从集合中返回特定对象。
注意: |
如果您要创建与网站集、单个网站或列表一同使用的 Web 部件、自定义 Web 服务或 Web 应用程序,可使用 Microsoft.SharePoint.SPContext 类的成员获取当前的网站集、网站或列表。在 /_layouts 虚拟目录中创建 Web 应用程序后,此应用程序的功能可用于 Web 服务器上的所有网站。在 HTTP 上下文之外(例如,在控制台应用程序或 Windows 应用程序中),请使用 SPSite 类的构造函数来获取特定网站集并访问网站集中的各个对象。有关详细信息,请参阅获取对网站、Web 应用程序和其他关键对象的引用。 服务器体系结构 下图显示与 Microsoft.SharePoint.Administration 命名空间的集合和对象相关的 Windows SharePoint Services 服务器体系结构。
|
网站体系结构
下图显示与 N.Microsoft.SharePoint 命名空间的集合和对象相关的 Windows SharePoint Services 网站体系结构。
- 每个 SPSite对象都表示一组逻辑上相互关联的 SPWeb 对象(见下文),尽管其名称为单数形式。这类组通常称为“网站集”,但与 SPWebCollection 不同的是,SPSite 并不是标准的 Microsoft .NET 集合类。这类组包含可用于管理网站集的成员。AllWebs 属性提供对 SPWebCollection 表示网站集中所有网站(包括首要网站)集合的对象的访问权限。SPSite 类的 Microsoft.SharePoint.SPSite.OpenWeb方法返回特定的网站。
- 每个网站集包含任意数量的 SPWeb 对象,每个对象都包含可用于管理网站(包括其模板和主题)并访问网站上的文件和文件夹的成员。Webs 属性返回一个表示指定网站上所有子网站的 SPWebCollection 对象;Lists 属性返回一个表示网站中所有列表的 SPListCollection 对象。
- 每个 SPList 对象都包含用于管理列表或访问列表中项目的成员。GetItems 方法可用于执行返回特定项目的查询。Fields 属性返回一个表示列表中所有字段或列的 SPFieldCollection 对象;Items 属性返回一个表示列表中所有项目或行的 SPListItemCollection 对象。
- 每个 SPField 对象都拥有包含字段设置的成员。
- 每个 SPListItem 对象都表示列表中的一行。
如果您安装了“Windows SharePoint Services 3.0 基础结构更新 (KB951695)”,则自定义解决方案在模拟被挂起期间调用 SharePoint 对象模型时将会失败。如果您使用 Windows 身份验证并且代码从 IIS 工作进程中调用 SharePoint 对象模型,则请求必须模拟调用用户的身份。虽然 Windows SharePoint Services 将 ASP.NET 配置为自动模拟调用用户,但如果您挂起模拟(例如,通过调用 Windows API 的 RevertToSelf 函数,或通过调用 System.Security.Principal.WindowsIdentity.Impersonate 方法并传递 IntPtr.Zero 作为用户令牌参数的值),则代码将会执行意外操作或失败。即使代码不会明确还原为自身,但 ASP.NET 可能在代码还原为自身后调用它(实现虚拟路径提供程序时会出现这种情况);如果代码不模拟调用用户,则可能无法正常运行。