mirror of
https://github.com/OPCFoundation/UA-.NETStandard.git
synced 2026-10-19 15:22:15 +08:00
d525bc3f28
# Description This PR fixes bounded ManagedSession reconnect cleanup and reorganizes the sample applications into domain-focused folders. ## Reconnect cleanup - Bounds reconnect integration cleanup with independent 30-second close and dispose limits. - Sends `CloseSession` through the awaited transport request path during `Session.DisposeAsync`. - Preserves explicit `Session.CloseAsync` behavior that waits for or cancels outstanding publish requests. - Covers the disposal request path with a regression test. ## Sample organization - `samples/OpenUsd`: `GeneratorServer`, `SiteCompositionServer` - `samples/Redundancy`: `RedundantClient`, `RedundantServer`, `RedundantPubSub` - `samples/Isa95`: `MinimalIsa95Server` - `samples/MinimalApi`: `MinimalBoilerServer`, `MinimalCalcServer`, `MinimalClient` - `samples/DI`: `PumpDeviceIntegrationServer` - `samples/Lds`: `ConsoleLdsServer` - `samples/Reference`: `ConsoleReferenceClient`, `ConsoleReferenceServer` - `samples/PubSub`: `ConsoleReferencePubSubClient` `UA.slnx` now exposes the same requested domain groups. Project references, tests, runtime sample probes, CI workflows, Dockerfiles, Compose files, helper scripts, and documentation were updated to the new paths. `samples/Robotics/MinimalRobotServer` remains under `Robotics`. ## Validation - `dotnet build UA.slnx` - 3 Redundancy short-haul sample tests - 70 DI sample tests - 914 OpenUSD tests - 1 WotCon model-materialization test - 137 AOT tests - `docker compose config` for all 6 moved Redundancy Compose files ## Related Issues - Fixes #4273 ## Checklist - [ ] I have signed the [CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf) and read the [CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md) doc. - [x] I have added tests that prove my fix is effective or that my feature works and increased code coverage. - [x] I have added all necessary documentation. - [x] I have verified that my changes do not introduce new build or analyzer warnings. - [x] I built the complete `UA.slnx` solution locally. - [ ] I ran all tests locally against at least .NET Framework and .NET 10. - [ ] I fixed all failing and flaky tests in the CI pipelines and all CodeQL warnings. - [x] I have addressed all PR feedback received. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> Co-authored-by: Marc Schier <mschier@microsoft.com> Co-authored-by: Marc Schier <marcschier@users.noreply.github.com> Copilot-Session: a2c2838f-74ae-4997-a1d4-50574d9e0636
84 lines
3.5 KiB
Markdown
84 lines
3.5 KiB
Markdown
# OPC Foundation UA .NET Standard Reference Client
|
|
|
|
## Introduction
|
|
|
|
The console reference client can be configured using several console parameters.
|
|
Some of these parameters are explained in more detail below.
|
|
|
|
To see all available parameters call console reference client with the parameter `-h`.
|
|
|
|
## Supported transport profiles
|
|
|
|
The client picks the wire transport automatically from the `serverUrl`
|
|
scheme. The OPC UA spec aliases the URL scheme to the
|
|
[`TransportProfileUri`](https://reference.opcfoundation.org/Core/Part6/v107/docs/7.4)
|
|
on the negotiated endpoint:
|
|
|
|
| URL scheme | TransportProfileUri | OPC UA Part 6 reference |
|
|
| --- | --- | --- |
|
|
| `opc.tcp://` | `uatcp-uasc-uabinary` | §7.4.2 |
|
|
| `opc.https://` (or `https://`) with binary body | `https-uabinary` | §7.4.4 |
|
|
| `opc.https://` (or `https://`) with `application/opcua+uajson` body | `https-uajson` | §7.4.5 |
|
|
| `opc.wss://` (or `wss://`) with `opcua+uacp` sub-protocol | `wss-uasc-uabinary` | §7.5.2 |
|
|
| `opc.wss://` (or `wss://`) with `opcua+uajson` sub-protocol | `wss-uajson` | §7.5.2 |
|
|
|
|
Examples:
|
|
|
|
```bash
|
|
# UA-TCP (default)
|
|
dotnet ConsoleReferenceClient.dll opc.tcp://localhost:62541/Quickstarts/ReferenceServer
|
|
|
|
# WSS+uacp (binary UA SecureChannel over TLS WebSocket)
|
|
dotnet ConsoleReferenceClient.dll opc.wss://localhost:62543/Quickstarts/ReferenceServer
|
|
|
|
# HTTPS (binary)
|
|
dotnet ConsoleReferenceClient.dll opc.https://localhost:62543/Quickstarts/ReferenceServer
|
|
```
|
|
|
|
The reference server (`ConsoleReferenceServer`) advertises the
|
|
`opc.tcp://`, `opc.https://` and `opc.wss://` endpoints by default; see
|
|
[`docs/Transports.md`](../../../docs/Transports.md) for the full server
|
|
configuration story (TLS certificates, mutual TLS, JSON sub-protocol
|
|
restrictions, etc.).
|
|
|
|
## Reverse Connect
|
|
|
|
The OPC UA reverse connect feature allows an OPC UA server to initiate the connection to a client, rather than the traditional model where clients connect to servers. This is particularly useful in scenarios where the server is behind a firewall or NAT, making it difficult for clients to directly connect to it.
|
|
|
|
### How to use Reverse Connect
|
|
|
|
To enable reverse connect mode, specify the client endpoint URL using the `--rc` or `--reverseconnect` parameter:
|
|
|
|
```bash
|
|
dotnet ConsoleReferenceClient.dll --rc=opc.tcp://localhost:65300 opc.tcp://localhost:62541/Quickstarts/ReferenceServer
|
|
```
|
|
|
|
The client will start a reverse connect listener on the specified endpoint (e.g., `opc.tcp://localhost:65300`) and wait for the server to connect to it.
|
|
|
|
### Example: Client and Server with Reverse Connect
|
|
|
|
1. Start the client with reverse connect listener on port 65300:
|
|
```bash
|
|
dotnet ConsoleReferenceClient.dll --rc=opc.tcp://localhost:65300 opc.tcp://localhost:62541/Quickstarts/ReferenceServer
|
|
```
|
|
|
|
2. In a separate terminal, start the server with reverse connect to the client:
|
|
```bash
|
|
dotnet ConsoleReferenceServer.dll --rc=opc.tcp://localhost:65300 -a
|
|
```
|
|
|
|
The server will establish a reverse connection to the client endpoint, and the client will use this connection to communicate with the server.
|
|
|
|
### How to specify User Identity
|
|
#### Username & Password
|
|
Specify as console parameters:
|
|
`-un YourUsername`
|
|
`-up YourPassword`
|
|
|
|
#### Certificate
|
|
Place your user certificate in the TrustedUserCertificatesStore (the path can be found in the client configuration XML). Make sure to include an accessible private key with the certificate.
|
|
Specify console parameters:
|
|
`-uc Thumbprint` (of the user certificate to select)
|
|
`-ucp Password` (of the user certificates private key (optional))
|
|
|