Good afternoon! I should start this off by stating that I am not a programmer, so much of the specification is beyond my scope. I do, however, work with some very knowledgeable developers and I always take these types of questions to them before going any further. As a technical trainer I develop training modules for OPC UA users, and this often involves interpreting the functionality defined in the spec and expressing it in terms that are easily understood by non-programmer students. This issue is one I came across in a recent training project.
This Discovery process is described in 1.02 and further amplified in 1.03. It is still part of 1.04. I was under the impression that OPC UA clients do not have the ability to launch an OPC UA server as this is a feature of specific technology, such as CoCreateInstance in COM. Further, this functionality of the client launching a server on "connect" is not defined in the OPC UA specification under the services (Part 4) or the Service Mappings (Part 6). I have discussed this with our developers and they have assured me that the specification does not define this capability and that the process defined in the spec (Part 4 para 22.214.171.124, p 16/17) is only one way in which to accomplish this functionality. If this is an example of a specific implementation, why is it included in the specification? Should it not at least be identified as such?
The 'launch on connect' feature is a security nightmare that resulted in numerous exploits to DCOM. It is not in OPC UA by design.
Similarly, OPC UA servers need to be assigned a port in advance so it is not necessary to poke large holes in a firewall to allow OPC UA communication.
The discussion in https://reference.opcfoundatio.....5/#126.96.36.199 refers to Servers being automatically launched by the OS or the applications running on the same machine, such as an HTTP server. It is not intended to describe a mechanism where clients launch servers. The only analog you could find is a UA Server designed to accept HTTP requests and runs inside an app pool managed by the HTTP server. The HTTP server could automatically launch the UA server in response to a client request if it is not already running. In this scenario, the HTTP server is already running an listening on a known port and all communication to the UA server is via the HTTP server.