Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datenbankverbindung mit Plugins teilen (https://www.delphipraxis.net/167936-datenbankverbindung-mit-plugins-teilen.html)

TheMiller 26. Apr 2012 13:26

Delphi-Version: 2009

Datenbankverbindung mit Plugins teilen
 
Hallo,

ich habe im Forum schon gesucht, eines gefunden und mir auch diesen Artikel Benutzen von Klassen aus einer DLL durchgelesen. Aber so richtig zufrieden/schlauer bin ich nun auch nicht. Ich schildere gerade mal mein Vorhaben:

Ich möchte mein Hauptprogramm um viele Plugins erweitern. Jedes Plugin soll aber Daten in eine Firebird-Embedded-Datenbank (v2.5) schreiben können. Nun möchte ich aber auch nicht, dass jedes Plugin allein durch die UniDAC-Komponenten gleich auf 3,5 MB schießt.

Daher überlege ich jetzt, wie ich das Datenbank/Plugin-Problem effizient und elegant lösen kann. Sollen die DLLs an meine Hauptanwendung die Queries übergeben und Resultate empfangen oder wäre es besser (bzw. möglich), dass die DLLs das instantiierte Datenbankobjekt "mitbenutzen"?

Ich weiß, dass die Stringübergabe zwischen Host<->Plugin umständlich ist. Ich habe es aber schon öfter gemacht und dabei auch auf den Borland-MM/FastMM verzichtet, mit Luckies Hilfe (seinem Artikel).

Könnt ihr mir was empfehlen? Danke!

mjustin 26. Apr 2012 15:20

AW: Datenbankverbindung mit Plugins teilen
 
Eine Standardlösung ist ein ConnectionPool, diesen kann man über ein Interface auch einer DLL bereitstellen.

Der ConnectionPool enthält 'freie' Connections, jedes Plugin oder jeder Thread in der Hauptanwendung erhält eine eigene Connection (sofern noch welche vorhanden sind). Nach Verwendung gibt das Plugin / der Thread die Connection zurück an den Pool.

Wie man die Plugins über Interfaces mit der Anwendung kommunizieren läßt, ist sicher kein Problem :)

(Ich habe ein Beispiel in der Jedi Code Library gefunden, JvPlugin, das gut funktioniert)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz