Bewährte Methoden

Die Lizenzfunktionen sollen in geeigneten Stellen im Code verwendet werden. Folgende Kriterien sollten hierbei beachtet werden:

  • Überprüfungen sollten regelmäßig stattfinden aber nicht in zu kurzen Abständen.
  • Die Lizenz sollte an einer zentralen Stelle geprüft werden. Es soll verhindert werden das in jedem Funktionsaufruf die Lizenz geprüft wird. Dies wäre technisch zwar möglich, würde jedoch die Performance beeinträchtigen.
  • "sltCheckLicense", "sltGetUnitCounter" und "sltGetFeatureMap" werden während des Quality Gates (QG) durch entsprechende Funktionen in CONTROL ersetzt um zusätzliche Sicherheit gewährleisten zu können. Dies bedeutet aber auch, dass diese Funktionen ohne Quality Gate Check nicht verwendet werden können. Wenn das Add-on ohne QG getestet werden muss, ist es notwendig diese Funktionen für den Test zu ersetzen. C++ und C# Funktionen sind derzeit nicht davon betroffen.
  • Einer der Quality Gate Checks, ist ein LicenseCheck. Dieser überprüft, ob bei Verwendung von WinCC OA Panels oder Skripten mindestens einmal die "sltCheckLicense" Funktion aufgerufen wird. Ist dies nicht de Fall, wird das Add-on nicht freigegeben um den Provider zu schützen.

Do

  • Die Gültigkeit der Lizenz sollte für den User visuell ersichtlich dargestellt werden. Eine reine Ausgabe im Log ist nicht zielführend.
  • Eine visuelle Darstellung der Gültigkeit in Konfigurationsoberflächen hilft dem User rechtzeitig zu erkennen, dass seine Lizenz ungültig ist.
  • Eine visuelle Darstellung der Gültigkeit an den grafischen Objekten hilft ebenfalls dem User eine gute Möglichkeit zu geben schnell eine ungültige Lizenz zu erkennen.

Don't

  • Ein Abspeichern der Lizenzfunktionsergebnisse in einer globalen Variable, um nicht jedesmal die Lizenzfunkion ausführen zu müssen, ist nicht zielführend da die globale Variable während der Laufzeit von außen manipuliert werden kann.
string itemNr = "YOUR_PRODUCT_CODE";

if(globalExists("AddOnCheckLicense"))
{
  return AddOnCheckLicense;
}
else  
{
  addGlobal("AddOnCheckLicense", BOOL_VAR);
  AddOnCheckLicense = sltCheckLicense(itemNr);
  return AddOnCheckLicense;
}
  • Eine reine Ausgabe der Lizenzfunktionsergebnisse im Log ist nicht zielführend.

results matching ""

    No results matching ""