第四十章 SOAP 会话管理
2024-06-26 本文已影响0人
Cache技术分享
第四十章 SOAP 会话管理
SOAP Web
服务本质上是无状态的,因此不维护会话。但是,在 Web
客户端和它使用的 Web
服务之间维护会话通常很有用。 数据平台 SOAP
支持为提供了这样做的方法。
SOAP
会话概述
可以在 Web
客户端和 Web
服务之间维护会话。此支持包括以下工具:
-
Web
会话管理 -
SOAP
会话标头,它是一个简单的专有标头。
总体流程如下:
-
Web
客户端向Web
服务发送初始消息。此消息不包含SOAP
会话标头。 -
Web
服务接收消息并启动新的Web
会话。 - 当
Web
服务发送其答复时,它会将SOAP
会话标头添加到消息中。 - 当
Web
客户端收到回复时,它必须检测SOAP
会话标头并提取会话cookie
。然后,当Web
客户端发送另一条消息时,它必须使用该cookie
在该消息中创建SOAP
会话标头。
注意:
- 如果客户端是
Web
客户端,则会话cookie
会自动保存在Web
客户端的SessionCookie
属性中。此外,客户端实例还会自动创建SOAP
会话标头并将其包含在其发送的所有消息中。 - 如果会话中的所有
SOAP
消息都使用同一个客户端实例,则此步骤也会自动发生在.NET Web
客户端上。可能需要针对其他客户端平台编写更多代码。
-
Web
服务收到下一个回复,继续Web
会话,并在响应时再次包含SOAP
会话标头。
无需包含注销方法。Web
会话会在短暂的间隔后超时(Web
应用程序的超时期限)。
启用会话
为了使用 对 SOAP
会话的支持,必须使用 Web
服务。
- 如果 Web 客户端基于
IRIS
,则只需一步即可启用SOAP
会话支持。在Web
服务类中,将SOAPSESSION
参数设置为1
。 - 如果使用第三方工具创建
Web
客户端,则有责任检测初始响应中的SOAP
会话标头元素,并确保Web
客户端在会话生命周期内的所有请求中都包含此标头元素。此标头元素的格式如下:
<csp:CSPCHD xmlns:csp="https://www.intersystems.com/SOAPheaders"><id>value of CSPCHD token</id></csp:CSPCHD>
使用会话信息
启用会话后,Web
服务可以使用变量 %session
,它是 %CSP.Session
的一个实例。此对象的属性包含系统信息以及选择添加的任何信息。一些常用的属性如下:
-
SessionID
— 此会话的唯一标识符。 -
EndSession
— 通常等于0
。将此属性设置为1
以结束会话。 -
Data
— 多维数组,用于保存任何自定义数据。 -
NewSession
— 如果这是新会话,则等于1
。 -
AppTimeout
— 指定会话的超时值(以秒为单位)。
%session
对象提供了许多其他属性,以及一些与会话相关的任务方法。有关更多详细信息,请参阅 %CSP.Session
的类文档。