Ich glaube nicht, dass Sie Leistungsunterschiede haben werden, wenn Sie einen Singleton verwenden oder nicht, weil Sie immer noch mehrere Threads gleichzeitig auf derselben Methode ausführen können. Wenn Sie darauf achten, keine internen Felder zu haben, die in allen Threads geteilt werden, funktioniert alles gut.
Am Ende muss die Klasse, die den Verbindungspool verwaltet, Thread-sicher sein, und Sie werden am Ende ein paar Sperren machen, die die Leistung beeinträchtigen könnten, aber sie werden alle benötigt. (es ist intern im Rahmen gemacht, und Sie können sein Verhalten sowieso nicht ändern)
Wenn Sie sich entscheiden, kein Singleton zu verwenden, stellen Sie sicher, dass Ihre DAL-Instanzen leicht sind, da dies einen Unterschied machen kann, aber normalerweise nicht .
Hinweis: Wenn Sie über die Verbindungspools sprechen, müssen Sie nur darauf achten, dass Sie dem Muster "spät öffnen, früh schließen" folgen. Das heißt, verzögern Sie das Öffnen der Verbindung so weit wie möglich und schließen Sie es so schnell wie möglich, nachdem Sie alles getan haben, was Sie brauchen.
Nachdem das gesamte System mit dieser Zauberregel erstellt wurde, können Sie mit den Verbindungszeichenfolgenparametern spielen, um einige Pooloptionen (Anfangsgröße, Maximalgröße, ...) zu ändern.)
Wie haben Sie Transaktionen mit Singleton-Muster verwaltet? – Novice
Ich habe einen weiteren Absatz hinzugefügt, um über Transaktionen zu sprechen. –
Wenn jedoch ein einzelnes DAL-Objekt über die Anwendungen verteilt ist, können wir den Verbindungspool von ADO.net verwenden, da dieses einzelne DAL-Objekt immer nur eine Verbindung benötigt. – Novice