Benefits: Difference between revisions

From OPC Labs Knowledge Base
No edit summary
Line 67: Line 67:


== Deployment ==
== Deployment ==
; our installable and all binaries are code-signed (some security environments do not allow any unsigned code; OPCF does not sign).
; The deployment elements are clearly described in the documentation, and the deployment process is straightforward.
: You do not have to do trial-and-error in order to figure out what to deploy and how. Just follow the documentation. In most cases, the deployment consists just of including the QuickOPC assemblied with your program, and installing the license.
 
; The QuickOPC installable and all binaries are code-signed.
: Some environments do not allow any deploying any unsigned code, for security reasons (and it is a good advice to always use code signing anyway). OPC Foundation libraries are not code signed; same applies to some other toolkits.


== Licensing ==
== Licensing ==

Revision as of 07:18, 31 January 2018

Support

  • We respond to every post on our Online Forums (http://www.opclabs.com/forum/index).
  • As opposed to many other vendors, our technical support is public, which means that any possible issues are visible on the Web and you can find them - and an advise on how to resolve them - without having to become a customer first. If your issue involves sensitive or confidential information, we can provide support to you via email.

Costs

>>> No need to pay yearly fees to OPC Foundation in order to stay closed-source.
The double-licensing scheme used by the open-sourced OPC Foundation code for OPC UA requires you to accept the open-source conditions for your own code as well. You can keep your source code closed only if you become an OPC Foundation member ($3,000 yearly minimum). It quickly gets cheaper to purchase the toolkit rather than paying annual OPC Foundation fees.
All QuickOPC commercial licenses are perpetual.
The license you purchase entitles you to use the QuickOPC version(s) for which it is valid perpetually. You do not have to renew it in order to be able to continue using it - we do not use the "subscription" licensing model.

Lifecycle

The product has stable release process.
It is not uncommon to see unexpected, undocumented behavior and content changes between builds of OPC Foundation's software, especially in relation to the installers. QuickOPC only changes between the builds of the same version are for bug fixes. All other modifications only go to a newly released version, and even then the changes are limited and well controlled and documented.

Getting Started

You do not have to create XML configuration files in order to make your program work.
Most other libraries will show you how to write a code, and then tell you it won't actually run, until you also place a specially crafted XML configuration file into your project, *and* also make a change to your app.config file to point to the first XML file. QuickOPC does not require any of that.
Pre-installation of OPC Core Components is not required.
For OPC Classic, QuickOPC does not require you to have the right version OPC Foundation's OPC Core Components installed on the client computer. Other toolkits require that, often resulting in struggle to obtain the version OPC Core Components that works on given computer.
Pre-installation of UA Certificate Generator is not required.
For OPC UA, QuickOPC does not require you to have the right version of OPC Foundation's UA Certificate Generator tool installed on the client computer. With other toolkits, you cannot just write client code, run it and expect it to work - because an OPC UA client needs a certificate to communicate securely, and other SDKs won't generate it for you unless you install the UA Certificate Generator first.

Making It Work

QuickOPC infers the data type in OPC UA writes.
OPC UA is quite picky regarding the data type upon writes, and any difference (such as sending an unsigned integer instead of signed, or simply sending 8 bits instead of 16 or so) results in an error. Other libraries let you on your own, and your code must somehow figure out what the right type is. QuickOPC infers the correct data type, and performs a conversion before the write if necessary, all without you even having to be aware of that.

Concepts

automatically managed connections
automatically reconnections

API Design

Consistency in various aspects across the product.
If you learn something in one part of the product, you are going to find it implemented analogically elsewhere, too. You do not have to re-learn it over and over, and you will find it easy to locate elements that you are looking for. The consistency is achieved mainly with help of various Conventions. We even went so far that we have automated rules and checks for many of these conventions, so that we can be sure they are consistently applied where they should.
The libraries are CLS-compliant
CLS (Common Language Specification) by Microsoft makes it possible to interact seamlessly with code written in all kinds of .NET-based languages, and that means not just C# (or VB.NET). Other OPC libraries are not CLS compliant.
"Made for .NET"
  • method overloads for short code
  • clear exception model
  • equality/operators
  • Low-ceremony API
  • Highly intuitive toolkit
  • .NET and COM interfaces are largely identical
  • API has high expressive power

Integration with Development Tools

  • Help integration
  • Intellisense

Developer Friendliness

QuickOPC adjusts the OPC UA keep-alive timing in debugger.
OPC UA has built-in mechanisms that monitor the client-server connection for liveliness. That is good in production, but it also means that when you put a breakpoint into an OPC UA program, you are likely to encounter a broken connection when you resume the execution - because there was no communication while the program was paused. Other toolkits ignore this issue; QuickOPC detects the debugger, and attempts to adjust the parameters so that the execution can be paused for extended periods of time.
  • debugger: does not show unnecessary private fields

Deployment

The deployment elements are clearly described in the documentation, and the deployment process is straightforward.
You do not have to do trial-and-error in order to figure out what to deploy and how. Just follow the documentation. In most cases, the deployment consists just of including the QuickOPC assemblied with your program, and installing the license.
The QuickOPC installable and all binaries are code-signed.
Some environments do not allow any deploying any unsigned code, for security reasons (and it is a good advice to always use code signing anyway). OPC Foundation libraries are not code signed; same applies to some other toolkits.

Licensing

Simple licensing - no hassles with lost licenses "tied" to a hardware

Goodies

  • formatting feature
  • assemblies have strong names

Uncategorized

  • connectivity explorer
  • Comprehensive Reference
  • Interoperability tested
  • Visual binding


  • Binary/xml serialization
  • Typesafe (strong typing)/generics
  • OPC DA Quality Decoder included
  • Excel integration
No need to create or assign an OPC UA certificate by a manual process.
As opposed to many other tools, QuickOPC will automatically (by default) create an OPC UA certificate for your application and then use it is subsequent runs. You do not have to do anything manually, or in your code, in this respect.
You can specify namespace URIs for OPC UA nodes
... and not namespaces indices. This is important, because the server can can change namespace indices between sessions. Other toolkits largely ignore this, and even give you examples where the node is specified with a hard-coded namespace index. Proper way of doing this is to look up the namespace index that corresponds to namespace URI, but that complicates the user code a lot. QuickOPC does this for you.
any node/item descriptor can specify either a node ID, or browse path, or both
UA complex data
NuGet
Deployment of applications is easy and fully documented.
QuickOPC has only very few requirements on the target system (such as the presence of the .NET Framework), but the dependencies it has are clearly stated in a dedicated section of the User's Guide, and explained.
Installer that actually works.
QuickOPC comes with a production installer that can be used to only install the parts that are necessary in run-time. The installer installs files into a well documented and controllable directory (as opposed to OPC Foundation's installer that installs files to undocumented directories that the user cannot control, but does not install anything into the directory the user enters...).
OPC XML-DA servers are accessible through the same component as OPC DA.
With QuickOPC, the same component and API is used to work with "Classic" OPC DA Servers, as with the OPC XML-DA Servers. Just use the URL in place of server's ProgID, and your code can work with XML-DA. Other libraries require you to write different code for OPC XML-DA versus OPC-DA.


Examples are not just in C#.
The examples that come with QuickOPC cover many different languages, not just C#. Specifically, the second most covered language is VB.NET. Other .NET-based libraries typically come with C# developers in mind only.