What’s New in QuickOPC 5.23

From OPC Labs Knowledge Base
Revision as of 10:53, 28 January 2018 by User (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Previous: What’s New in QuickOPC 5.22

Key changes: Support for Microsoft StreamInsight


  • QuickOPC now allows development for Microsoft StreamInsight. This support is provided through (separately licensed) StreamInsight Option for QuickOPC. The option is physically installed together with QuickOPC.NET and QuickOPC-UA by default. Shortcuts that relate to StreamInsight Option have their separate group under the product folder in the Start menu. To learn more, read the documents and study the examples under the “StreamInsight Option” group.

Components Core

  • Various default “hold” and reconnection periods have been shortened, usually by a factor of approx. 5. This change applies to both QuickOPC Classic and QuickOPC-UA.
  • The component’s parameters (for all EasyXXClient objects) are now consistently reorganized into three groups: SharedParameters (static parameters that are always shared among object instances), InstanceParameters (parameters that can always be set independently for each object instance), and AdaptableParameters (parameters that are normally shared, but can be made specific to an instance if the Isolated property is set to ‘true’).
  • The EasyUAAdaptableParameters class contains two static properties with pre-defined sets of parameters. These properties are called Interoperability and OpcCompliance. By assigning one of the two to the actual parameters of the component, the developer can quickly choose between the settings that provide the best interoperability (the default), or best compliance with OPC standards. Fine-tweaking of the individual settings is still possible.
  • Additional overloads of the DiscoverServers allow you to specify e.g. the application types you are interested in, using the combination of flags from the UAApplicationTypes enumeration. This can useful e.g. if you want to do hierarchical discovery and return also the discovery servers (which are not returned by default).
  • The expanded node ID strings (e.g. in the UANodeId object) can now contain the namespace index (in place of, or in addition to, the namespace URI). Note that specifying the namespace index alone, without the namespace URI, should only be used when absolutely necessary, because the namespace indices are not generally guaranteed to stay the same between sessions, although some servers may behave as such.
  • The UANodeId object now has a string StandardName property. When the node ID represents one of the nodes defined by the OPC-UA standard, the StandardName property reflects the symbolic name of such node (e.g. “TypesFolder”). Conversely, when you set the StandardName property to a symbolic name, the node Id objects change its other properties to represent the node given by the standard name. For nodes that are not defined in the OPC-UA standard have, the StandardName property contains an empty string.
  • The UAClientSessionParameters has a new property, SessionConnectTimeout, which allows to specify how long the connection attempt can take.
  • In order to allow StreamInsight serialization, some property members in generic types that are based on their corresponding non-generic types have been renamed. The changes are described by the following table:
Type Old member name New member name
DAItemValueArguments<T> Value TypedValue
DAItemVtqArguments<T> Vtq TypedVtq
DAVtq<T> Value TypedValue
DAVtqResult<T> Vtq TypedVtq
EasyDAItemChangedEventArgs<T> Vtq TypedVtq
EasyUAMonitoredItemChangedEventsArgs<T> AttributeData TypedAttributeData
UAAttributeData<T> Value TypedValue
UAAttributeDataResult<T> AttributeData TypedAttributeData
  • The UAApplicationType enumeration has been renamed to UAApplicationTypes, and its internal values have changed. The enumeration is now bit-coded, allowing for better capture and detection of various combinations of OPC-UA application types.
  • The CertificateAcceptancePolicy has been moved from UAClientEngineParamaters to UAClientSessionParameters. As the session parameters can be made isolated and configured separately for each instance of the client component, you can now configure the certificate acceptance policy differently for each instance of the component.

Development Models

  • Live Binding: When the Binding Errors dialog is shown in Visual Studio, it now has an additional “Details...” button. This button allows to view all details of the binding errors, using the same exception dialog box as mentioned with UI browsing dialogs.
  • Live Mapping: Some classes have been renamed. The following table summarizes the changes.
Old type name New type name
DAItemMapping DAClientItemMapping
DAItemSource DAClientItemSource
DAMapper DAClientMapper
DAPropertyMapping DAClientPropertyMapping
DAPropertySource DAClientPropertySource
UADataMapping UAClientDataMapping
UADataMappingSource UAClientDataMappingSource
UAMapper UAClientMapper
  • Reactive Programming Model: In all reactive objects, replaced the public Client object (property) by a ClientSelector property. The client selector just holds the parameters the client object should have. The client object itself is not serialized. This approach allows full and easy serialization of reactive objects.

User Interface

  • When an error occurs in dialogs for UI browsing, a small “…” button next to the error box allows detailed viewing of the exception(s). The exception box looks similarly to this:
  • The exception box has following features:
    • One or more exceptions can be displayed.
    • Each exception is displayed together with its inner exceptions that caused it.
    • The Details tab provides technical information about the exception objects.
    • The Copy button stores all available information in textual form into the clipboard, suitable for error reporting by the user.


  • The EasyUAClientConfiguration component now has a LogEntry event, which functions as a “projection” of the static EasyUAClient.LogEntry event. You can easily hook an event handler to this event to process log entries generated by the EasyUAClient component.


  • The Diagnostics and DiagnosticsSummary properties are now also available and filled in on the EasyUAMonitoredItemChangedEventArgs object, providing diagnostics information related to monitored items.