Frage

Ich brauche einige Einblicke und Gedanken über ein Refactoring, das ich mit unserer Web-App machen werde.

Wir haben zunächst das Sitzungs-per-Request-Muster mit NhiberNate und Activerecord verwendet, indem wir die On_BeginRequest / on_endRequest in der httpapplication verwendet haben, um die Sitzung zu erstellen und zu entsorgen. Später stellten wir fest, dass alle Ausnahmen im Zusammenhang mit DB außerhalb unseres Monorail-Kontextes geworfen wurden, was bedeutet Aktion, die in einigen Fällen wünschenswert wäre.

Deshalb haben wir es neu geschrieben, um Sitzungen in initialize () / contextualize () in unserem Basicontroller zu erstellen und sie in der Entsorgung () unseres Basiscontrollers zu entsorgen. Wir rollen auch die Sitzung in unserem Rettungs -Controller, um halb geschriebene Änderungen an der DB zu verhindern. So weit, ist es gut. Der Grund dafür, dies im Dispose () zu tun ViewComponents, aber sie scheinen keine Entsorgung () zu haben ...)

Ich habe jedoch einige Deadlock -Probleme, bei denen wir mit Transaktionen in der DB begonnen haben, die weder rollback noch engagiert werden, und ich kann meinen Kopf nicht daraus machen, vor allem wegen des Chaos, das wir mit diesem Ansatz gemacht haben. .

Also fand ich diesen Artikel: http://hackingon.net/post/nhibernate-session-per-request-aspnet-mvc.aspx

Und ich dachte: "Filter, wir können das auch in Monorail verwenden!"

Meine Fragen sind dann:

  1. Was passiert, wenn eine Ausnahme im Filter auftritt?
  2. Wird nach dem Ausführen von Brand auch dann eine Ausnahme in der Aktion oder im Rendering auftreten?
  3. Würden Sie diesen Ansatz empfehlen, wenn nicht, was ist Ihr Vorschlag stattdessen?

Alle Zeiger werden sehr geschätzt!

War es hilfreich?

Lösung

  1. Sie benötigen einen Anwendungsfehlerhandler, um die Ausnahmehandhabung zu betreuen.

  2. Fügen Sie einen Debugger bei und finden Sie es heraus.

  3. Wahrscheinlich nicht (obwohl es mein Artikel ist). Es funktioniert nicht mit Renderaction. Verwenden Sie am besten einen IOC -Behälter, um die Lebensdauer von Verbindungen zu steuern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top