What’s New in QuickOPC 2016.2 (5.41)
Jump to navigation Jump to search
Previous: What’s New in QuickOPC 5.40
- Documentation and help improvements
- Simplified packaging
- Changes in versioning, licensing and installation
- 1 Versioning
- 2 Licensing
- 3 Targeting
- 4 Technology
- 5 Installation and Uninstallation
- 6 Component Improvements
- 7 Component Refactorings
- 8 Packaging
- 9 Application Deployment
- 10 Tools
- 11 Examples
- 12 Documentation and Help
- 13 Removed parts
- 14 Experimental/Preliminary/Unfinished
- New external versioning approach. Versions are now numbered using a calendar year of the release as a major version, and a sequential number (starting from 1) of the release in the calendar year as a minor version number. This version is therefore labeled 2016.2. Internally, the old versioning scheme is preserved, and still shows at places like file/assembly version info. The internal version, together with the build and revision number, is also shown in parenthesis on the first page of the setup wizard.
- The "Component name" in the License Manager is now simply QuickOPC, without a version number. Licenses for version 2016.2 and later need to be installed under this component (it comes up pre-selected, when the License Manager is automatically launched during the installation). Users of earlier versions that are licensed to use version 2016.2 (e.g. when covered by the maintenance) need to install their license under the QuickOPC component name as well.
- Newly issued licenses only cover the versions up to the precise version for which they were issued, plus any versions released during the maintenance period the customer has purchased. No longer are versions with differing hundredths part automatically covered. On the other hand, customers that do not purchase any maintenance are also entitled to use any versions released in the 2 months following the date of purchase. Effectively, "No maintenance" now actually means "2 months maintenance".
- The maximum maintenance period length has been increased to 5 years.
- Added official support for Windows Server 2016 (x64).
- Internal: The product is now built with Visual Studio 2015 Update 3. The "boxed" redistributables have been updated accordingly.
Installation and Uninstallation
Installation - Behavior
- Adobe Reader is no longer required. No PDF files ship with the product (although a User's Guide in PDF is provided as an option for download; it is expected that the main source of the documentation will be the browser-based User's Guide and Reference).
- Flattened the Program Files and Start program group structure by one level. The files and icons now appear in a folder directly under the corresponding "root" (no separate folder for a vendor).
- The Launcher application (see Tools) is now automatically started at the end of the Setup.
- If Delphi (Embarcadero) is detected on the machine, the default express installation choice is changed to include COM (native) development.
- During the Custom install, Setup now shows a User Information wizard page which asks for the user's name and organization.
- During the Custom install, Setup now shows the selected directory in the list of settings on the Ready to Install wizard page.
- During the Custom install, Setup now shows the selected Start Menu folder name in the list of settings on the Ready to Install wizard page.
- The design-time assemblies for Visual Studio are no longer installed for production purposes, or COM development.
- The standalone installer file name has changed to have "-Full" at the end (QuickOPC-2016.2-Full.exe).
- The full standalone installer now has a German localization. When the Setup programs detects that the current user's UI language is German, it automatically switches to this localization.
Installation - Content
- Added a new "Product Folder" Start menu icon. The icon opens the directory where all product files reside, making it easier to locate them.
- A shortcut to the Launcher application (see Tools) is now added to the desktop.
- A shortcut to the Launcher application (see Tools) is now added to the Programs group (Start menu).
- A shortcut to the Launcher application (see Tools) is now added to the Quick Launch (note that Quick Launch isn't visible by default; to enable it, see https://support.microsoft.com/en-us/kb/975784 ).
- The program groups for .NET and COM demo applications now contain shortcuts leading to corresponding parts of the (online) documentation.
- The folders with COM examples using various languages and tools now contain an "About" shortcut leading to a corresponding part of the (online) documentation.
- The OPC UA components are now based on OPC Foundation .NET Stack 1.03.340.
- Using the BrowseDirections property in the UABrowseParameters, you can now specify which directions of the references the BrowseNodes method should return. The available choices are given by the UABrowseDirections enumeration, and are Forward, Inverse, and Both.
- When QuickOPC performs automatic conversion to the target type during OPC UA writing, it now iteratively searches for supertypes when it encounters a custom data type.
- Added more information about the current product into the licensing exceptions.
- Changed default OPC UA stack OperationTimeout from 600000 to 120000 milliseconds.
- Increased default OPC UA stack MaxByteStringLength from 1048576 to 4194304.
- Security policy Basic256Sha256 is now properly rejected as unsupported, because it is not currently supported by the UA stack.
OPC UA Discovery
- Added UAGlobalDiscoveryQuery object, and [I]EasyUAClient.QueryServers methods, for discovering servers using an OPC UA Global Discovery Server (GDS).
- Added enumeration member UAApplicationTypes.All, describing "any type of application" for OPC UA discovery.
- Added ServerName and ServerCapabilities properties to UAApplicationElement.
- Added ApplicationOrServerName read-only property to UAApplicationElement. Returns an application name, if available. Otherwise, it returns a server name.
- The IEasyUAClient.DiscoverApplications method now accepts a discovery query object of (abstract) type UADiscoveryQuery. The two types of queries that were so far available are described by concrete UALocalDiscoveryQuery and UAEndpointDiscoveryQuery classes. Use the UALocalDiscoveryQuery if you want to discover applications local to a concrete host, using an OPC UA Local Discovery Server (LDS) running on that host. Use the UAEndpointDiscoveryQuery if you have an URI of one more discovery endpoints, and want to interrogate them for available applications. Some of the related methods have been refactored (e.g. like extension methods), but there should be no effect on your code. Some related details: Technical note-OPC UA Discovery in QuickOPC.
- Added an overload of ObjectMemberLinkingTarget constructor that accepts a name of member on the target type as an argument, instead of MemberInfo. In Live Mapping, this allows writing shorter code for type-less mapping.
- Added static EasyXXClient.Create() methods (behave the same as parameterless constructors).
- Changed visibility of many types and members (that were not intended for use by QuickOPC users) from 'public' or 'protected' to 'internal' or 'private', in turn making it clearer in the IntelliSense and other tools, and in the documentation.
- Added RecognizeDoubleClickInTree property to the browse controls. Default value is false (behavior change). Determines whether a double click in the tree view part will be recognized.
- Ensured expandable display of all types in LINQPad.
- Added methods _OperationEventArgs.SetState and _OperationResult.SetState (and the same to all interfaces that "inherit" from these). These methods have the same functionality as the setter for the State property. They are intended to allow easier coding with tools such as VB6, where it is was only possible to assign non-object types of values to the State property with late binding.
- Changed sender argument names in event sink interfaces in order to prevent a conflict with Free Pascal type library import.
- Moved all COM interface definitions (_XXXX) to ComTypes sub-namespaces, clearing up the .NET namespaces.
- Moved BrowsePath type and related types from OpcLabs.BaseLib.Browsing to OpcLabs.BaseLib.Navigation namespace.
- Moved UABrowsePath and related types from OpcLabs.EasyOpc.UA.AddressSpace to OpcLabs.EasyOpc.UA.Navigation namespace.
- Moved ComputerServerDialog type from OpcLabs.BaseLib.Forms.Browsing to OpcLabs.BaseLib.Forms.Browsing.Specialized namespace.
- Moved various infrequently used types to better suited namespaces.
- Marked many internal types with 'internal' visibility so that they do not pollute the namespaces publicly and confuse the developer.
- The OpcLabs.EasyOpcClassicInternal assembly has been merged into the OpcLabs.EasyOpcClassic assembly, and consequently removed. The corresponding type libraries have also been merged in the same way.
- The OpcLabs.EasyOpcClassicForms and OpcLabs.EasyOpcUAForms assemblies have been merged into a single assembly, OpcLabs.EasyOpcForms. Consequently, the corresponding type libraries have also been merged in the same way. Note that this means that whenever you use the OpcLabs.EasyOpcForms, you are effectively including support for both the OPC "Classic" and OPC UA specifications.
- Modified assembly and type library descriptions so that they better match their current purpose. For example, the description of the OpcLabs.EasyOpcClassic assembly and type library is now "OPC Labs EasyOPC "Classic" Library".
- The NuGet packages now include LINQPad examples with them. If you add a reference to one of these packages in LINQPad, the examples will automatically show under the "Samples" tab in LINQPad.
- When specifically selected during an installation (with the "Embedded assemblies" install component, or as part of the Full install), additional assemblies (that are normally embedded within QuickOPC assemblies and thus invisible to the developer) are placed alongside the usual QuickOPC assemblies. These assemblies are needed in certain rare situations, e.g. when registering type libraries for the dependent assemblies for COM interop, or under certain hosting environments or in some development tools.
- Added a separate installation package that is for production purposes only. This installer executable has a "-Production" postfix (QuickOPC-2016.2-Production.exe). It is much smaller: At the time of writing this article, the full installer has 123 MB, while the production installer has only 10 MB. It contains only the assemblies and the LMConsole utility (for licensing), and a code to optionally register the assemblies as COM components, and/or produce the type libraries (TLB) for them. It does not install any Start menu icons. The production installer is intended for embedding in other installation programs. It can be automated from the command line, and can also be run silently.
- The production installer can be passed a command line parameter ("/LicenseFile=...") with a path to the license (.bin) file, causing it to automatically install the license as part of the setup process.
- The procedures for using the production installer in an automated manner are described in the documentation.
- The developer will find the link to download the production installer in the Redist directory.
- Added a "Launcher" application. This application is a switchboard that presents the same shortcuts as those available from the Start menu. It serves as a starting point for work with QuickOPC. In addition, for users of Windows 8 and later, it allows them to easily navigate the various QuickOPC shortcuts, as the Start menu in Windows 8 and later is essentially broken for applications that install a hierarchical structure of shortcuts.
- Added a LMConsole utility. This is a command-line equivalent of the License Manager, for scripting/automation (e.g. embedded installations), and folks that dislike GUIs in general. The command-line switches are described in the documentation, and a brief help is also available from the utility itself.
- Added VB.NET and C# examples for UAIndexRangeList (reading a range of values from an array).
- Added C# example UASimpleLogToSql: Logs OPC Unified Architecture data changes into an SQL database, using a subscription. Values of all data types are stored in a single SQL_VARIANT column.
- Added F# example project UADocExamples, and started adding examples to it. Examples taken from this project appear in the reference documentation.
- Added F# example UAConsoleApplication1: The simplest console application. Reads and displays an OPC-UA node value.
- Added examples in LINQPad.
- Added set of examples in Free Pascal (Lazarus). See also First experiences using QuickOPC with Free Pascal (Lazarus).
- Added example in VB 6.0 - UAReadAndDisplayValue: The simplest form for OPC-UA. Reads and displays an OPC-UA node value.
- Added example in VBA under Excel - UAClientCertificateParameters.xls: Shows how to set the application name for the client certificate.
- Added example in VBA under Excel - UADataDialog.xls: Shows how a user can interactively select an OPC-UA endpoint and a data node.
- Added example in Visual C++ - ReadMultipleItemsXml: Reads multiple items from an OPC XML-DA server, and displays the results.
- Improved VBA example in Excel - UASubscribeToMultiple3.xls: Now also shows how to specify an absolute deadband.
- Restored (earlier removed) portable C++ examples (using STLSoft and VOLE libraries). They are provided in a downloadable ZIP file.
Documentation and Help
Documentation and Help - Format
- Following documents have been merged into a single User's Guide and Reference: Concepts, Reference, Getting Started, Examples, User's Guide-StreamInsight Option for QuickOPC, Automated Deployment of QuickOPC License.
- The conceptual and reference documentation is now generated using a new tool.
- The full reference documentation is no longer available in CHM format.
- The User's Guide and Reference is available online, and the User's Guide (without Reference) as a PDF download. Start menu shortcuts link to the corresponding online locations.
- The document "What's New in QuickOPC" (used to be an online PDF) has been replaced by a wiki page.
- The document "QuickOPC Test Tools" (used to be an online PDF) has been replaced by a wiki page.
- The document "QuickOPC Bonus Material" (used to be an online PDF) has been replaced by a wiki page.
- The product name can now be branded in practically all places of the documentation.
- The online and downloadable documentation is now hosted on branded sub-domains of doc-that.com.
- Added a Start menu icon for Knowledge Base.
- Added index keywords to conceptual documentation topic.
- Adding the help library to Visual Studio is now silent - the user no longer needs to confirm the security warning(s) during the installation.
Documentation and Help - Content
- The Visual Studio help now contains the full User's Guide and Reference (and not just the Reference).
- The (previously restricted) document "Automated Deployment of QuickOPC License" is now incorporated into the public User's Guide and Reference
- The types and members from the COM Type Libraries are now documented in the Reference.
- Placed many examples from the reference documentation directly onto suitable locations in the conceptual documentation.
- Placed pieces of reference documentation as sub-topics to the conceptual documentation (in browser help), where appropriate.
- The conceptual documentation is now heavily interlinked into our own reference documentation, and to external reference sources (such as Microsoft), where appropriate. This means that the reader can easily reach the reference information related to the explanations in the conceptual part. In the off-line User's Guide (PDF), the hyperlinks lead to the usual on-line reference source.
- Removed the obsoleted method EasyAEClient.CreateSubscriptionFilter, and related examples.
- The obsoleted DABinder, UABinder and OPCDataNetEngine components are no longer shown as Toolbox items in Visual Studio.
The features listed here are not considered part of the product and are not supported. No conceptual documentation is provided for them.
- Added UANetworkDiscoveryQuery object, and [I]EasyUAClient.DiscoverServersOnNetwork methods, for discovering servers on a multicast subnet using LDS-ME.