OPC UA 1.05 Maintenance Update
Pre-release
Pre-release
This release is based on the 1.05.06 Nodeset.
It contains important bug fixes which were found after the last 1.05.377 release, as well as breaking API changes.
## Changes:
- Introduced telemetry context and proper use of ILogger.
- Improve thread safe Utils methods for incrementing identifiers.
- Obsolete Synchronous Certificate Validator Methods.
- Move from .net 9 to .net 10 SDK and build new target framework .net 10.
- Restructured core and built in types into base assembly and nuget.
- Pulled ActivityTraceFlags into IClientBase.
### Server Specific:
- Pass SecureChannelContext explicitly.
- Obsolete APM & Synchronous Methods.
- Configured Thread Pool for better Server Performance.
- Refactor Publishing to work with TAP.
- Refactor SessionPublishQueue for improved throughput by removing locking on Subscription enumeration.
- Include domains and applicationName in ServerCertificate for CreateSigningRequest Method with parameter regeneratePrivateKey = true.
- Complete IAsyncNodeManager Interface with support for sync Calls using SyncNodeManagerAdapter.
- Add Async MonitoredItem Management methods to MasterNodeManager & IAsyncNodeManager.
- Implement Service Members of IAsyncNodeManager in MasterNodeManager.
- INodeManager: Propagate MonitoredItemId using Class MonitoredItemIdFactory instead of ref globalIdCounter.
- Extended MasterNodeManager with support for ReadAsync, WriteAsync, HistoryReadAsync, HistoryWriteAsync, TranslateBrowsePathAsync, ConditionRefreshAsync.
- Extended StandardServer with ActivateSessionAsync, CreateSessionAsync, FindServersAsync, GetEndpointsAsync, CloseSessionAsync.
- Improve SubscriptionManager throughput by removing lock on subscription dictionary lookups.
- Implement async transportlistener callback.
- Refactor MasterNodeManager NamespaceManagers Property to use ConcurrentDictionary for lock free lookups.
- Add an Explicit deterministic load test to test Server Performance.
- Allow non OPC-UA conform SubjectName values to AddSecurityConfigurationStores
### Client Specific:
- Obsolete APM calls.
- Set default timout hint based on OperationTimeout of the TransportChannel.
### Fixes:
- Fix memory leak of Monitored Items in CustomNodeManager2.
- Fix JsonDecoder for Unions.
- Fix NodeId.Parse() to reject invalid identifiers without type prefix.
- Fix log level for expected client disconnection scenarios (BadNoSubscription and related status codes).
- Fix client Close method to properly wait for outstanding publish requests.
- Fix InvalidCastException in GetBrowseName methods for Attributes, DataTypes, ReferenceTypes, and StatusCodes.
- Fix TranslateBrowsePath to NodeIds synchronous path in MasterNodeManager.
- Fix WriteArray in encoders to also write null.
- Fix HistoryRead bit not set in Server object EventNotifier when history capabilities are enabled
Released packages
OPCFoundation.NetStandard.Opc.Ua
OPCFoundation.NetStandard.Opc.Ua.Core
OPCFoundation.NetStandard.Opc.Ua.Security.Certificates
OPCFoundation.NetStandard.Opc.Ua.Configuration
OPCFoundation.NetStandard.Opc.Ua.Server
OPCFoundation.NetStandard.Opc.Ua.Client
OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes
OPCFoundation.NetStandard.Opc.Ua.Bindings.Https
OPCFoundation.NetStandard.Opc.Ua.PubSub
What's Changed
- [Server] Refactor MasterNodeManager NamespaceManagers Property to use ConcurrentDictionary for lock free lookups by @romanett in #3190
- [Server] Implement async transportlistener callback by @romanett in #3184
- [Server] Improve SubscriptionManager throughput by removing lock on subscription dictionary lookups by @romanett in #3189
- Make IAsyncNodeManager experimental / Remove deprecated ICertificateStoreMembers / Rename IApplicationConfigurationBuilderCreate.Create to CreateAsync by @romanett in #3187
- [Server] Extend MasterNodeManager with support for ReadAsync, WriteAsync, HistoryReadAsync, HistoryWriteAsync, TranslateBrowsePathAsync, ConditionRefreshAsync by @romanett in #3188
- Retry to reactivate session on BadNoCommunication and BadConnectionClosed. by @mrsuciu in #3197
- [Server] Fix TranslateBrowsePath to NodeIds sync path in MasterNodeManager by @romanett in #3195
- Update Microsoft nuget packages to 9.0.9 Versions by @romanett in #3205
- Fix ExtendedNodeId not correctly json encoded #3209 by @marcschier in #3211
- [Server] INodeManager: Propagate MonitoredItemId using Class MonitoredItemIdFactory instead of ref globalIdCounter by @romanett in #3207
- [Server] Implement Service Members of IAsyncNodeManager in MasterNodeManager by @romanett in #3204
- [Server] Add Async MonitoredItem Management methods to MasterNodeManager & IAsyncNodeManager by @romanett in #3217
- Improve thread safe Utils methods for incrementing identifiers by @romanett in #3221
- [Server] Complete IAsyncNodeManager Interface with support for sync Calls using SyncNodeManagerAdapter by @romanett in #3218
- Introduce telemetry context and proper use of ILogger by @marcschier in #3213
- Bump Nerdbank.GitVersioning from 3.7.115 to 3.8.118 by @dependabot[bot] in #3231
- Bump BenchmarkDotNet from 0.15.3 to 0.15.4 by @dependabot[bot] in #3232
- Add API back as Obsolete for samples to compile (almost) unchanged. by @marcschier in #3234
- More missing obsoleted API to support better porting by @marcschier in #3237
- Bump Microsoft.NET.Test.Sdk from 17.14.1 to 18.0.0 by @dependabot[bot] in #3238
- Fix InvalidCastException in GetBrowseName methods for Attributes, DataTypes, ReferenceTypes, and StatusCodes by @Copilot in #3242
- Immutable Encodeable factory and lookup performance improvements by @marcschier in #3241
- Improve test stability of ValidateTransfer test, ensure thread safety in MonitoredItem by @marcschier in #3243
- Refactor string usage for secrets (#394) by @marcschier in #3250
- Fix log level for expected client disconnection scenarios (BadNoSubscription and related status codes) by @Copilot in #3255
- Fix: Update Dockerfile to target .NET 9.0 by @Navaneethnanda in #3246
- [Client] Set default timout hint based on OperationTimeout of the TransportChannel by @romanett in #3178
- Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #3260
- Bump NUnit3TestAdapter from 5.1.0 to 5.2.0 by @dependabot[bot] in #3261
- Replace deprecated Uri.DnsSafeHost with Uri.IdnHost by @Copilot in #3256
- Fix WriteArray in encoders to also write null. by @marcschier in #3266
- Make GDS tests stable and add better logging to unit tests by @marcschier in #3271
- Allow non OPC-UA conform SubjectName values to AddSecurityConfigurationStores by @mrsuciu in #3229
- Check bounds for switched on values and roslyn cleanup by @marcschier in #3264
- Fix HistoryRead bit not set in Server object EventNotifier when history capabilities are enabled by @Copilot in #3252
- [Server] Include domains and applicationName in ServerCertificate for CreateSigningRequest Method with parameter regeneratePrivateKey = true by @romanett in #3263
- Fix client Close method to properly wait for outstanding publish requests by @Copilot in #3254
- Fix NodeId.Parse() to reject invalid identifiers without type prefix by @Copilot in #3284
- [Client] Obsolete APM calls by @marcschier in #3282
- Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #3292
- [Server] Refactor Publishing to work with TAP by @romanett in #3289
- 1.05.06 generated files by @marcschier in #3299
- Added RejectCertificateUriMismatch property and explicit ApplicationUri validation after certificates are loaded by @mrsuciu in #3244
- Populate ServerCapabilities->ModellingRules with stack-used modelling rules by @Copilot in #3291
- Add TryParse methods to NodeId and ExpandedNodeId by @Copilot in #3302
- Add GitHub Copilot instructions for repository context by @Copilot in #3305
- Fix flaky failing CreateSessionApplicationUriValidationTests by @mrsuciu in #3307
- Refactor client state persistence and add more tests by @marcschier in #3303
- Add unit tests for standard deviation and variance aggregates by @Copilot in #3309
- Document custom versioning scheme in NuGet README by @Copilot in #3308
- Add an Explicit deterministic load test to test Server Performance by @romanett in #3306
- [Server] Configure Thread Pool for better Server Performance by @romanett in #3310
- Bump BenchmarkDotNet from 0.15.4 to 0.15.5 by @dependabot[bot] in #3311
- Bump Serilog.Sinks.Console from 6.0.0 to 6.1.1 by @dependabot[bot] in #3312
- Trace and metrics for send/receive, more test coverage and additional nullable annotations by @marcschier in #3314
- Allow sending while connecting in client channel. by @marcschier in #3315
- Pull ActivityTraceFlags into IClientBase by @marcschier in #3319
- [Server] Refactor SessionPublishQueue for improved throughput by removing locking on Subscription enumeration by @romanett in #3320
- Fix JsonDecoder for Unions. by @opcfoundation-org in #3323
- [Server] Fix memory leak of Monitored Items in CustomNodeManager2 by @romanett in #3324
- [Reference Applications] Disable logging by default, Add file log parameter, Remove TraceLogs from MonitoredItem IsReadyToPublishCheck by @romanett in #3327
- Use connect async instead of BeginConnect by @marcschier in #3321
- Restructure core and built in types into base assembly and nuget by @marcschier in #3326
- Fix strong name signing and IVT by @marcschier in #3331
- [Server] ActivateSessionAsync / CreateSessionAsync / FindServersAsync / GetEndpointsAsync / CloseSessionAsync by @romanett in #3225
- Move from .net 9 to .net 10 SDK and build new target framework .net 10 by @marcschier in #3333
- [Server] Obsolete APM & Sync Methods by @romanett in #3334
- Build Core libraries only for signing by @marcschier in #3337
- [Server] Pass SecureChannelContext explicitly by @romanett in #3340
- Fix built solution not the same as signed solution file by @marcschier in #3341
- Obsolete Sync Certificate Validator Methods by @romanett in #3338
- Update Generated Files with latest 1.5.6. by @opcfoundation-org in #3344
New Contributors
- @Copilot made their first contribution in #3242
- @Navaneethnanda made their first contribution in #3246
Full Changelog: 1.5.377.22...1.5.378.10-preview