2009-04-30 7 views
2

Ist die Registrierung von Komponenten auf Burg Windsor Thread-Safe?Werden Services/Komponenten auf Castle Windsor Thread-sicher registriert?

D. h., Können mehrere Threads gleichzeitig Komponenten auf derselben Container-Instanz registrieren?

(Für das Protokoll, ja, ich bin mir bewusst, dass wahrscheinlich verrückt ist dies zu tun.)

+0

Ich weiß, dass Sie mich hier geschlagen haben, aber was Sie tun, ist wahrscheinlich verrückt. Möchten Sie Dienste, die in einem Thread in einem anderen Thread registriert sind, auflösen? –

Antwort

7

Es ist ziemlich schwer, ob ein komplexes Stück Software zu sagen, wie Windsor Thread-sicher ist oder nicht. Windsor verfügt über mehrere Teilsysteme und interne Dienste. Und jede Komponentenregistrierung kann viele Dinge tun (Einrichten von Proxies, unterschiedlichen Lebensstilen, benutzerdefinierten Abhängigkeiten ...). AFAIK gibt es keine threadsicherheitsspezifischen Tests.

Wenn Sie jedoch die Standard-Subsysteme verwenden und Ihre Threads keine benutzerdefinierten Contributors, Subresolver usw. hinzufügen (dh nur die Registrierung von Komponenten), sollte es Thread-sicher sein, da die an der Komponentenregistrierung beteiligten Klassen aussehen Sie sind entweder staatenlos oder richtig abgeschlossen. Die DefaultKernel delegiert Operationen an die verschiedenen Subsysteme/internen Dienste und insbesondere das DefaultNamingSubSystem (das Services-Maps-Speichersubsystem) wird ordnungsgemäß gesperrt.

Ich empfehle, dass Sie auf der castle-users oder castle-dev Google-Gruppen fragen, das ist, wo die echten Burg Gurus sind.

+1

Vielen Dank, dass Sie sich die Zeit genommen haben, dies zu untersuchen, denn es scheint, dass Sie tatsächlich recherchiert haben, was ich zu schätzen weiß. Ich weiß, es ist schwer zu sagen, aber ich wollte nur wissen, ob es da etwas allgemeines Wissen über "Omg denke nicht einmal darüber" gab. Mucho gracias! –

+3

Castle Windsor wurde entwickelt, um threadsicher zu sein und es gibt keine bekannten Bugs in Multithread-Umgebung. Es sollte _wie erwartet funktionieren, wenn Ihr Code gut entworfen ist. –

Verwandte Themen