Speichern von XSLT in SQL Server 2005 mit XML-Typ?

8

Ich habe viele XSL-Dateien in meiner ASP.NET-Webanwendung. Viel. Ich generiere eine Reihe von AJAX-HTML-Antworten mit dieser Art von generischer Transformationsmethode:

%Vor%

Ich möchte die XSL-Definitionen mit einer Spalte vom Typ xml nach SQL Server verschieben. Ich würde eine ganze XSL-Datei in einer einzigen Zeile in SQL speichern, und jedes XSL ist in sich abgeschlossen (keine Importe). Ich würde die XSL-Definition von SQL in mein XslTransform-Objekt auslesen.

In etwa so:

%Vor%

Es scheint wie ein direkter Weg zu:

  • fügen Sie jedem XSL Metadaten hinzu, wie lastUsed, useCount, etc.
  • Bulk-Update / Suchfunktionen
  • verhindern Sie viel Festplattenzugriff
  • Vermeiden Sie den Verweis auf relative Pfade und das Organisieren von Dateien
  • erlaubt XSL-Änderungen ohne erneute Bereitstellung (ich könnte sogar eine Admin-Seite schreiben, die das XSL in der Datenbank auswählt / aktualisiert)

Hat das schon mal jemand versucht? Gibt es irgendwelche Einschränkungen?

BEARBEITEN

Vorbehalte, die die Responder aufgelistet haben:

    Der
  • Festplattenzugriff wird nicht garantiert verringert
  • Dies wird xsl: includes
  • brechen
Jeff Meatball Yang 04.12.2009, 18:12
quelle

2 Antworten

3

Die zwei großen Probleme, die ich sehen kann, sind:

  1. Wir verwenden viele Includes, um sicherzustellen, dass wir nur einmal Dinge tun. Das Speichern der XSLT in der Datenbank würde uns davon abhalten.
  2. Es macht das Aktualisieren von XSLs interessanter - wir waren sehr glücklich, neue .xsl-Dateien auf bereitgestellten Websites zu speichern, ohne eine vollständige Aktualisierung der Site durchzuführen. Zu diesem Zweck haben wir Codebeispiele, die nach einem Client-spezifischen xsl in einem Ordner suchen, und diese Code-Teile können wieder den üblichen Code (Templates) im root erreichen - daher bin ich mir überhaupt nicht sicher über das reploy-Ding , aber das wird sehr stark von dem jeweiligen Anwendungsfall abhängen, deins ist sicherlich anders als unseres.

In Bezug auf den Festplattenzugriff, hmm ... muss die db immer noch auf die Festplatte zugreifen, um die Daten zu holen, und wenn Sie über das Caching sprechen, dann ist die db keine Voraussetzung für das Aktivieren des Caching.

Sie müssen den Update- / Suchoptionen zustimmen - Sie können zwar mit Powershell arbeiten, aber das muss auf dem Server ausgeführt werden, und das ist nicht immer eine gute Idee.

Technisch kann ich keinen Grund sehen, warum nicht (abgesehen von dem Wunsch, zu tun, schließt wie oben ein), aber praktisch scheint es ziemlich ausgewogen mit guten Argumenten, wie auch immer.

    
Murph 04.12.2009, 18:26
quelle
3

Ich speichere XSLTs in einer Datenbank in meiner Anwendung dbscript . (Allerdings behalte ich sie in einer NVARCHAR-Spalte, da sie auch auf SQL Server 2000 ausgeführt wird)

Da Benutzer ihre XSLTs bearbeiten können, musste ich einen benutzerdefinierten Validator schreiben, der den Text von TextBox in ein .Net XslCompiledTransform-Objekt wie folgt lädt:

%Vor%

Was Ihre Punkte betrifft:

  • Datei-E / A wird durch datenbankgenerierte Festplatten-E / A ersetzt, also keine Gewinne

  • Die
  • Bereitstellung ändert sich in ein INSERT / UPDATE-Skript, das die neuen Daten enthält

devio 04.12.2009 18:38
quelle

Tags und Links