Benefits: Difference between revisions

From OPC Labs Knowledge Base
No edit summary
Line 12: Line 12:
; All QuickOPC commercial licenses are perpetual.
; 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.
: 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 ==


== API Design ==
== API Design ==
Line 17: Line 37:
: 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.
: 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"
; "Made for .NET"
 
* method overloads for short code
* method overloads for short code
* clear exception model
* clear exception model
* equality/operators
* equality/operators
* Low-ceremony API
* Highly intuitive toolkit
* .NET and COM interfaces are largely identical
* API has high expressive power
== Integration with Development Tools ==


== Developer Friendliness ==
== 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
* debugger: does not show unnecessary private fields
* Help integration
* Help integration
Line 32: Line 72:
* formatting feature
* formatting feature
* assemblies have strong names
* assemblies have strong names
* our installable and all bineries are code-signed (some security environments do not allow any unsigned code; OPCF does not sign).
* our installable and all binaries are code-signed (some security environments do not allow any unsigned code; OPCF does not sign).






== Notices ==
== Uncategorized ==


; QuickOPC infers the data type in OPC UA writes.
; 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.
: 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.
; 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.




Line 57: Line 94:


* Typesafe (strong typing)/generics
* Typesafe (strong typing)/generics
* Low-ceremony API
* Highly intuitive toolkit
* .NET and COM interfaces are largely identical
* API has high expressive power


* OPC DA Quality Decoder included
* OPC DA Quality Decoder included
Line 71: Line 100:


* Simple licensing - no hassles with lost licenses "tied" to a hardware
* Simple licensing - no hassles with lost licenses "tied" to a hardware
; 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.


; No need to create or assign an OPC UA certificate by a manual process.
; No need to create or assign an OPC UA certificate by a manual process.
Line 98: Line 118:
; Installer that actually works.
; 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...).
: 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...).
; 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.


* see/link with http://www.opclabs.com/products/quickopc/features
* see/link with http://www.opclabs.com/products/quickopc/features

Revision as of 17:38, 30 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

API Design

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

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
  • Help integration
  • Intellisense
  • slow down UA keep-alive mechanisms when debugging


Goodies

  • formatting feature
  • assemblies have strong names
  • our installable and all binaries are code-signed (some security environments do not allow any unsigned code; OPCF does not sign).


Uncategorized

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.


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


  • Binary/xml serialization
  • Typesafe (strong typing)/generics
  • OPC DA Quality Decoder included
  • Excel integration
  • Simple licensing - no hassles with lost licenses "tied" to a hardware
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.
  • Consistence -> Conventions (link to)
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.