What's new in QuickOPC 2017.2: Difference between revisions

From OPC Labs Knowledge Base
 
(8 intermediate revisions by the same user not shown)
Line 19: Line 19:
* Microsoft Code Contracts are no longer used. The actual method precondition checks on public surface APIs remain in place.
* Microsoft Code Contracts are no longer used. The actual method precondition checks on public surface APIs remain in place.
* The product is now developed mainly with Visual Studio 2017.
* The product is now developed mainly with Visual Studio 2017.
== Installation and Uninstallation ==
* The description of the setup component "Development Libraries (COM)" has been changed to "Type Libraries (COM)", and its name (for programmatic purposes in deployments that use the production installer) has been changed from 'devlibs' to 'typelibs'.


== Component Improvements ==
== Component Improvements ==
Line 27: Line 30:
* OPC UA security policy '''Basic256Sha256''' is now supported.
* OPC UA security policy '''Basic256Sha256''' is now supported.
* Improved type inference logic with OPC UA writes and {{Style=Identifier|ValueRank}}-s of {{Style=Identifier|ScalarOrOneDimension}}, {{Style=Identifier|Any}}, or {{Style=Identifier|OneOrMoreDimensions}}. The component now uses the value to be written as a hint for the resulting type rank.
* Improved type inference logic with OPC UA writes and {{Style=Identifier|ValueRank}}-s of {{Style=Identifier|ScalarOrOneDimension}}, {{Style=Identifier|Any}}, or {{Style=Identifier|OneOrMoreDimensions}}. The component now uses the value to be written as a hint for the resulting type rank.
* New static property {{Style=Identifier|UABrowseParameters}}.{{Style=Identifier|AllForwardReferences}}, and corresponding "AllForwardReferences" value for {{Style=Identifier|UABrowseParameters}}.{{Style=Identifier|StandardName}}, allows the developer to easily obtain browse parameters for browsing all forward references in the address space.
* New parameter: {{Style=Identifier|UAClientEngineParameters}}.{{Style=Identifier|DebuggerDetectionOverride}}. Allows to enforce the behavior as if the debugger was or was not attached. Useful for troubleshooting scenarios having to do with OPC UA session keep-alive or lifetime mechanisms.
* New parameter: {{Style=Identifier|UAClientEngineParameters}}.{{Style=Identifier|DebuggerDetectionOverride}}. Allows to enforce the behavior as if the debugger was or was not attached. Useful for troubleshooting scenarios having to do with OPC UA session keep-alive or lifetime mechanisms.
* The {{Style=Identifier|UAMonitoringParameters}} class now has additional static properties {{Style=Identifier|Slow}}, {{Style=Identifier|Fast}}, {{Style=Identifier|VerySlow}} and {{Style=Identifier|VeryFast}}, allowing the developer to quickly obtain pre-defined parameter sets. Also Live Binding users can choose these easily using the drop-down selection next to Standard Name property.
* The {{Style=Identifier|UAMonitoringParameters}} class now has additional static properties {{Style=Identifier|Slow}}, {{Style=Identifier|Fast}}, {{Style=Identifier|VerySlow}} and {{Style=Identifier|VeryFast}}, allowing the developer to quickly obtain pre-defined parameter sets. Also Live Binding users can choose these easily using the drop-down selection next to Standard Name property.
Line 61: Line 65:
== Connectivity Model ==
== Connectivity Model ==
Changes described here affect Live Binding, Connectivity Explorer, and Excel RTD Server.
Changes described here affect Live Binding, Connectivity Explorer, and Excel RTD Server.
* It is now possible to use client-side array element extraction on OPC-DA Item Point, OPC-DA Property Point, and OPC-UA Attribute Point. For array values, this allows you to work with just one element at the given position. With each point, you can specify an index or a list of indices in the {{Style=Identifier|ExtractArrayElementIndexes}} property, and for reads and subscriptions, QuickOPC will extract the specified element. For writes, QuickOPC will first read the whole array, then modify the element, and then write the whole array back. This read/modify/write algorithm is potentially dangerous if the values are changing in the server or from other clients, and can be disabled using the {{Style=Identifier|AllowReadModifyWrite}} property (defaults to true). When this is disabled and client-side element extraction is specified, the point becomes read-only. The client-side array element extraction is mainly useful with OPC Data Access "Classic" servers, because OPC-DA has no corresponding feature in the specification. In OPC Unified Architecture, on the other hand, it is possible to specify Index Range List with each each read, subscribe, or write. If supported, using the Index Range List in OPC UA is recommended over the client-side array element extraction. But not all OPC UA servers support this feature, and in such case you may want to extract the array elements on the client side.
* It is now possible to use client-side array element extraction on OPC-DA Item Point, OPC-DA Property Point, and OPC-UA Attribute Point. For array values, this allows you to work with just one element at the given position. With each point, you can specify an index or a list of indices in the {{Style=Identifier|ExtractArrayElementIndexes}} property, and for reads and subscriptions, QuickOPC will extract the specified element. For writes, QuickOPC will first read the whole array, then modify the element, and then write the whole array back. This read/modify/write algorithm is potentially dangerous if the values are changing in the server or from other clients, and can be disabled using the {{Style=Identifier|AllowReadModifyWrite}} property (defaults to true). When this is disabled and client-side element extraction is specified, the point becomes read-only. The client-side array element extraction is mainly useful with OPC Data Access "Classic" servers, because OPC-DA has no corresponding feature in the specification. In OPC Unified Architecture, on the other hand, it is possible to specify Index Range List with each read, subscribe, or write. If supported by the OPC server, using the Index Range List in OPC UA is recommended over the client-side array element extraction. But not all OPC UA servers support this feature, and in such case you may want to extract the array elements on the client side.


== User Interface ==
== User Interface ==
* For adding manual nodes in browse controls, the combination of a drop-down list with node typed, and a menu item for adding a node of the selected type, has been replaced by a) a split button with the available addable node types in the toolbar, and b) individual command(s) in the node context menu to add the node of the specific type; the commands all start with "Add: ", followed by the node type.
* In browsing dialogs and controls, the Node Information box for OPC UA endpoints now contains information about the user identity provided (the types of tokens present). The text is displayed in bold, if the user identity is not "Anonymous" only.
* In browsing dialogs and controls, the Node Information box for OPC UA endpoints now contains information about the user identity provided (the types of tokens present). The text is displayed in bold, if the user identity is not "Anonymous" only.
* The OPC-UA Server Instance Certificate Not Validated notification now contain a "View certificate" button, allowing the user to display a dialog box that contains the properties of a certificate and its associated certificate chain.
* The OPC-UA Server Instance Certificate Not Validated notification now contain a "View certificate" button, allowing the user to display a dialog box that contains the properties of a certificate and its associated certificate chain.
* In OPC-UA Server Instance Certificate Not Validated notification, a descriptive text (when available) is now displayed for the validation error, and not just its symbolic error code.
* In OPC-UA Server Instance Certificate Not Validated notification, a descriptive text (when available) is now displayed for the validation error, and not just its symbolic error code.
* Visual improvements to OPC-UA Server Instance Certificate Not Validated notification.
* Visual improvements to OPC-UA Server Instance Certificate Not Validated notification.
* The OPC-UA Endpoint Domain Mismatch notification now contain a "View certificate" button, allowing the user to display a dialog box that contains the properties of a certificate and its associated certificate chain.
* The OPC-UA Endpoint Domain Mismatch notification now contains a "View certificate" button, allowing the user to display a dialog box that contains the properties of a certificate and its associated certificate chain.
* Visual improvements to OPC-UA Endpoint Domain Mismatch notification.
* Visual improvements to OPC-UA Endpoint Domain Mismatch notification.


Line 75: Line 80:
* When the directory-based certificate store is used, the OPC UA engine now logs the resolved directory path of the application certificate.
* When the directory-based certificate store is used, the OPC UA engine now logs the resolved directory path of the application certificate.
* Added log entries related to server HTTPS certificate validation failures, and acceptance by a fallback method.
* Added log entries related to server HTTPS certificate validation failures, and acceptance by a fallback method.
== Development Productivity ==
* All relevant publicly accessible properties now consistently have [DisplayName] attribute applied on them, making it friendlier to work with in property grids, such as in Visual Studio designer, Live Binding user interface, and Connectivity Explorer.
* In most property grids that have the Help (description) displayed at the bottom, a programmatic name of the property or event is now shown to the left of the description, in angular brackets. This allows the developer to correlate the property or event (with its display name and description) with the actual member name that appears in the code.


== Tools ==
== Tools ==
Line 89: Line 98:
* The main window's location, size and opacity are now persisted in user settings, and restored when the application is started anew.
* The main window's location, size and opacity are now persisted in user settings, and restored when the application is started anew.
* Added a "Reset Window" command to the system menu: Resets window size, state, and opacity back to defaults.
* Added a "Reset Window" command to the system menu: Resets window size, state, and opacity back to defaults.
* New "Add Live Data Row" default menu item in the context menu on point node in the Point Editor.
* The event records are now internally captured right from the program start. When the user makes the Event Records window visible, events captured earlier are already present in the window.
* The event records are now internally captured right from the program start. When the user makes the Event Records window visible, events captured earlier are already present in the window.
* Filtering events in Event Records windows made more user friendly by displaying just the event names in the check list, and not their type signatures.
* Filtering events in Event Records windows made more user friendly by displaying just the event names in the check list, and not their type signatures.

Latest revision as of 17:07, 23 December 2017

See also: Versions; Previous version: What's new in QuickOPC 2017.1

Internal version number: 5.51

Key changes:

  • Support for security policy Basic256Sha256
  • Support for Visual Studio 2017
  • Improved HTTPS support


Targeting

  • Operating systems: Microsoft Windows Server 2008 R2 (x64) with SP1 is no longer supported.
  • Operating systems: Microsoft Windows 10 (x86 or x64) November Update is no longer supported.
  • Development tools: Visual Studio 2017 added to the list of primary development tools.

Technology

  • Microsoft Code Contracts are no longer used. The actual method precondition checks on public surface APIs remain in place.
  • The product is now developed mainly with Visual Studio 2017.

Installation and Uninstallation

  • The description of the setup component "Development Libraries (COM)" has been changed to "Type Libraries (COM)", and its name (for programmatic purposes in deployments that use the production installer) has been changed from 'devlibs' to 'typelibs'.

Component Improvements

OPC Classic

  • The DAGroupParameters class now has additional static properties Normal, Slow, Fast, VerySlow and VeryFast, allowing the developer to quickly obtain pre-defined parameter sets. Also Live Binding users can choose these easily using the drop-down selection next to Standard Name property.

OPC Unified Architecture

  • The OPC UA components are now based on OPC Foundation .NET Stack 1.03.342.
  • OPC UA security policy Basic256Sha256 is now supported.
  • Improved type inference logic with OPC UA writes and ValueRank-s of ScalarOrOneDimension, Any, or OneOrMoreDimensions. The component now uses the value to be written as a hint for the resulting type rank.
  • New static property UABrowseParameters.AllForwardReferences, and corresponding "AllForwardReferences" value for UABrowseParameters.StandardName, allows the developer to easily obtain browse parameters for browsing all forward references in the address space.
  • New parameter: UAClientEngineParameters.DebuggerDetectionOverride. Allows to enforce the behavior as if the debugger was or was not attached. Useful for troubleshooting scenarios having to do with OPC UA session keep-alive or lifetime mechanisms.
  • The UAMonitoringParameters class now has additional static properties Slow, Fast, VerySlow and VeryFast, allowing the developer to quickly obtain pre-defined parameter sets. Also Live Binding users can choose these easily using the drop-down selection next to Standard Name property.
  • Added static TestingInsecure property to EasyUASharedParameters and several other parameter classes. This property returns a set of parameters that is insecure, but intended to provide a working connection in widest set of cases. Specifically, beware that all certificates are silently accepted with these settings.
  • Added a TypeConverter to UAIndexRangeList, with ability to convert from strings (either with or without surrounding square brackets). This allow e.g. the users of Live Binding or Connection Explorer to simply type in the index ranges, instead of having to go through the collection editor.
  • Improved error checking when parsing OPC UA index range lists (disallow negative indices).
  • Improved error messages when parsing OPC UA index range lists. The messages now consistently contain specific information about the offending input.
  • Improved OPC UA interoperability.

Address Space and Navigation

  • It is now possible (although not recommended) to use namespace indices with OPC UA qualified names (the UAQualifiedName class), similarly as with node IDs.
  • Added a new overload of static Create method, and a new static CreateInverse method, to UABrowsePathElement class. These methods take just the reference type ID and the target name as input, allowing to easily create common browse path elements.
  • Added several static methods to the UABrowsePathElement class for creation of browse path elements for all standard *concrete* references, taking just the target name as input. For example, the UABrowsePathElement.HasProperty creates a browse path element for following a specific HasProperty reference in a forward direction.
  • Added UANodeId.ToBrowsePath method; creates an empty browse path with this node as its starting node. This is basically just a convenience syntax that can be used in place of UABrowsePath constructor with the given node as the single argument.
  • Added class UABrowseNames. This class declares declares static properties for standard browse names in the Model Design.
  • All static classes that define standard nodes (and browse names), such as UAObjectIds, have been moved from OpcLabs.EasyOpc.UA.AddressSpace namespace to a new OpcLabs.EasyOpc.UA.AddressSpace.Standard namespace.

Certificate Handling

  • The OPC UA client engine now provides its own validation for HTTPS server certificates, including optional user notifications (accept/reject) in case the validation fails.
  • A new HttpsCertificateAcceptancePolicy property has been added to UAClientEngineParameters. When set to non-null, the HTTPS server certificates will be validated using the given policy. When null, the same policy will be used for HTTPS server certificate validation as is used for the server instance certificate validation (i.e. the policy given by UAClientEngineParameters.CertificateAcceptancePolicy.
  • A new CertificateAcceptancePolicy property has been added to UAEndpointDescriptor. When set to non-null, it allows the developer to override the certificate acceptance policy just for the specified endpoint.
  • A new TrustedIssuersCertificateStore property has been added to UACertificateAcceptancePolicy. This allows the developer to specify the store containing any trusted issuer certificates.
  • A new RejectedCertificateStore property has been added to UACertificateAcceptancePolicy. This allows the developer to specify the store containing rejected certificates.
  • Using the new UAClientEngineParameters.UserInteractionParameters.AcceptNotificationTimeout property, the developer can specify the time the user is given to respond to notifications requiring acceptance of a condition (in milliseconds).
  • When more OPC UA sessions display a notification asking the user to accept or reject a certificate, the requests are now presented in parallel.
  • OPC UA endpoint domain check warning, and a certificate check validation warning, if they happen on the same session, are now presented in parallel.

Component Refactorings

  • Parameters that relate to OPC UA application and its behavior has been moved from UAClientEngineParameters to a new type, UAClientApplicationParameters, and the UAClientEngineParameters now has an ApplicationParameters property containing these parameters. This allows for more logical organization of the parameters. The affected properties are AllowClientCertificatePrompt, ApplicationCertificateStore, ApplicationCertificateSubject (obsolete), ApplicationName, ApplicationUriString, and ProductUriString.
  • The TrustedPeersCertificateStore property has been moved to CertificateAcceptancePolicy.
  • The CertificateAcceptancePolicy property has been moved from UAClientSessionParameters to UAClientEngineParameters.
  • The UAClientEngineParameters.AllowCertificatePrompt property has been renamed to AllowClientCertificatePrompt.
  • Finally removed the obsoleted EasyUAClient.MonitoredItemChanged event, and everything that related to it.

Connectivity Model

Changes described here affect Live Binding, Connectivity Explorer, and Excel RTD Server.

  • It is now possible to use client-side array element extraction on OPC-DA Item Point, OPC-DA Property Point, and OPC-UA Attribute Point. For array values, this allows you to work with just one element at the given position. With each point, you can specify an index or a list of indices in the ExtractArrayElementIndexes property, and for reads and subscriptions, QuickOPC will extract the specified element. For writes, QuickOPC will first read the whole array, then modify the element, and then write the whole array back. This read/modify/write algorithm is potentially dangerous if the values are changing in the server or from other clients, and can be disabled using the AllowReadModifyWrite property (defaults to true). When this is disabled and client-side element extraction is specified, the point becomes read-only. The client-side array element extraction is mainly useful with OPC Data Access "Classic" servers, because OPC-DA has no corresponding feature in the specification. In OPC Unified Architecture, on the other hand, it is possible to specify Index Range List with each read, subscribe, or write. If supported by the OPC server, using the Index Range List in OPC UA is recommended over the client-side array element extraction. But not all OPC UA servers support this feature, and in such case you may want to extract the array elements on the client side.

User Interface

  • For adding manual nodes in browse controls, the combination of a drop-down list with node typed, and a menu item for adding a node of the selected type, has been replaced by a) a split button with the available addable node types in the toolbar, and b) individual command(s) in the node context menu to add the node of the specific type; the commands all start with "Add: ", followed by the node type.
  • In browsing dialogs and controls, the Node Information box for OPC UA endpoints now contains information about the user identity provided (the types of tokens present). The text is displayed in bold, if the user identity is not "Anonymous" only.
  • The OPC-UA Server Instance Certificate Not Validated notification now contain a "View certificate" button, allowing the user to display a dialog box that contains the properties of a certificate and its associated certificate chain.
  • In OPC-UA Server Instance Certificate Not Validated notification, a descriptive text (when available) is now displayed for the validation error, and not just its symbolic error code.
  • Visual improvements to OPC-UA Server Instance Certificate Not Validated notification.
  • The OPC-UA Endpoint Domain Mismatch notification now contains a "View certificate" button, allowing the user to display a dialog box that contains the properties of a certificate and its associated certificate chain.
  • Visual improvements to OPC-UA Endpoint Domain Mismatch notification.

Instrumentation

  • New log entry: An information log entry added when OPC UA subscription has been successfully created and checked. The subscription's ID, revised publishing interval, and keep-alive and lifetime counts are recorded. (Some event IDs have been renumbered in relation to this).
  • When the directory-based certificate store is used, the OPC UA engine now logs the resolved directory path of the application certificate.
  • Added log entries related to server HTTPS certificate validation failures, and acceptance by a fallback method.

Development Productivity

  • All relevant publicly accessible properties now consistently have [DisplayName] attribute applied on them, making it friendlier to work with in property grids, such as in Visual Studio designer, Live Binding user interface, and Connectivity Explorer.
  • In most property grids that have the Help (description) displayed at the bottom, a programmatic name of the property or event is now shown to the left of the description, in angular brackets. This allows the developer to correlate the property or event (with its display name and description) with the actual member name that appears in the code.

Tools

Connectivity Explorer

  • Added File -> Restart command (restarts the application).
  • Many more automatically managed columns are now created with each point type. The new columns are hidden by default, but can be turned on (made visible) by simply changing their Visible property to 'true', without having them to be manually created and configured. For example, "Server Timestamp (UTC)" and "Source Timestamp (UTC) columns are now automatically created.
  • The user can now add "Index Range List (OPC-UA)" nodes in the Point Editor. This makes it easier to specify points with index ranges. It is no longer necessary to switch into the Properties tab, click "..." in the "Index Range List" row, and then "Add" each index range and enter its index values. Instead, simply "Add" the "Index Range List (OPC-UA)" under any OPC UA node, and then type in the required index range(s), e.g. "5:10".
  • The Parameters Editor window now has a Reset button, allowing the user to revert the parameters for the selected point type to their default values quickly and all at once.
  • For OPC-DA Item Points and OPC-UA Attribute Points, the user can now use the Standard Name drop-down in the Properties tab of the Parameters Editor window to select from additional Fast, Slow, VeryFast or VerySlow pre-defined settings.
  • Columns in Live Data view now have Visible property, allowing them to be hidden.
  • The user can now use a horizontal splitter to change the height of the node information pane height in the Point Editor - Browse. Also, some screen estate has been gained by omitting the node information label.
  • The properties of Live Data view columns has been split into several categories (e.g. "Appearance" and "Data"), making it easier to find and modify the information needed.
  • The main window's location, size and opacity are now persisted in user settings, and restored when the application is started anew.
  • Added a "Reset Window" command to the system menu: Resets window size, state, and opacity back to defaults.
  • New "Add Live Data Row" default menu item in the context menu on point node in the Point Editor.
  • The event records are now internally captured right from the program start. When the user makes the Event Records window visible, events captured earlier are already present in the window.
  • Filtering events in Event Records windows made more user friendly by displaying just the event names in the check list, and not their type signatures.

Documentation

  • Separated reference documentation for COM Components from the main "User's Guide and Reference".
  • The reference documentation for COM Components is now available only online (is not contained in the Visual Studio integrated help).

Removed Parts

  • Code contracts assemblies have been removed.