Beginnen wir mit dem
Definition:
A Portable Area
ist eine DLL, die items
enthält, die normalerweise Teil Ihrer Lösung wäre. Tragbare Bereiche enthalten Ansichten, Controller, Modelle, sogar JS-Skripte, CSS-Dateien und Bilder.
Im Idealfall arbeiten die items
in Ihrem Portable Area zusammen, um zusammenhängenden Funktionen zu erstellen. Wenn nicht, profitieren Sie wahrscheinlich nicht von einem tragbaren Bereich.
Nutzen
Ich habe Portable Areas mit Web-Forms Web Parts
verglichen, weil beide ein Versuch sind, die Frage zu beantworten:
Wie erstelle ich wiederverwendbare Funktionalität?
Sie werden von Portable Areas profitieren, wenn Sie Funktionen erstellen möchten, die in mehreren Projekten verwendet werden können, oder als Funktionalität, die von Drittanbietern genutzt werden kann.
Nachteil
Jedes Mal, wenn Sie eine Ansicht, JS-Datei, CSS-Datei oder ein Bild in Ihrem Portable Area ändern, müssen Sie es neu erstellen. Ich betone diese Komponenten, weil sie normalerweise nicht neu aufgebaut werden müssen, wenn sie getestet oder entwickelt werden.
Dies kann zu einem Problem werden. Wenn Sie jedes Mal, wenn Sie Änderungen an CSS vornehmen, ein neues Build erstellen, werden 30-Sekunden-Änderungen zu 2-Minuten-Änderungen. Mache 30 davon und du hast 15 Minuten Arbeit in 2 Stunden gestreckt.
Portable Areas sind für eine ausgereifte Funktionalität gedacht, die in mehreren Projekten oder Lösungen wie sie ist wiederverwendet werden kann.
Portable Areas sind nicht ideal für Funktionen, die sich in einem frühen Entwicklungsstadium befinden.
Portable Areas sind nicht ideal für Funktionen, die nur in einer Lösung oder einem Projekt vorhanden sind.
Viele Dinge haben bereits gesagt. Ich habe einige Erfahrung in der Arbeit mit tragbaren Bereichen, und hier ist meine persönliche Sichtweise.
MvcContrib wurde seit einem Jahr nicht mehr aktualisiert (siehe nuget ) . Wenn Sie sich den Codeplex ansehen, werden Sie sehen, dass es seit der letzten Version nicht so viele Aktualisierungen im Quellcode gab. Es kann reif sein, aber keine Unterstützung kann problematisch sein.
Ein tragbarer Bereich ist in einer einzelnen Baugruppe enthalten . Es ist einfacher, sie wiederzuverwenden und zu aktualisieren, aber die Herausforderung besteht darin, wie Sie die Benutzerschnittstelle durch die Clientanwendung ausreichend steuern können. Auch wenn es sich um eine wiederverwendbare Funktion handelt, möchten Sie manchmal noch Master-Layouts oder Teiltöne verwenden.
Alle Web-Ressourcen (CSS, Js, Views) müssen Eingebettete Ressourcen sein (in dll enthalten) . Dies bedeutet, dass es wirklich sehr mühsam ist zu debuggen / debuggen, da jede Codeänderung eine Neuerstellung erfordert. Außerdem müssen Sie die Client-Website als Host für den tragbaren Bereich verwenden.
Portable Areas verwenden einen benutzerdefinierten Anbieter für virtuelle Pfade . Der Code des benutzerdefinierten virtuellen Pfadanbieters ist nicht getestet und vollständig nicht testbar. Die Verwendung von Virtual Path Providern wird vom ASP.Net-Team nicht empfohlen, da dies zu Leistungsproblemen führen kann.
Portable Areas gegen Nuget-Pakete . Portable Areas wurden vor vier Jahren (vor Nuget) entwickelt. Portable Areas lösten die Fähigkeit, Dateien (Css, Java Script) in einer separaten Anwendung zu transportieren, anzuzeigen und zu speichern. Nuget hat dieses Problem ebenfalls gelöst.
Aber trotz all dieser Nachteile nutzt mein Team es immer noch. Warum ? weil es für uns zur richtigen Zeit die richtige Lösung war.
Tags und Links asp.net-mvc asp.net asp.net-mvc-4 mvccontrib portable-areas