ASP.net Web-API: Warum sind Controller erstellt pro Anfrage?

Mike Wasson Artikel "Dependency Injection für Web-API-Controller" auf www.asp.net sagt:

Dependenecy Umfang und Controller-Lebensdauer

Controller erstellt werden pro Anfrage...

Bin ich richtig in dem Verständnis, dass ASP.NET Web-API erstellt eine neue controller-Instanz (und befriedigt Ihre Abhängigkeiten) für jede eingehende Anforderung?

Ist dieser Ansatz nicht verschwenderisch, es schafft und zerstört viele Instanzen der controller, wenn in der Theorie eine einzelne Instanz verwendet werden könnte, für alle Anforderungen?

Theoretisch, sicher; aber Objekt-Schaffung (und Zerstörung).NET ist nicht teuer überhaupt. Controller in ASP.NET MVC (und WebAPI) sind relativ einfache Objekte, sicherlich die Instanziierung der alten Web-Formulars Page für jede Anforderung ist wahrscheinlich viel teurer.
Es gibt auch praktische Probleme mit dem halten einer stateful-controller: Sie müssten zusätzliche Arbeit durchführen, separate pro-Anfrage Aufräumarbeiten (z.B. DB-verbindungen) und pro-Instanz-Bereinigung (z.B. Controller-Status). Es gibt auch Probleme mit der Reentranz und Parallelität (ASP.NET verwendet einen anderen thread für jede Anforderung). Es ist sicherlich einfacher und zuverlässiger, um ein einzelnes controller-Instanz für jede Anforderung.
Da HTTP ein zustandsloses Protokoll ist es ein natürlicher Weg, um die Anforderungen in einer Staatenlosen Art und Weise ...

InformationsquelleAutor urig | 2014-08-07

Schreibe einen Kommentar