VirtualPathProvider + SQLServer DB

21/08/2007 - 11:51 von robert madrian | Report spam
Hallo,

Ich habe mir mal die Möglichkeit überlegt meine ASPX, ASCX Dateien
nicht im Filesystem sondern in einer SQLServer DB zu speichern und dabei
den VirtualPathProvider zu verwenden.

Hat jemand konkrete Erfahrungen damit?
Gibt es hier tewas besonderes zu beachten?
Wird eine Seite die aus der DB gelesen wird nur einmal Kompiliert und
immer wieder?

mfg
rm
 

Lesen sie die antworten

#1 Günter Prossliner
21/08/2007 - 12:17 | Warnen spam
Hallo Robert!

Ich habe mir mal die Möglichkeit überlegt meine ASPX, ASCX Dateien
nicht im Filesystem sondern in einer SQLServer DB zu speichern und
dabei den VirtualPathProvider zu verwenden.



Das wàre eine mögliche Anwendung eines VirtualPathProviders.

Hat jemand konkrete Erfahrungen damit?



Ich habe mal einen Artikel zu diesem Thema für das ASP.Net Professional
Magazin geschrieben.

Gibt es hier tewas besonderes zu beachten?
Wird eine Seite die aus der DB gelesen wird nur einmal Kompiliert und
immer wieder?



Der VirtualPathProvider dient als Abstraktion des Dateisystems für
BuildProvider (und andere Komponenten, welche nicht direkt mittels MapPath /
System.IO zugreifen, sondern (korrekterweise) über
"HostingEnvironment.VirtualPathProvider.OpenFile / GetFile / FileExists"
arbeiten).

Die aufrufende Komponente ist dafür verantwortlich wie oft der
VirtualPathProvider angesprochen wird. Die mitgelieferten BuildProvider
(z.b. für .aspx) rufen den VirtualPathProvider nur einmal auf, und verwenden
den zurückgegebenen Stream für die Kompilierung (diese werden nach
DOTNETFXROOT\Tempoary ASP.Net Files generiert / kompiliert).

Natürlich ist es dadurch nicht möglich in der Implementierung des VVP auf
Request-Daten (Querystring, Forms, Session, Authentication, ...) zuzugeifen.

Eine Sache noch: In der VVP Implementierung musst Du die Methoden rund um
"VirtualDirectory" nur dann implementieren, wenn ASP.Net den Inhalt eines
Verzeichnisses _enumeriert_. Das ist z.b. bei Themes der Fall. Für Seiten,
Code-Beside Files und andere URL-basierenden Requests wird immer zuerst
"FileExists" und dann "GetFile" aufgerufen. Unabhàngig davon ob die
Ressource nun im Stamm oder in einem Unterverzeichnis liegt.


OK?
mfg GP

Ähnliche fragen