Ich wollte nur kurz etwas zur Eingangsfrage einwerfen:
Darum war mein Gedanke, ich verwende nur eine zentrale UniConnection-Komponente und lasse sämtliche Module einer Anwendungsinstanz darüber laufen. Dann würde das ConnectionTimeout-Management auch viel besser funktionieren.
Ich finde nicht, das das eine gute Idee ist, denn dadurch würden Zugriffe doch unnötigerweise serialisiert. Mir scheint, das UniDAC hier ein Connection-Pooling eingebaut hat, was sehr praktisch ist. Ich sehe nämlich überhaupt keinen Nachteil, 20-30 Verbindungen gleichzeitig offen zu halten: Den Server juckt das doch gar nicht. Durch das Pooling will man doch gerade das umständliche Weiterreichen einer TConnection vermeiden.
Das Pooling unterstützt ja direkt das Plugin-Konzept. Jedes Plugin holt sich eine eigene Connection und muss sich nicht darum scheren, ob da gerade eine Transaktion läuft, oder nicht.
Das entbindet dich aber nicht davon, Connection- oder Transaktionskomponenten weiterzureichen, gerade *wegen* der Transaktionsproblematik.