The Session-less Serviceinvocation is introduced for Services, such as Read, Writeor Call, that do not require any caller specific state information. It is accessible through the SessionlessInvoke Servicewhich provides the context information required to call Serviceswithout a Session.

Session-less invocation is limited to Servicesof the View Service Set(with exception of RegisterNodesand UnregisterNodes), Attribute Service Set, Method Service Set, NodeManagement Service Setand Query Service Set. All Servicesbelonging to these Service Setsthat are supported by a Servervia a Sessionshall also be supported via the SessionlessInvoke Service.

Session-less Servicescan be invoked via a SecureChannelby using theAccess Token returned from the Authorization Serviceas the authenticationTokenin therequestHeader. TheSecureChannel shall have encryption enabled to prevent eavesdroppers from seeing the Access Token. The Access Tokenprovides the user authentication. If application authentication through the SecureChannelis sufficient, Serversmay not require the Access Tokenand assume an anonymous user. In this case the authenticationTokenshall be null.

The SessionlessInvoke Messagesare just an envelope for the Serviceto invoke and do not have a RequestHeaderand ResponseHeaderlike other Services. Those parameters are already part of the bodywhich contains the Messagefor the Serviceto invoke.

Any Endpointused for normal communication could be used for Session-less invocation provided the Endpointsupports encryption. The Serverreturns Bad_ServiceUnsupportedif it does not support Session-less invocation for the request specified in the body. If it supports invocation but not with the combination of Endpointand security settings used it returns Bad_SecurityModeInsufficient.

Serversmay expose Endpointswhich are only for use with Session-less invocation. These Endpointsshall support GetEndpointsand FindServersin addition to the SessionlessInvoke Service. The Serverreturns Bad_ServiceUnsupported for the other Services.

A Sessionensures that a namespace index or a server index does not change during the lifetime of a Session. This cannot be ensured between Session-less Servicesinvocations. There are two options to ensure the namespace indices in the call match the expected namespace URIs in the Server. One option for the caller is to provide the list of namespace URIs used to build the namespace indices. This works best for single Session-less Serviceinvocations. The second option is to provide the UrisVersionto ensure consistency of namespace arrays between Clientand Server. The UrisVersionis first read from the Servertogether with the NamespaceArrayand ServerArray. This reduces the overhead per call for a sequence of Session-less Serviceinvocations.

Table 107defines the parameters for the Service.

Table 107– SessionlessInvoke Service Parameters

Name

Type

Description

Request

urisVersion

VersionTime

The version of the NamespaceArrayand the ServerArrayused for the Serviceinvocation. The version shall match the value of the UrisVersion Propertythat defines the version for the URI lists in the NamespaceArrayand the ServerArray Propertiesdefined in OPC 10000-5. If the urisVersionparameter does not match the Server's UrisVersion Property, the Servershall return Bad_VersionTimeInvalid. In this case the Clientshall read the UrisVersion, NamespaceArrayand the ServerArrayfrom the Server Objectto repeat the Service invocation with the right version. The VersionTime DataTypeis defined in 7.44.

If the value is 0, the parameter is ignored and the URIs are defined by the namespaceUrisand serverUrisparameters in request and response.

If the value is non-zero, the namespaceUrisand serverUrisparameters in the request are ignored by the Serverand set to null or empty arrays in the response.

namespaceUris []

String

A list of URIs referenced by NodeIdsor QualifiedNamesin the request.

NamespaceIndex 0 shall not be in this list.

The first entry in this list is NamespaceIndex 1.

The parameter shall be ignored by the Serverif the urisVersionis not 0.

serverUris []

String

A list of URIs referenced by ExpandedNodeIdsin the request.

ServerIndex 0 shall not be in this list.

The first entry in this list is ServerIndex 1.

The parameter shall be ignored by the Serverif the urisVersionis not 0.

localeIds []

LocaleId

List of locale ids in priority order for localized strings. The first LocaleIdin the list has the highest priority. If the Serverreturns a localized string to the Client, the Servershall return the translation with the highest priority that it can. If it does not have a translation for any of the locales identified in this list, then it shall return the string value that it has and include the locale id with the string. See OPC 10000-3for more detail on locale ids. If localeIds is empty, the returned language variant is Serverspecific.

serviceId

UInt32

The numeric identifier assigned to the Servicerequest DataTypedescribing the body.

body

*

The body of the request.

The body is an embedded structure containing the corresponding Servicerequest for the serviceId.

Response

namespaceUris []

String

A list of URIs referenced by NodeIdsor QualifiedNamesin the response.

NamespaceIndex 0 shall not be in this list.

The first entry in this list is NamespaceIndex 1.

An empty array shall be returned if the urisVersionis not 0.

serverUris []

String

A list of URIs referenced by ExpandedNodeIdsin the response.

ServerIndex 0 shall not be in this list.

The first entry in this list is ServerIndex 1.

An empty array shall be returned if the urisVersionis not 0.

serviceId

UInt32

The numeric identifier assigned to the Serviceresponse DataTypedescribing the body.

body

*

The body of the response.

The body is an embedded structure containing the corresponding Serviceresponse for the serviceId.

Table 108defines the Serviceresults specific to this Service. Common StatusCodesare defined in Table 182.

Table 108– SessionlessInvoke Service Result Codes

Symbolic Id

Description

Bad_VersionTimeInvalid

The provided version time is no longer valid.