Project Server 2010 体系结构

 

适用于: Project Server 2010

上一次修改主题: 2016-11-30

Microsoft Project Server 2010 是一个真正的多层系统,它扩展了 Microsoft Office Project Server 2007 中引入的体系结构。Project Server 体系结构在前端层中包括 Microsoft Project Professional 2010 和 Microsoft Project Web App 客户端。前端应用程序仅通过 Project Server 接口 (PSI) Web 服务与中间层进行通信,而中间层又与业务对象层进行通信。业务对象通过数据访问层 (DAL) 使用数据库。客户端应用程序并不直接访问主数据库;Project Server 对客户端隐藏业务对象和 DAL。

本文包含以下各节:

  • 一般体系结构

  • Web 服务器

  • Project Server 接口 (PSI)

  • 业务对象

  • 数据访问层和数据库

  • 发布和服务器端计划

一般体系结构

Project Server 2010 和 Office Project Server 2007 的一般体系结构之间的主要区别如下:

  • Project Server 2010 需要 Microsoft SharePoint Server 2010 Enterprise 作为一项安装要求。与 Microsoft Office Project Server 2007 服务器场部署类似,在将 Project Server 2010 部署到服务器场时,必须在该服务器场中的所有应用程序服务器和所有 Web 服务器上安装 Project Server 2010。

  • PSI 同时包括 Web 服务的 Windows Communication Foundation (WCF) 接口和 ASMX 接口。

  • Project Server 工作流平台集成在 PSI、业务对象层和 DAL 中,并构建于 SharePoint 平台中的 Windows Workflow Foundation (WF) 之上。

  • Project Server 任务、工作分配和工作分配状态数据与 Microsoft Exchange Server 而不是 Microsoft Outlook 加载项集成在一起。

下图显示 Project Server 2010 体系结构的概括视图。它在 Project Server 上包括一台 Web 服务器和一个 Project Web App 实例。就像在 Office Project Server 2007 中一样,一台服务器上可以运行 Project Web App 的多个实例。

Project Server 2010 体系结构

备注

  • 在 Project Server 2010 中,可以使用 PSI 的 WCF 或 ASMX 接口。Project Web App 和 Project Professional 2010 客户端均使用 WCF 接口。

  • 体系结构图中的 PSI 转发器包括两个组件:WCF 转发器和 Web 服务转发器。使用 ASMX 接口的客户端通过 Web 服务转发器调用 PSI。使用 WCF 接口的客户端通过 WCF 转发器调用 PSI。

  • 体系结构图中未显示 Web 服务器可由外围网络(又称为“外围安全区域”或 DMZ)中的附加防火墙隔离。

  • SharePoint Web 服务网站是 SharePoint Server 2010 的一部分(体系结构图中未显示)。SharePoint Web 服务网站包括具有 ASMX 和 WCF 服务的 PSI 虚拟目录的 Project Service 应用程序。Project Server 2010 中的 Project Service 应用程序取代了 Office Project Server 2007 中的共享服务应用程序。

前端层包括第三方应用程序、Microsoft Project Professional 和 Project Web App。Project Web App 使用 Internet Explorer 显示 Microsoft ASP.NET 3.5 页面。Project Web App 页面使用与 PSI 通信的 Project Server Web 部件,还使用标准 SharePoint Server 2010 Web 部件。

单独计算机上的客户端应用程序通过服务代理调用 PSI。使用 WCF 接口的外部客户端通过 https://ServerName/ProjectServerName/_vti_bin/psi/ProjectServer.svc 访问 PSI。使用 ASMX Web 服务接口的客户端使用 Project Web App URL 之一,例如 http://server1/pwa/_vti_bin/psi/project.asmx。如果应用程序不具有对 Project Server 的 Intranet 访问权限,则它们可以使用外围网络中的 Project Web App 服务器(体系结构图中未显示)。

如果它们可以直接访问 Project Server 计算机,则客户端应用程序和业务线 (LOB) Web 应用程序的后端组件可以使用 PSI 代理,而 PSI 代理使用 PSI Web 服务的 SharePoint 共享服务 URL,例如 http://server1:32843/ProjectServiceApplication/project.asmx。端口 32843 是 SharePoint Server 2010 中 SharePoint Web 服务应用程序的默认端口。仅当应用程序必须使用模拟或使用提升的权限运行时,才应使用对 Project Service 应用程序虚拟目录的直接访问权限。

中间层包括 PSI 和业务逻辑层,后者包括表示 Project Server 业务实体的逻辑业务对象。业务对象包括项目、任务、资源、工作分配等等。PSI 和业务逻辑层紧密结合并位于同一服务器上。客户端应用程序调用 PSI Web 服务,PSI 调用业务逻辑层中的业务对象。

DAL 提供中间层和数据库之间的通信。所有 Project Server 数据存储在 Microsoft SQL Server 数据库中。Project Server 数据库包括在以下存储中:草稿、已发布、存档和报表。客户端应用程序可以读取报表数据库中的项目数据。客户端应只使用 PSI 访问草稿数据库、已发布数据库或存档数据库。报表数据服务(RDS,图 1 中未显示)几乎实时通过已发布数据更新报表数据库。在 Project Server 2010 中,所有 Project Server 数据库均可位于单独的服务器上。

Project Server 的 Project Web App 组件还使用 Microsoft SharePoint Foundation 2010 配置数据库来进行项目网站设置,使用内容数据库来获取项目网站内容(例如自定义页面、工作流、管理设置、文档以及问题、风险和承诺的列表)。SharePoint 配置数据库和内容数据库支持用于项目管理的其他功能,例如项目模板和工作区、工作组协作的自定义列表以及报表。

Web 服务器

您可以在企业 Intranet 中安装一台或多台 Web 服务器以允许为 Intranet 客户端分配负载。当客户端应用程序使用单独的 Web 服务器时,通过 PSI 转发器将 PSI 调用路由到 Project Server 计算机上的 PSI Web 服务。PSI 转发器(WCF 转发器或 Web 服务转发器)执行以下功能:

  • 优化从远程客户端对 PSI 的调用

  • 包括用于 Microsoft Project Professional 中客户端活动缓存的基于服务器的缓存,以减少对 Project Server 的往返调用

在用户从 Project Server 收到身份验证 Cookie 后,PSI 转发器会将请求以透明方式发送给 Project Server 计算机上的 PSI Web 服务。PSI 转发器通过 LAN 和 WAN 改进了性能和可靠性。

Project Web App 是使用 ASP.NET 3.5 开发的。.aspx 文件中的可视元素(HTML、服务器控件和静态文本)与已编译程序集(.dll 文件)中的代码隐藏类中的编程逻辑分开。可使用 Web 部件自定义 Project Web App 中的网站页面(例如顶级页面、项目中心和报告中心)。无法编辑“网站操作”菜单中不具有“编辑页面”选项的应用程序页面,例如“服务器设置”页面和“审阅时间表”页面。

Project Server 接口 (PSI)

PSI 是 Project Server 的 API。PSI 对象模型对所有外部应用程序公开 Project Server 功能。Project Professional 2010、Project Web App、LOB 和其他第三方应用程序使用 PSI 访问草稿数据库、已发布数据库和存档数据库中的 Project Server 数据。可通过 WCF 服务、通过后端 LOB 应用程序进行的 ASMX Web 服务调用或通过 PSI 代理来使用 PSI。

PSI 中的 Web 方法通常按照与业务对象交换信息的方式生成或使用类型化数据集对象。PSI 参考包括数据集文档。

业务对象

Project Server 的内部对象模型包括业务对象。客户端应用程序只通过 PSI 访问业务对象,并且只有业务对象可以调用 DAL。

业务对象是可分类为以下三种类型的逻辑实体:

  • 核心实体是项目、任务、工作分配、资源和日历等对象。核心实体包括基本业务逻辑,例如权限和命名规则。

  • 业务实体是日程表、项目组合和模型等对象。业务实体包括其他业务逻辑,并且通常通过组合核心实体来构建。

  • 支持实体是安全性和验证等对象。

PSI 处理 API 到业务对象的映射。

数据访问层和数据库

DAL 位于 Project Server 内部,不向外部应用程序公开。DAL 在数据的逻辑业务实体表示形式与物理数据库表之间进行转换。每个逻辑实体存储在多个不同的表中。DAL 可封装管理连接、执行查询以及开始/提交/回滚事务所需的工作。

在 SQL Server 中,Project Server 数据被划分到以下四个数据库中。

  • 草稿数据库包含用于保存 Microsoft Project Professional 及其他应用程序中未发布项目的表。Project Web App 不显示草稿数据库中的项目数据。

  • 已发布数据库包含所有已发布的项目和企业资源、企业全局模板及其他项目模板。已发布项目在 Project Web App 中是可见的。已发布数据库还包含特定于 Project Web App 的表(日程表、模型、视图等)和全局模拟运算表(自定义域、查找表、安全性和元数据)。

  • 存档数据库保存项目及其他数据的备份版本。

  • 报表数据库 (RDB) 是用于生成报表和 OLAP 多维数据集的临时区域。报表数据库中的数据很全面,并且几乎能够实时更新。系统对表和视图进行了优化以生成只读报表;例如,对 RDB 表进行了非规范化设置,以提供冗余数据并减少关系表的数量。

资源或项目等实体可以跨越多个表,并且特定实体的所有表具有相同的主键。主键是唯一标识特定实体的一个实例的单个列。唯一标识符是 GUID。

只会对报表数据库架构进行编档。您应只通过 PSI 访问草稿数据库、已发布数据库和存档数据库。您可以向报表数据库中添加 Project Server 2010 数据库架构中未定义的模拟运算表、域(属性)和实体。如果要向核心数据库中添加表,还必须提供自定义程序集、Web 服务、业务对象和数据访问的完全堆栈。您可以轻松修改报表数据库;建议您不要修改核心 Project Server 数据库。

发布和服务器端计划

Project Server 2010 同时支持手动和自动项目计划更新。默认过程是手动更新项目。也就是说,项目经理在 Microsoft Project Professional 中打开项目,应用更改,然后保存并发布项目以使更改可供每个人使用。Microsoft Project Professional 中的计划引擎为手动更新计算计划更改。

Project Server 中的计划引擎使用 PSI 实现项目自动更新。Project Server 通过使用以下步骤,允许在项目经理使用草稿版本时更新项目的已发布版本:

  1. Project Server 自动应用更新并重新计划已发布版本。

  2. Project Server 在出现以下任一事件时会保存更新以应用于草稿版本:

    1. Microsoft Project Professional 打开项目。

    2. Microsoft Project Professional 尝试发布项目。

  3. 如果存在冲突,则项目经理必须先解决冲突,然后才能发布草稿版本。

警告

Project Server 计划引擎和 Microsoft Project Professional 计划引擎之间存在一些限制和差异。例如,Project Server 不计划子项目或指向其他项目的链接,并且不计算挣值域。有关详细信息,请参阅 MSDN Library Online 中的 Project Server 可编程性(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=191606&clcid=0x804)(该链接可能指向英文页面) 中的“Project Scheduling on the Server”(服务器上的项目计划)一节。