Das Page Controller-Pattern erweist sich als ineffizient, wenn man die Verarbeitung über mehrere Webseiten hinweg koordinieren muss, da es für jede logische Seite ein separates Objekt implementiert. Der Front Controller funktioniert in solchen Fällen besser, da er sämtliche Requests über einen einzigen Controller bündelt und diese dann über einen einzelnen Handler sowie eine Hierarchie von Befehlsklassen weiterleitet. Der Handler extrahiert Parameter aus dem HTTP-Request, wählt den korrekten Befehl und übergibt diesen der Verarbeitung. Nachdem jedes Befehlsobjekt die entsprechende Aktion durchgeführt hat, kann es wählen, welche View für die korrekte Darstellung der Seite erforderlich ist. Die Implementierung des Front Controllers führt zu einer zentralisierteren Anwendungssteuerung, weil alle Seiten-Requests über einen einzigen Controller laufen, anstatt von unterschiedlichen Page Controllern bearbeitet zu werden. Das kann sich allerdings auch als Nachteil erweisen, falls der Handler aufwändige Arbeitsschritte auszuführen hat wie etwa Datenbankabfragen, was die gesamte Anwendung ausbremsen kann. Der Handler sollte so effizient wie möglich sein und auf externe Ressourcen nur zugreifen, wenn es absolut nötig ist. Das Cachen von externen Ressourcen ist eine erwägenswerte Option, um die Performance des Handlers zu verbessern.
Man implementiert die FrontController-Klasse, indem man einen Handler und eine CommandFactory erstellt, die den notwendigen Befehl für die Response auf einen Request bestimmt. ASP.NET stellt das IHttpHandler-Interface bereit, mit dem Entwickler eigene Interfaces zur Bearbeitung eingehender HTTP-Requests erstellen können. Den Handler erstellt man per Vererbung von System.Web.IHttpHandler und fügt dann die Logik zum Instanziieren und Aufrufen des entsprechenden Befehls aus der CommandFactory hinzu. Die CommandFactory definiert eine Collection von Befehlen sowie die Logik, die bestimmt, welcher der Befehle ausgeführt werden soll. Der Aufruf der CommandFactory liefert das entsprechende Command-Objekt zurück, für das der Handler eine Execute-Methode aufrufen kann. Mit diesem Pattern kann man eine robustere Navigation erstellen und diese zentral implementieren, indem man die CommandFactory-Logik erweitert und zusätzliche Befehle zur Bearbeitung der notwendigen Szenarien erstellt.
Architektur-Pattern
.NET-Architekten sollten sich wann immer möglich um die Verwendung von Architektur-Pattern bemühen. Pattern wie der Page Controller und der Front Controller sind einfach mithilfe integrierter Funktionen von ASP.NET zu implementieren, und sie sorgen für hochgradig wieder verwendbare und erweiterbare Anwendungsdesigns und Implementierungen. Weitere Informationen und Einzelheiten zur ASP.NET-Implementierung für diese und weitere Architektur-Pattern finden sich im Microsoft .NET Architecture Center.
Neueste Kommentare
Noch keine Kommentare zu Pattern zur Wiederverwendung von Code in ASP.NET
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.