<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	    <channel>
        <title>OPC Foundation - Forum: OPC UA Implementation: Stacks, Tools, and Samples</title>
        <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/</link>
        <description><![CDATA[The Industrial Interoperability Standard™]]></description>
        <generator>Simple:Press Version 6.11.14</generator>
        <atom:link href="https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/rss/" rel="self" type="application/rss+xml"/>
		                <item>
                    <title>Randy Armstrong on RAM memory concerns</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5790</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5790</guid>
					                        <description><![CDATA[<p>The generated C# classes are great for small servers or if a rapid prototype is needed, however, if your production application has high requirements you will likely want to invest a NodeManager that is designed for your data.</p>
<p>The understand the value of this approach you must see a UA information model as a window on your data rather than a database.</p>
<p>What this means is you do not need represent a device as 10+ nodes in memory. You instead build a NodeId structure that allows to response to Browse/Read/Write/Call on demand.</p>
<p>This means the only thing you actually need in memory is a structure that describes your device. All of the information associated with various Nodes used to represent your device are collected on demand by merging the static model with the device specific data..</p>
<p>To illustrate this concept a NodeManager for 100 million Nodes was implemented here:</p>
<p><a href="https://github.com/OPCFoundation/UA-.NETStandard/tree/master/Applications/Quickstarts.Servers/MemoryBuffer" rel="nofollow" target="_blank"><a href="https://github.com/OPCFoundati" rel="nofollow">https://github.com/OPCFoundati</a>.....moryBuffer</a></p>
]]></description>
					                    <pubDate>Thu, 21 May 2026 09:02:01 -0700</pubDate>
                </item>
				                <item>
                    <title>Andy Rehn on RAM memory concerns</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5788</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/ram-memory-concerns/#p5788</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>We are developing an OPC UA server based on on the library 'OPCFoundation.NetStandard.Opc.Ua.Server'. The server exposes data of building automation controllers (up to 500 devices). We are now a bit worried that the address space will take up too much RAM, since each object is represented by a number of nodes that must be stored in memory.</p>
<p>What generally consumes the most memory in an OPC UA server? Is it the storage of the address space, or other factors such as subscriptions and monitored items?</p>
<p>Please guide us regarding memory consumption in an OPC UA server. Maybe we're worrying about nothing?</p>
<p> </p>
<p>How we are currently working:</p>
<p>We model our object types in a ModelDesign.xml file and then compile it with ModelCompiler. Then we load the .uanodes file generated by the compiler in our node manager class. To add an object (set of nodes) to the address space of the server we create an object instance of one of the classes that are generated by the compiler and then call CreateNode with that instance as inparameter (we also create references). As we understand the address space (all nodes) are cached in CustomNodeManager2::m_predefinedNodes.</p>
]]></description>
					                    <pubDate>Wed, 20 May 2026 16:35:08 -0700</pubDate>
                </item>
				                <item>
                    <title>Donald Van Raalte on OPC UA Client Application Certificate Security Profile cannot be found</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/opc-ua-client-application-certificate-security-profile-cannot-be-found/#p5781</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/opc-ua-client-application-certificate-security-profile-cannot-be-found/#p5781</guid>
					                        <description><![CDATA[<p>Found a resolution from <a href="https://github.com/OPCFoundation/UA-.NETStandard/discussions/3697" target="_blank">this github dicussion</a></p>
]]></description>
					                    <pubDate>Thu, 23 Apr 2026 02:04:01 -0700</pubDate>
                </item>
				                <item>
                    <title>Donald Van Raalte on OPC UA Client Application Certificate Security Profile cannot be found</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/opc-ua-client-application-certificate-security-profile-cannot-be-found/#p5780</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/opc-ua-client-application-certificate-security-profile-cannot-be-found/#p5780</guid>
					                        <description><![CDATA[<p>Been trying to use certificate auth to connect to a series of Honeywell Experion PKS OPC UA servers.</p>
<p>Was working fine with anonymous/basic auth during local testing, but I'm running into failures now trying to connect to a customer OPC UA server leveraging certificates.</p>
<p>Looking for any guidance, as both this auth problem and certificate problems in general are a little out of my depth.</p>
<p>I am not using an XML config for the application configuration, I have most of it hard coded with some choices exposed through default ASP.NET Core `IConfiguration`.</p>
<p>I thought that using a single certificate would be better than allowing the application to generate its own on session handshake, so I used an F# script to generate a certificate and provided the `pem` and `der` to the customer to add to the `trusted` folder of their OPC UA server. I'm pulling in the `.pfx` file to use during the handshake.</p>
<p>Any help or guidance towards documentation/examples to help me resolve this problem would be greatly appreciated!</p>
<p>Here is the log message/exception that I'm getting:<br />
```<br />
info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
Loaded OPC UA client certificate: Subject=CN=ProjectName, O=CompanyName, OU=OPC UA Client, Thumbprint=12345abcdefg, ValidTo=04/13/2036 10:44:59<br />
info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
OPC UA application configuration validated</p>
<p>info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
Connecting: Endpoint=opc.tcp://myendpoint.com:4840, Session=REACH_Papermaking_Client_Primary, Auth=Username (opc_test)</p>
<p>info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
Selected endpoint: opc.tcp://myendpoint.com:4840, SecurityPolicy=https://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss, SecurityMode=SignAndEncrypt</p>
<p>info: ReachPapermakingClient.OpcUaClientFactoryV2[0]<br />
Using username/password identity for user: opc_test</p>
<p>Unhandled exception. Opc.Ua.ServiceResultException: ApplicationCertificate for the security profile <a href="https://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss" target="_blank">https://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss</a> cannot be found.<br />
at Opc.Ua.Client.Session.LoadCertificateAsync(ApplicationConfiguration configuration, String securityProfile)<br />
at Opc.Ua.Client.Session.CreateChannelAsync(ApplicationConfiguration configuration,<br />
ITransportWaitingConnection connection, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, CancellationToken ct)<br />
at Opc.Ua.Client.Session.CreateAsync(ISessionInstantiator sessionInstantiator, ApplicationConfiguration configuration, ITransportWaitingConnection connection, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, IList`1 preferredLocales, CancellationToken ct)<br />
at Opc.Ua.Client.DefaultSessionFactory.CreateAsync(ApplicationConfiguration configuration, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, IList`1 preferredLocales, CancellationToken ct)<br />
at Opc.Ua.Client.TraceableSessionFactory.CreateAsync(ApplicationConfiguration configuration, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, IList`1 preferredLocales, CancellationToken ct)<br />
at ReachPapermakingClient.OpcUaClientFactoryV2.CreateClientAsync(ApplicationConfiguration config, String endpointUrl, String sessionName) in D:\agent\_work\3348\s\OpcUa\OpcUaClientFactoryV2.cs:line 206<br />
at ReachPapermakingClient.OpcUaClientFactoryV2.CreateRedundantOpcUaClient(String sessionName, ILogger`1 logger) in D:\agent\_work\3348\s\OpcUa\OpcUaClientFactoryV2.cs:line 58<br />
at Program.&#060;Main&#062;$(String[] args) in D:\agent\_work\3348\s\Worker\Program.cs:line 74<br />
at Program.&#060;Main&#062;(String[] args)<br />
Aborted<br />
```</p>
<p>Here is the application configuration that I'm using to build out the OPC UA Client:<br />
```cs<br />
private ApplicationConfiguration BuildApplicationConfiguration()<br />
{<br />
var certificate = LoadClientCertificate();</p>
<p>return new ApplicationConfiguration<br />
{<br />
ApplicationName = ApplicationName,<br />
ApplicationUri = ApplicationUri,<br />
ApplicationType = ApplicationType.Client,<br />
SecurityConfiguration = new SecurityConfiguration<br />
{<br />
ApplicationCertificate = new CertificateIdentifier<br />
{<br />
StoreType = "Directory",<br />
StorePath = GetCertificateStorePath("own"),<br />
SubjectName = certificate.Subject,<br />
Certificate = certificate<br />
},<br />
AutoAcceptUntrustedCertificates = true,<br />
RejectSHA1SignedCertificates = false,<br />
RejectUnknownRevocationStatus = false,<br />
AddAppCertToTrustedStore = true,<br />
TrustedPeerCertificates = new CertificateTrustList<br />
{<br />
StoreType = "Directory",<br />
StorePath = GetCertificateStorePath("trusted")<br />
},<br />
TrustedIssuerCertificates = new CertificateTrustList<br />
{<br />
StoreType = "Directory",<br />
StorePath = GetCertificateStorePath("issuer")<br />
},<br />
RejectedCertificateStore = new CertificateStoreIdentifier<br />
{<br />
StoreType = "Directory",<br />
StorePath = GetCertificateStorePath("rejected")<br />
}<br />
},<br />
TransportConfigurations = new TransportConfigurationCollection(),<br />
TransportQuotas = new TransportQuotas { OperationTimeout = 30_000 },<br />
ClientConfiguration = new ClientConfiguration { DefaultSessionTimeout = 60_000 },<br />
};<br />
}<br />
```</p>
<p>Here is the F# script that is used to create the cert that we're using (in case we need to embed the security profile in the generation somehow? Again, i have no idea here)</p>
<p>```fs<br />
let applicationName = "REACH_Papermaking"<br />
let applicationUri = "urn:REACH_Papermaking:OpcUaClient"<br />
let subjectName = "CN=ProjectName, O=CompanyName, OU=OPC UA Client"</p>
<p>let outputDir =<br />
let dir = Path.Combine(__SOURCE_DIRECTORY__, "..", "Worker", "Certificates")<br />
let dir = Path.GetFullPath(dir)<br />
Directory.CreateDirectory(dir) &#124;&#062; ignore<br />
dir</p>
<p>let lifetimeMonths = uint16 (10 * 12)</p>
<p>let cert =<br />
CertificateFactory<br />
.CreateCertificate(applicationUri, applicationName, subjectName, null)<br />
.SetNotBefore(DateTime.UtcNow.AddDays(-1.0))<br />
.SetLifeTime(lifetimeMonths)<br />
.SetHashAlgorithm(X509Utils.GetRSAHashAlgorithmName(uint32 CertificateFactory.DefaultHashSize))<br />
.SetRSAKeySize(CertificateFactory.DefaultKeySize)<br />
.CreateForRSA()</p>
<p>let derPath = Path.Combine(outputDir, $"{applicationName}.der")<br />
File.WriteAllBytes(derPath, cert.RawData)<br />
let pfxPath = Path.Combine(outputDir, $"{applicationName}.pfx")<br />
File.WriteAllBytes(pfxPath, cert.Export(X509ContentType.Pfx))<br />
let pemPath = Path.Combine(outputDir, $"{applicationName}.pem")<br />
File.WriteAllText(pemPath, cert.ExportCertificatePem())</p>
<p>exit 0<br />
```</p>
]]></description>
					                    <pubDate>Wed, 22 Apr 2026 07:19:42 -0700</pubDate>
                </item>
				                <item>
                    <title>Gianfrancesco Aurecchia on PHP or Javascript implementation</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/php-or-javascript-implementation/#p5779</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/php-or-javascript-implementation/#p5779</guid>
					                        <description><![CDATA[<p>Hi,</p>
<p>Just wanted to add an option that wasn't available back in 2016: php-opcua (<a href="https://www.php-opcua.com" target="_blank">https://www.php-opcua.com</a>/) is a pure-PHP OPC UA client that works on Linux with no native extensions required — just composer require php-opcua/opcua-client.</p>
<p>It supports read/write, browse, subscriptions, and 10 security policies, and has dedicated packages for Laravel and Symfony. MIT licensed and open source.</p>
<p>Should be a good fit for the Linux use case mentioned in this thread.</p>
<p>Cheers</p>
]]></description>
					                    <pubDate>Mon, 20 Apr 2026 19:29:21 -0700</pubDate>
                </item>
				                <item>
                    <title>Randy Armstrong on Compatibility and Versions checking: what could/should a client rely on for the interface?</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5735</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5735</guid>
					                        <description><![CDATA[<p>It includes all profiles for any CS supported by the server.</p>
<p>While all servers may not support today, it is something that can be easily filled in as part of a dialog with server vendors.</p>
<p>I believe that certification testing will require that this property be filled out correctly.</p>
<p>So insisting on certified servers would make the field more useful.</p>
]]></description>
					                    <pubDate>Sun, 09 Nov 2025 20:15:54 -0700</pubDate>
                </item>
				                <item>
                    <title>Patrick Berger on Compatibility and Versions checking: what could/should a client rely on for the interface?</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5734</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5734</guid>
					                        <description><![CDATA[<p>Oh, I've didn't seen this - thanks for the link.</p>
<p>Based on your answer this list isn't limitted to the scope of server capabilities but also includes all used companion specification or vendor specific defined profiles?</p>
<p>I'm not shure if all servers are conform to this (at least the uamit demo server isn't it) <a href="https://github.com/umati/Sample-Server" rel="nofollow" target="_blank">https://github.com/umati/Sample-Server</a>. So from a robust client perspecivte this isn't a feacable way.</p>
]]></description>
					                    <pubDate>Sun, 09 Nov 2025 19:11:27 -0700</pubDate>
                </item>
				                <item>
                    <title>Randy Armstrong on Compatibility and Versions checking: what could/should a client rely on for the interface?</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5723</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5723</guid>
					                        <description><![CDATA[<p>Every Server should publish a list of Profiles that it supports:</p>
<p><em class="text-primary"><a href="https://reference.opcfoundation.org/search/464?t=ServerProfileArray" target="_blank">ServerProfileArray </a></em><span style="padding-left: 0em"> lists the </span><span style="padding-left: 0em"><em class="text-primary"><a href="https://reference.opcfoundation.org/search/464?t=Profiles" target="_blank">Profiles</a></em></span><span style="padding-left: 0em"> that the </span><span style="padding-left: 0em"><em class="text-primary"><a href="https://reference.opcfoundation.org/search/464?t=Server" target="_blank">Server</a></em></span><span style="padding-left: 0em"> supports. The </span><span style="padding-left: 0em"><em class="text-primary"><a href="https://reference.opcfoundation.org/search/464?t=String" target="_blank">String</a></em></span><span style="padding-left: 0em"> shall be the URI of the </span><span style="padding-left: 0em"><em class="text-primary"><a href="https://reference.opcfoundation.org/search/464?t=Profile" target="_blank">Profile</a></em></span><span style="padding-left: 0em">. See </span><a href="https://reference.opcfoundation.org/Core/Part5/v105/docs/?r=UAPart7" target="_blank"><span style="padding-left: 0em">OPC 10000-7</span></a><span style="padding-left: 0em"> for definitions of OPC UA </span><span style="padding-left: 0em"><em class="text-primary"><a href="https://reference.opcfoundation.org/search/464?t=Server" target="_blank">Server</a></em></span> <span style="padding-left: 0em"><em class="text-primary"><a href="https://reference.opcfoundation.org/search/464?t=Profiles" target="_blank">Profiles</a></em></span><span style="padding-left: 0em">. This list should be limited to the </span><span style="padding-left: 0em"><em class="text-primary"><a href="https://reference.opcfoundation.org/search/464?t=Profiles" target="_blank">Profiles</a></em></span><span style="padding-left: 0em"> the </span><span style="padding-left: 0em"><em class="text-primary"><a href="https://reference.opcfoundation.org/search/464?t=Server" target="_blank">Server</a></em></span><span style="padding-left: 0em"> supports in its current configuration. </span></p>
<p><a href="https://reference.opcfoundation.org/Core/Part5/v105/docs/6.3.2" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....docs/6.3.2</a></p>
]]></description>
					                    <pubDate>Mon, 03 Nov 2025 10:51:14 -0700</pubDate>
                </item>
				                <item>
                    <title>Randy Armstrong on OAuth2 and Role set</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/oauth2-and-role-set/#p5722</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/oauth2-and-role-set/#p5722</guid>
					                        <description><![CDATA[<p>The contents of the token are not directly related to the permissions/roles defined in any given server.</p>
<p>The mapping between information in a token and the local roles is defined by Part 18</p>
<p><a href="https://reference.opcfoundation.org/Core/Part18/v105/docs/4.4.4" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....docs/4.4.4</a></p>
<p>In this case, the server admin would set up mapping rules for the roles that actually appear in the token and the the roles it knows about.</p>
]]></description>
					                    <pubDate>Mon, 03 Nov 2025 10:48:44 -0700</pubDate>
                </item>
				                <item>
                    <title>Patrick Berger on Compatibility and Versions checking: what could/should a client rely on for the interface?</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5721</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5721</guid>
					                        <description><![CDATA[<blockquote class="spPostEmbedQuote">
<p>
<strong>Randy Armstrong said </strong><br />
Profiles are the primary way to to determine what functionality is supported.<br />
  </p>
</blockquote>
<p>But then we got the key-problems:</p>
<ul>
<li>how could a client read out the supported profiles from a server?</li>
<li>it seems that OPC UA server doesn't offer a "interface version" in a common/generic way. If I implement the Machinery Basic Building Blocks V1.04, then I earn 4-7 additional nodeSets. Each of them has his own version and URI information - but what the machine really provides as funcitonality at the interface (assuming that no machine provide all defined things from day 1) is the question.</li>
</ul>
]]></description>
					                    <pubDate>Sun, 02 Nov 2025 23:49:11 -0700</pubDate>
                </item>
				                <item>
                    <title>Kian A on OAuth2 and Role set</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/oauth2-and-role-set/#p5719</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/oauth2-and-role-set/#p5719</guid>
					                        <description><![CDATA[<p>In the 6.5.3 part of the specification some details of how the OAuth2 services would integrate with OPCUA is described. However one important thing which is not discussed is:Suppose a user logs in and gets a claim token containing a list of roles. In those roles a few, dont exist in the role set of the current OPCUA server the user is trying to login to. How are those roles handled? How can an OPCUA server sync up its role set independently? I might be missing something but I dont see any reasonable way that the OPCUA server can sync up the role set independently using OAuth2. This makes it questionable what happens to those unknown roles in the claim token returned by the Authorization Service since its also not mentioned in the specification. Any help is appreciated. Again, I might be missing something here so, I would be glad to discover that a solution exists or could be found.With regards,</p>
]]></description>
					                    <pubDate>Sun, 02 Nov 2025 20:38:49 -0700</pubDate>
                </item>
				                <item>
                    <title>Randy Armstrong on Compatibility and Versions checking: what could/should a client rely on for the interface?</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5712</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5712</guid>
					                        <description><![CDATA[<p>Profiles are the primary way to to determine what functionality is supported.</p>
<p>NodeSet minor versions are always backward compatible.</p>
<p>NodeSet major versions are not.</p>
<p>Usually, the URI will change with the major version. </p>
<p>The N<span style="padding-left: 0em">amespaces component of the Server Object has all of the metadata associated with the NamespaceUris.</span></p>
]]></description>
					                    <pubDate>Tue, 28 Oct 2025 14:39:29 -0700</pubDate>
                </item>
				                <item>
                    <title>Patrick Berger on Compatibility and Versions checking: what could/should a client rely on for the interface?</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5710</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/compatibility-and-versions-checking-what-could-should-a-client-rely-on-for-the-interface/#p5710</guid>
					                        <description><![CDATA[<p>Hi all</p>
<p>We implemented a lot of different interfaces for our products, and we had always some issues or soultions regarding different interface versions of communication partners.</p>
<p>With OPC UA, there is a promise that this will be solved in a robust manner. therefore some questions arise: So what must be provided by the server?</p>
<ul>
<li>I assume that for each used NodeSet with its Namespace and details, there must be an entry in the Namespace-Array. Accessing the namespace-details in the ServerType isn't possible, because it is optional (<a href="https://reference.opcfoundation.org/Core/Part5/v105/docs/6.3.1" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....docs/6.3.1</a>). So as client, at this point we get just the URIs. On the other side, with the URIs the client could rely on that there is no breaking change (<a href="https://reference.opcfoundation.org/Model-Best/v103/docs/11.3" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>...../docs/11.3</a>). But no informations regarding intermediate versions.</li>
<li>A client could only rely on all mandatory parts of a specification (<a href="https://reference.opcfoundation.org/Model-Best/v103/docs/3" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....103/docs/3</a>) -&#062; that is clear, but most specifications defines more elements optional, than mandatory. on the other side the server could react with errors (e.g. BadNotImplemented) or just provide default values (e.g. empty strings) for mandatory parts, to bypass this requirement.</li>
<li>Does the ServerStatus <a href="https://reference.opcfoundation.org/Core/Part5/v105/docs/12.10" rel="nofollow" target="_blank"><a href="https://reference.opcfoundatio" rel="nofollow">https://reference.opcfoundatio</a>.....docs/12.10</a> provide BuildInfos regarding the used SDK or in general the OPC UA Server?</li>
<li>If there are different profiles available, the interface and also the application will propably have an implementation progress.</li>
<li>Any "software revision" provided by the nameplate will cover the entire machine - not just the OPC UA server or the interface definition. In addition this is only available whithin a limitted scope like companion specifications.</li>
</ul>
<p>I've the feeling to overlook the basic version-information... like it is done for Rest-API versioning</p>
<p> </p>
<p>Thanks, and best regards</p>
<p>P51D</p>
]]></description>
					                    <pubDate>Sun, 26 Oct 2025 23:41:55 -0700</pubDate>
                </item>
				                <item>
                    <title>Randy Armstrong on Detecting connection loss in reverse connect scheme</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/detecting-connection-loss-in-reverse-connect-scheme/#p5701</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/detecting-connection-loss-in-reverse-connect-scheme/#p5701</guid>
					                        <description><![CDATA[<p>You would depend on TCP level errors to determine that the socket has been lost. </p>
<p>This could mean long time outs or other error reporting delays that occur when relying on TCP stack error notifications.</p>
<p>The spec provides no recommendations when it comes to setting TCP socket properties but perhaps it should.</p>
<p>Can you add a mantis issue for Part 6 with some suggestions for spec additions:</p>
<p><a href="https://mantis.opcfoundation.org/set_project.php?project_id=34&#038;make_default=no" rel="nofollow" target="_blank"><a href="https://mantis.opcfoundation.o" rel="nofollow">https://mantis.opcfoundation.o</a>.....default=no</a></p>
]]></description>
					                    <pubDate>Fri, 10 Oct 2025 06:51:10 -0700</pubDate>
                </item>
				                <item>
                    <title>Alexander Sobetskiy on Detecting connection loss in reverse connect scheme</title>
                    <link>https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/detecting-connection-loss-in-reverse-connect-scheme/#p5697</link>
                    <category>OPC UA Implementation: Stacks, Tools, and Samples</category>
                    <guid isPermaLink="true">https://opcfoundation.org/forum/opc-ua-implementation-stacks-tools-and-samples/detecting-connection-loss-in-reverse-connect-scheme/#p5697</guid>
					                        <description><![CDATA[<p>In reverse connection ua-server initiates connection to ua-client by sending RHEL message.</p>
<p>What is the preferable way to determine the connection loss so ua server can resend RHEL message to the client?</p>
<p> </p>
<p>Can we enable tcp keep-alive on ua-server side?</p>
<p>Or should we have some configurable timeout on ua-server side like "timeout of no client messages received" ?</p>
<p>Or may be ua-server shall once in a sec try to open socket to the client and this way monitor connection loss?</p>
<p>Or may be ua-server should wait for session timeout to pass?</p>
<p>Any other way?</p>
]]></description>
					                    <pubDate>Thu, 09 Oct 2025 11:28:09 -0700</pubDate>
                </item>
				    </channel>
	</rss>
