InfoPath Forms Services 体系结构

上次修改时间: 2010年3月12日

适用范围: SharePoint Server 2010

本文内容
与 Office SharePoint Server 集成
常规体系结构
运行时体系结构
呈现和查询参数
表单模板生命周期
表单模板转换器

InfoPath Forms Services 作为 Microsoft SharePoint Server 2010 的一部分,是真正的多层系统。InfoPath Forms Services 体系结构包含 Microsoft InfoPath 2010 和桌面上的 XmlFormView 浏览器控件。它们可直接或通过 InfoPath Forms Services Web 服务与中间层通信,然后依次与基础 InfoPath Forms Services 和 SharePoint Server 2010 组件通信。

与 Office SharePoint Server 集成

InfoPath Forms Services 集成了 SharePoint Server 2010 的核心平台和高级组件,其中包含了以 Microsoft SharePoint Foundation 2010 平台为基础构建的几个服务器产品和组件。由于 InfoPath Forms Services、SharePoint Server 2010 和相关的产品都是以通用 SharePoint 产品和技术平台为基础构建的,因此开发人员可以使用一组常用的开发工具和技术来集成和扩展所有产品。

常规体系结构

通过 InfoPath Forms Services 的四个主要组件,可以在浏览器中转换、呈现和使用表单模板 (.xsn) 文件(如同在 InfoPath 客户端中进行这些操作):

  • IIS 和支持的 ASP.NET 模块:将 HTML 返回到浏览器、向页生成器 和转换器 发送文件请求以及转发要由页生成器 处理的回发信息。

  • InfoPath Forms Services HTTP 处理程序:转发来自 IIS 和支持 ASP.NET 模块 以及页面生成器 的请求。

  • 转换器:将表单模板 (.xsn) 文件转换为解决方案模块和 .aspx 页,缓存解决方案数据以及将已转换文件发送到 InfoPath Forms Services HTTP 处理程序。

  • 页生成器:与外部数据源通信、存储和检索会话状态、检索初始数据和解决方案模块、处理回发事件日志数据,以及根据 InfoPath Forms Services HTTP 处理程序 的请求将数据返回到 IIS 和支持 ASP.NET 模块。

运行时体系结构

默认情况下,如果请求表单的计算机上安装了 InfoPath,则会在 InfoPath 中打开表单。如果计算机请求了启用浏览器功能的表单但未安装 InfoPath,则 InfoPath Forms Services 将重定向到 FormServer.aspx 页,并将预生成的 JScript 代码和解决方案特定的 JScript 数据数组发送到浏览器。不可修改的客户端脚本数组分两部分生成,即在转换表单模板时和请求表单时。它的功能类似于异步 JavaScript 和 XML (AJAX) 处理 HTML 生成及客户端上的服务器通信。该脚本数组处理下列任务:

  • 根据服务器的 JScript 数组生成并呈现 HTML。

  • 生成客户端上所发生事件的事件日志,以回发到服务器。

  • 数据验证

  • 计算

  • 规则

  • 编辑操作,如插入或删除表单的组成部分

  • 条件格式

当用户在表单中输入数据或以其他方式更新表单时,事件日志会记录所有用户操作。此事件日志的形式为 JScript 数据数组,将于下一次回发时被发送到服务器,服务器将对初始 XML 数据重复此日志中的操作,并根据需要执行规则和业务逻辑。然后,服务器将更新后的 JScript 数据数组发送到浏览器。通过组合的客户端和服务器端体系结构,表单无需为了每个用户操作与服务器进行通信,即可在浏览器中使用。但是,如果需要与服务器通信,则客户端和服务器会与事件日志 JScript 数据数组通信,以优化响应时间并使用差异变化更新该表单,而不是发送和接收完整表单以及针对每个请求预生成的 JScript 代码。

提交表单

提交表单后,服务器会处理浏览器提交的内容。从 InfoPath 客户端提交表单只是一个 XML 提交过程;而从浏览器提交表单则是两个过程:首先通过 XMLHTTP 将表单提交到服务器,服务器随之重播事件日志,然后将 XML 提交到最终提交目标。这种分为两个步骤的提交过程可能会导致出现身份验证问题(通常称为双跃点问题),使用 InfoPath Forms Services 代理可以解决此问题。有关如何使用代理的详细信息,请参阅关于数据连接、身份验证和备用访问映射

呈现和查询参数

InfoPath Forms Services 的呈现组件是 FormServer.aspx 和 MobileFormServer.aspx 页,分别位于服务器的"_layouts"和"_layouts /Mobile"文件夹中。如果有多个 Web 前端 (WFE) 服务器和一个包含场的数据库服务器,则这些组件位于 WFE 上。

如果由 FormServer.aspx 页呈现启用浏览器功能的表单模板,则代表该表单的初始 XML 数据和 HTML 将与不可修改的、支持的 JScript 解决方案模块一起被发送到浏览器。这些模块处理客户端操作,例如简单的计算、设置条件格式和数据验证。这些模块还处理 XML 数据中与服务器通信的增量变化。随后在 JScript 解决方案模块中使用这些变化,来更新代表表单的 HTML 页,同时通过最大限度地减少整页回发到服务器来提高性能。

处理由 MobileFormServer.aspx 页呈现的启用浏览器功能的表单模板的方法与上述类似,但是不包含通过 JScript 解决方案模块处理客户端。如果要在移动表单中执行多个操作,则与服务器通信,但是每次通信都将导致整页回发。这样,服务器的通信不会发生增量变化,但是名称/值对会被发送到用于视图中各个控件的服务器。

InfoPath Forms Services 支持使用查询参数控制呈现表单的方式、保存表单的位置以及在关闭表单时用户重定向到的页面。有关如何使用查询参数的详细信息,请参阅如何:使用查询参数来调用支持浏览器的 InfoPath 表单

表单模板生命周期

图 1 显示表单模板在 InfoPath Forms Services 中的各个状态:

570919ac-de82-4f9d-954e-a07c80a8222e

图 1. 表单模板的生命周期

有关表单模板生命周期的详细信息,请参阅表单开发和部署生命周期

表单模板转换器

在转换表单的过程中,表单模板 (.xsn) 文件被展开到其组件文件,如 manifest.xsf 文件、架构 (.xsd) 文件和视图 (.xsl) 文件。这些文件存储在服务器上,用于生成 InfoPath Forms Services 在 XmlFormView 控件中呈现表单所需的脚本和其他组件。