Ich habe einen benutzerdefinierten Serializer für mongoDB erstellt. Ich kann es registrieren und es funktioniert wie erwartet.
Allerdings gibt die Anwendung manchmal einen Fehler aus, weil sie versucht, den Serializer zweimal zu registrieren.
Wie kann ich erkennen, ob ein Serializer bereits registriert wurde und damit die erneute Registrierung meiner Anwendung stoppt?
TL; DR: Ig du bist faul, benutze BsonSerializer.LookupSerializer
oder BsonMemberMap.GetSerializer
. Um richtig zu machen , stellen Sie sicher, dass der Registrierungscode einmal und nur einmal aufgerufen wird.
Um dies zu vermeiden, sollten Sie sicherstellen, dass der Serializer nur einmal registriert wird. Es ist eine gute Idee, einen globalen Startcode zu haben, der alles, was global für die Anwendung ist, einmal und nur einmal registriert. Dazu gehören Dinge wie Dependency Injector Konfiguration, Tools wie Automapper und der Mongodb-Treiber. Wenn Sie diesen Code nur einmal und von einem einzigen Punkt im Code aufrufen, müssen Sie sich nicht um Thread-Sicherheit, tote Verriegelungen oder ähnliche Probleme kümmern.
Die MongoDB-Treiberkonfigurationseinstellungen sind Thread-sicher, aber gehen Sie nicht davon aus, dass dies für alle Softwarepakete gilt, die Sie möglicherweise konfigurieren müssen. Sperren kann auch sehr leistungsfähig sein, wenn Ihr Code Multi-Threading ist, zum Beispiel in einer Web-Anwendung. Last but not least ist die Suche, die Sie gerade machen, möglicherweise gar nicht so trivial, weil einige Methoden eine ganze Vererbungsstruktur durchlaufen müssen.
Tags und Links mongodb