Wie erkenne ich, ob ein Mongodb-Serializer bereits registriert ist?

9

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?

    
joe 27.01.2014, 16:37
quelle

1 Antwort

1

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.

    
mnemosyn 30.01.2014 13:05
quelle

Tags und Links