2009-05-21 7 views
10

Ich habe viel Erfahrung beim Erstellen von ASP.NET-Websites in Visual Studio. Aber es gibt eine alternative Möglichkeit, dasselbe durch Web-Anwendungen zu tun, die eine etwas andere Dateistruktur haben.Wo gebe ich Klassen ein, wenn ich den Web Application-Projekttyp von Visual Studio .NET anstelle von Website verwende? (ASP.NET)

Seit ich meine erste Webanwendung erstellt habe, konnte ich keine Klassen (.cs-Dateien) mehr im App_Code-Ordner verwenden. Sie wurden von den ASPX- und ASHX-Klassen nicht gesehen, sofern sie nicht in dieselbe Datei verschoben wurden.

Es passiert, dass ich die gleichen Klassen über viele Dateien verwende und ich möchte nicht mehrere Kopien von ihnen haben. Wo stelle ich diese Klassen auf? Gibt es eine Lösung, ohne ein anderes Projekt zu erstellen?

Antwort

7

Wir haben den Web Application-Projekttyp in VS 2008 für alle unsere Projekte verwendet und unsere allgemeinen Klassen in den AppCode-Ordner anstelle des App_Code-Ordners gestellt. Es funktioniert absolut einwandfrei, wir greifen problemlos auf alle Seiten in der Anwendung zu.

2

Warum möchten Sie kein anderes Projekt erstellen? Dies wäre der einfachste Ansatz, da alle Ihre Klassen in dieser Assembly enthalten sind, die Sie projizieren können - Referenz in Ihrer Webanwendung und dann Zugriff auf alles über das gesamte Projekt hinweg.

Ich würde sehr empfehlen, dass Sie diesen Ansatz berücksichtigen.

+1

Es gibt viele Male, wenn Sie wirklich 1 oder 2 Klassen haben müssen, die zu spezifisch sind und es sinnvoll ist, sie im Webanwendungsprojekt zu haben. für z. Wir haben eine BasePage-Klasse [geerbt von web.ui.page], die den webspezifischen Code enthält, der bei jedem Laden der Seite ausgeführt wird, und statt HTTPContext usw. in einer Klassenbibliothek verwenden wir diese Klasse einfach in unserer Web-App. – Vikram

+0

Ich würde das auch empfehlen. Wenn Sie eine gemeinsame Bibliothek haben, die Sie für mehrere Projekte verwenden, erstellen Sie eine Lösung aus drei Projekten: Die WebApp, die anwendungsspezifischen Klassen und die generische Bibliothek. In der Art, wie ein Web Application-Projekt arbeiten soll (Kompilieren vor dem Publizieren), hilft dies. –

6

Mit Web Application Projects haben Sie viel mehr Freiheit. Erstellen Sie einfach Unterordner in Ihrem Projekt, um Ihre Klassen zu halten. Zum Beispiel könnten Sie einen Ordner namens "DAL" haben, um die Data Access Layer-Elemente aufzunehmen.

Optional können Sie ein Assembly-Projekt erstellen und Ihre Klassen dort einfügen und nur von Ihrem WAP aus darauf verweisen.

Letztendlich wird die Struktur auf, wie viele Klassen Sie haben werden.

0

Ich empfehle dringend, dass Sie alle Ihre Klassen (Domänenobjekte) in einem separaten Projekt ablegen. Auf diese Weise können Sie problemlos einen Test für Ihre Business-Schicht schreiben (Domain-Objekte) und Ihre Klassen sind portabel. Portable bedeutet, dass Sie Ihre DLL an einen anderen Entwickler senden können und er/sie die von Ihnen entwickelten Klassen problemlos wiederverwenden kann.

1

Ich habe normalerweise drei Projekte innerhalb einer Lösung. Die Web-App, die Web-Bibliothek (Basis-Seiten etc.) und die DAL. Das hält alles sauber.

1

Setzen Sie sie überall hin, wo Sie möchten. Ich neige dazu, die kleinen projektspezifischen Hilfsklassen und Basisseiten in einem/Helpers-Ordner unter dem Webprojekt zu halten, aber die DataLayer-Sachen und die wiederverwendbaren Helfer für allgemeine Zwecke in ihre eigenen separaten Projekte aufzuteilen.

1

Ich benutze /Shared/Classes für allgemeine Klassen verwendet auf der ganzen Website. Ich mag es, den Rest der Klassen in einen Klassen Ordner, wo sie verwendet werden, wie /blog/Classes/ setzen.

- EDIT--

Die Antwort oben war, wie ich Klassen gespeichert in Webanwendungsprojekte Forms. Jetzt, wo ich MVC verwende, speichere ich allgemeine Klassen in /Classes und nicht-allgemeine Klassen in Unterordnern unter /Classes wie /Classes/Blog. Kurz gesagt, Old_App_Code wurde in Classes umbenannt. Dies scheint eine natürliche Erweiterung der Namenskonventionen zu sein, die Microsoft in MVC verwendet, und es funktioniert auch mit meinen alten Web Forms-Seiten.

Verwandte Themen