What's new in QuickOPC 2021.1
From OPC Labs Knowledge Base
See also: Versions; Previous version: What's new in QuickOPC 2020.3
Internal version number: 5.60
Key changes:
- Initial support for .NET 5.0
Targeting
- .NET 5.0 is now a supported .NET runtime. Note: When you develop for .NET 5, use .NET Standard 2.1 as target framework. Windows-specific technologies (Windows Forms, WPF) and feature that depend on them (Live Binding, Browse Dialogs and Browse Controls, ...) are not yet supported.
- Removed upper revision number restriction on supported .NET Core 2.1 and .NET Core 3.1 frameworks.
- Verified functionality under Raspberry Pi OS.
Packaging
- In .NET Framework, there is now a dependency on various assemblies from Microsoft Platform Extensions. These assemblies are also installed into the Assemblies/net47 folder. QuickOPC NuGet packages properly reference the corresponding Microsoft Platform Extensions NuGet packages (they do not contain the individual referenced assemblies). This increases the number of files you need to deploy. [1]
- Assemblies that are only used internally are no longer embedded inside the QuickOPC assemblies (this mechanism was used under .NET Framework to reduce the number of files that need to be deployed).[1]
Note: When upgrading from earlier QuickOPC versions, you may have to add a reference to Microsoft.Extensions.Configuration.Abstractions and possibly also Microsoft.Extensions.DependencyInjection.Abstractions assembly (both available under Assemblies\net47 under the product installation directory) to your project. Affected are projects where the QuickOPC components have been instantiated by a code generated by Visual Studio designer, e.g. Windows Forms projects where you have placed some QuickOPC components from the VS Toolbox onto the design area. When instantiating new components in this way in QuickOPC 2021.1, the necessary assembly references are added automatically.
Component Improvements
- Added FindByName method to ConfigurationPartCollection. The method allows finding the (plug-in) configuration part using just the unqualified name, and possibly ignoring the case.
OPC Alarms&Events
- It is now possible to specify AEBrowseFilter.All in browse parameters passed to IEasyAEClient.BrowseNodes, which allows you to obtain both sources and areas in one call.
OPC UA Client-Server
- Greatly improved all error messages related to parsing of OPC UA node IDs and qualified names.
- The new OPC-UA Optimizer plugin improves performance of certain OPC UA operations. It is enabled by default.
- Calls to OPC UA Browse, Read and Write and GetProperty operations that contain identical (except for the State property) arguments are now merged to perform just a operation (request merging). This behavior can be turned off in the OPC-UA Optimizer plugin parameters.
OPC UA PubSub
- Added EasyUASubscriberConfiguration component. Similarly to other such components, allows the static (shared) parameters of the subscriber be configured through a non-visual component in Visual Studio designer, or from COM tools.
Services
- Added RemoveInstanceCertificate method to IEasyUAClientApplication service.
Component Refactorings
OPC Classic
- Boxing of client-side OPC proxies/stubs is now also available in .NET Core (on Windows), not just in .NET Framework. This means that if your .NET Core application is using OPC Classic, it does not require "OPC Core Components" as a prerequisite.
- Further aligned the details of behavior between the native and NET API implementations of OPC DA client, especially in the browsing methods.
OPC Alarms&Events
- Added overloads with more combinations of parameters to IEasyAEClientExtension.SubscribeEvents, and toAEEventsSubscriptionArguments and AESubscriptionFilter constructors.
OPC UA
- Certificate obtained from GDS is now also stored into the trusted peers certificate store.
- Improved exceptions from the global discovery client by wrapping them and adding a text explaining which operation has failed, and its main parameters.
User Interface
Windows Forms Dialogs
- Added ClientSelector property to DAItemDialog and DAPropertyDialog classes. This property allows the developer to set the parameters of the EasyDAClient object used to perform the browsing operations of the dialog.
Configuration and Instrumentation
- High-level Built-in Component Configuration: You can set parameters of QuickOPC components externally (using e.g. environment variables, or appsettings.json files), and your software does not have to be prepared upfront.
- High-level programmatic component configuration: You can instantiate the components while passing them a configuration to use.
- Configuration of diagnostics switches and trace sources is now also possible using the XML ".config" file in .NET Core.
- Migrated most event tracing to the new event source mechanism, allowing finer control of the tracing and more distinguished contents in the traces.
Tools and Online Services
- Made the OpcCmd utility and UADemoPublisher downloads available also for .NET Core 3.1.
- Made the OpcCmd utility and UADemoPublisher downloads available also for .NET 5.0.
OpcCmd Utility
- On first start in interactive mode, the OpcCmd Utility runs an automated application setup. The user is given a choice to select from standard application configurations, such as "OPC Compliance", "Interoperability", or "Testing - Insecure". The default choice is "OPC Compliance".
- Added !application setup command, which either restarts the interactive application setup (choice of standard configuration), or it can be given a name of a standard configuration non-interactively.
- Added commands that allow operations on the (read-only) PubSub configuration.
- Added commands that allow operations on the (read-only) PubSub security key service.
- Added aeClient command, providing access to OPC A&E functionality. Available subcommands are browseNodes, browseServers, getConditionState, subscribeEvents, queryEventCategories and querySourceConditions.
- Added ability to obtain browse results as a tree (with --tree|-t command option).
- Made OpcCmd utility available as ClickOnce application (in addition to existing formats).
- Structured values are, by default, outputted with a formatted dump of their properties.
- Sequences are now outputted as formatted, colorized tables.
- Added commands and options to allow influencing how values, sequences and forests are displayed.
- Improved usage examples in the utility.
- Added ua nodeId and ua qualifiedName commands, with ability to look up standard names, and print out tables of standard OPC UA node IDs and qualified names.
- Added daClient browseAccessPaths command.
- Added commands that allow to interrogate the PubSub configuration model in the server.
- Added ... getService licenseInfoProvider command, with licenseInfo? subcommand, for displaying license information.
- Made OpcCmd option values case insensitive by default, and allowed the case sensitivity be controlled by using the property Options.CaseSensitive.
- Allowed enumerated names (in arguments and options) be abbreviated to an unambiguous prefix, shortening the command if the user prefers that. Whether abbreviations are allowed can be controlled by using the property Options.Abbreviations.
- Added command (events?, shortened: ev?) to show the events collected during the last command.
- Added command (result?, shortened: r?) to show the result of the last command.
- Added possibility to browse sequences element by element, controlled by the keyboard.
- Added commands (under !diagnostics switches) to view the trace switches and obtain and modify their values (names?, infos?, getInfo, getValue, setValue subcommands).
- Added commands to display (!diagnostics trace entries?) and clear (!diagnostics trace clear) the trace entries collected by the program.
- Added standard subcommand to display trace entries collection during the last command (traceEntries?, shortened: te?).
- Added command to replay the collected trace to a selected listener (!diagnostics trace entries? replayTo).
- Added commands (under !diagnostics sources) to view the trace sources and obtain and modify their associated values (names?, infos?, getInfo, getSwitchValue, setSwitchValue subcommands).
- In interactive mode, the console window is now automatically resized to a larger size. Added options to control the minimum window height and width.
- More colorized output.
- Added ability to configure the component parameters for OpcCmd externally, using environment variables, JSON files, INI files or XML files.
- Added option to view values as a tree of properties.
- Added option to view values as a nested table of properties.
- Added commands aeClient manage, daClient manage, uaClient manage and uaSubscriber manage, allowing access (viewing and/or modifications) of static (shared) component parameters.
- Added commands to manage plugin configurations: plugin configuration parts? and plugin configuration part.
- Added get and set commands for easier work with properties of target objects.
Connectivity Explorer
- Added "Remove Instance Certificate" command (on the "OPC Unified Architecture" connectivity node).
- ↑ 1.0 1.1 Until this version, we have attempted to keep the number of product assemblies, and referenced assemblies that are not part of the shared framework, to minimum. We tried hard, but it was not really feasible to keep following this principle, if we wanted to move the product forward. We understand that deploying a larger number of assemblies can be a nuisance for some users, but believe us, we have not taken the decision lightly.