OmniSeller:PlugIn Entwicklung: Unterschied zwischen den Versionen
Erscheinungsbild
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Admin (Diskussion | Beiträge) Korrekturlauf: Rechtschreibung, Grammatik und Stil ueberarbeitet |
||
| Zeile 79: | Zeile 79: | ||
<h3>1. Projekt einrichten</h3> | <h3>1. Projekt einrichten</h3> | ||
<ul> | <ul> | ||
<li> | <li>Erstellen Sie ein neues <b>.NET Standard 2.0</b> Class Library-Projekt in Visual Studio</li> | ||
<li> | <li>Fügen Sie die folgenden Pakete über das HTK NuGet Repository hinzu:</li> | ||
<pre> | <pre> | ||
OmniSeller.Common | OmniSeller.Common | ||
| Zeile 87: | Zeile 87: | ||
<h3>2. PlugIn-Logik implementieren</h3> | <h3>2. PlugIn-Logik implementieren</h3> | ||
<ul> | <ul> | ||
<li> | <li>Implementieren Sie die Schnittstelle <code>IEntryPointPlugin</code>.</li> | ||
<li> | <li>Definieren Sie die unterstützten <code>EntryPoints</code> und <code>ShopTypes</code>.</li> | ||
<li> | <li>Implementieren Sie die Logik in der Methode <code>Call</code>.</li> | ||
</ul> | </ul> | ||
<h3>3. PlugIn erstellen und veröffentlichen</h3> | <h3>3. PlugIn erstellen und veröffentlichen</h3> | ||
<ul> | <ul> | ||
<li> | <li>Kompilieren Sie das Projekt.</li> | ||
<li>Die resultierende <code>.dll</code>-Datei (zusammen mit ihren Abhängigkeiten) wird in das OmniSeller PlugIn-Verzeichnis kopiert:</li> | <li>Die resultierende <code>.dll</code>-Datei (zusammen mit ihren Abhängigkeiten) wird in das OmniSeller PlugIn-Verzeichnis kopiert:</li> | ||
<pre>C:\OmniVersum\Apps\OmniSellerService2\PlugIns</pre></ul> | <pre>C:\OmniVersum\Apps\OmniSellerService2\PlugIns</pre></ul> | ||
<h3>4. PlugIn testen</h3> | <h3>4. PlugIn testen</h3> | ||
<ul> | <ul> | ||
<li> | <li>Starten Sie den OmniSeller DataService und beobachten Sie die Logs.</li> | ||
<li>Das PlugIn wird automatisch geladen und ausgeführt, wenn der entsprechende <code>EntryPoint</code> erreicht wird.</li> | <li>Das PlugIn wird automatisch geladen und ausgeführt, wenn der entsprechende <code>EntryPoint</code> erreicht wird.</li> | ||
</ul> | </ul> | ||
| Zeile 129: | Zeile 129: | ||
<h2>Best Practices für PlugIns</h2> | <h2>Best Practices für PlugIns</h2> | ||
<ul> | <ul> | ||
<li><b> | <li><b>Vermeiden Sie lange Blockaden:</b> | ||
<ul> | <ul> | ||
<li>Die Methode <code>Call</code> sollte möglichst schnell ausgeführt werden, um Verzögerungen im DataService zu vermeiden.</li> | <li>Die Methode <code>Call</code> sollte möglichst schnell ausgeführt werden, um Verzögerungen im DataService zu vermeiden.</li> | ||
| Zeile 135: | Zeile 135: | ||
<li><b>Fehlerbehandlung:</b> | <li><b>Fehlerbehandlung:</b> | ||
<ul> | <ul> | ||
<li> | <li>Verwenden Sie <code>try-catch</code>, um Laufzeitfehler zu verhindern, die den gesamten Service beeinflussen könnten.</li> | ||
</ul></li> | </ul></li> | ||
<li><b>Testumgebung nutzen:</b> | <li><b>Testumgebung nutzen:</b> | ||
<ul> | <ul> | ||
<li> | <li>Testen Sie das PlugIn in einer Entwicklungs- oder Staging-Umgebung, bevor es in die Produktion übernommen wird.</li> | ||
</ul></li> | </ul></li> | ||
<li><b>Log-Ausgaben:</b> | <li><b>Log-Ausgaben:</b> | ||
<ul> | <ul> | ||
<li> | <li>Nutzen Sie <code>Console.WriteLine</code>, um wichtige Informationen und Debug-Daten während der PlugIn-Ausführung zu loggen.</li> | ||
</ul></li> | </ul></li> | ||
</ul> | </ul> | ||
| Zeile 159: | Zeile 159: | ||
<li><b>PlugIn wird nicht geladen:</b> | <li><b>PlugIn wird nicht geladen:</b> | ||
<ul> | <ul> | ||
<li> | <li>Überprüfen Sie, ob die <code>IEntryPointPlugin</code>-Schnittstelle korrekt implementiert wurde.</li> | ||
<li> | <li>Stellen Sie sicher, dass alle Abhängigkeiten (z. B. <code>OmniSeller.Common</code>) verfügbar sind.</li> | ||
</ul></li> | </ul></li> | ||
<li><b>Assembly-Version inkompatibel:</b> | <li><b>Assembly-Version inkompatibel:</b> | ||
<ul> | <ul> | ||
<li> | <li>Stellen Sie sicher, dass die Hauptanwendung und das PlugIn dieselben Versionen von <code>OmniSeller.Common</code> verwenden.</li> | ||
</ul></li> | </ul></li> | ||
<li><b>Kein <code>EntryPoint</code> aktiviert:</b> | <li><b>Kein <code>EntryPoint</code> aktiviert:</b> | ||
<ul> | <ul> | ||
<li> | <li>Prüfen Sie, ob der EntryPoint des PlugIns (<code>SupportedEntryPoints</code>) mit dem vom Service ausgelösten EntryPoint übereinstimmt.<br><br><br></li> | ||
</ul></li> | </ul></li> | ||
</ul> | </ul> | ||