2008-10-22 6 views
6

Ich brauche Kunden, um PDFs von Briefen herunterladen zu können, die an sie gesendet wurden.Soll ich ein PDF dynamisch neu erstellen, anstatt es entweder in der Datenbank oder im Dateisystem zu speichern?

Ich habe die Threads über Datenbank versus Dateisystem Lagerung von Dokumenten oder Bildern gelesen, und es klingt wie der Konsens ist, dass für mehr als nur ein paar Bilder, Dateisystem ist der Weg zu gehen.

Was ich wissen will:

  • wäre eine sinnvolle Alternative sein, nur die Buchstaben speichern Details in der Datenbank, und erstellen Sie die PDF 'on the fly', wenn es angefordert wird?
  • Ist dieser Ansatz besser oder schlechter als das PDF aus dem Dateisystem zu holen?

Antwort

3

ich würde es aus zwei Gründen

1) Wenn Sie sich jemals ändern, wie Sie das PDF generieren speichern aus, werden Sie wahrscheinlich nicht wollen, historische Elemente zu ändern.Wenn Sie sie jedes Mal generieren, ändern sie sich entweder oder Sie müssen den Kompatibilitätscode beibehalten, um Datensätze im "alten Stil" zu erstellen.

2) Speicherplatz ist billig. Geduld des Benutzers ist nicht. Es sei denn, Sie sind wirklich auf die Speicherung oder das Ablegen von Speicherplatz angewiesen, ist schwieriger als das Erstellen der PDF-Datei, seien Sie freundlich zu Ihren Benutzern und speichern Sie sie ab.

Offensichtlich, wenn Sie Tausende von diesen eine Stunde aus einem dünnen Dataset erstellen, haben Sie möglicherweise nicht den Speicher. Aber wenn Sie den Platz haben, würde ich für "verwenden Sie es" wählen

0

Ich bin geneigt zu sagen "es kommt darauf an".

Wenn ein Dokument mehrmals angefordert wird, kann es ein Speichern sein, wenn Sie es bei der ersten Anforderung verfassen und anschließend abrufen.

OTOH Wenn die meisten Anforderungen für ein Dokument vom Just-Once-Typ sind und der Erstellungsprozess den größten Teil der Serverkapazität nicht auffrischt, wird on-the-fly klare Vorteile haben.

0

Wenn Sie ASP.NET verwenden, warum nicht die PDF-Datei zwischenspeichern. Ihr Cache kann in der Datenbank gespeichert werden, wenn Sie möchten oder so lange im Speicher bleiben, wie Sie ihn benötigen. Die enterprise library implementiert dies für Sie im Caching-Anwendungsblock und es ist bemerkenswert einfach zu bedienen. Wenn Sie das Objekt zwischenspeichern, einen Speicher in der Datenbank mit dem Block erstellen und dann laden, wenn Sie es benötigen, müssen Sie sich keine Gedanken darüber machen, es neu zu erstellen.

9

Wenn es zu Archivierungszwecken ist, würde ich auf jeden Fall das PDF speichern, da sich in Zukunft Ihr PDF-Generierungsskript ändern kann und der Brief dann nicht genau mit dem ursprünglich gesendeten übereinstimmt. Der Kunde erwartet, dass es genau so ist.

Es spielt keine Rolle, welcher Ansatz überlegen ist, manchmal ist es besser, für welchen Ansatz sicherer zu gehen.

+0

Alles, was ich jemals getan habe, hat eine Archivierungsmethode benötigt. Wir haben der Tabelle einen Trigger hinzugefügt, so dass jedes Mal, wenn ein Datensatz eingefügt oder aktualisiert wurde, eine neue PDF generiert wurde. –

0

Wenige Dinge zu beachten, ist die PDF-Generierung basierend auf Daten, wie es zu einem bestimmten Zeitpunkt existierte. Z.B. eine Rechnung basierend auf Daten des Vormonats?

Wenn ja, würden Sie jeden Monat die gleiche Vorlage verwenden, um diesen Brief zu generieren? Was passiert, wenn/wenn sich das Briefformat ändert, wenn Sie im laufenden Betrieb regenerieren, ist es nicht mehr dasselbe, das an sie gesendet wurde. Ist das Speichern des PDF-Streams in der Datenbank möglich?

Ich schätze, was ich bekomme, benötigen Sie eine genaue Darstellung dessen, was an den Benutzer gesendet wurde, oder ist das flexibel?

+0

Was ich vorschlage ist, alle Briefinformationen ab dem Datum zu speichern, an dem sie ursprünglich in einer eigenen Tabelle erstellt wurden. Der Absatztext und die Kundendaten ändern sich nicht. Bekomme ich mit dem On-the-Fly-Ansatz etwas (oder verliere ich)? – Tony

+0

Ist dieser Ansatz beispielsweise inhärent mehr (oder weniger) sicher, als vorhandene PDFs irgendwo auf einem Laufwerk zu haben? – Tony

+0

Weder Mehr oder Weniger sicher, PDF könnte neu erstellt und in das Verzeichnis genauso einfach wie die Daten bearbeitet werden. Beides wird wahrscheinlich nicht passieren, ist aber eine Möglichkeit. Das Problem mit dateibasierten Ansätzen ist die tatsächliche Verwaltung von ihnen. Das Generieren von On-the-Fly geht davon weg. –

2

Gibt es einen forensischen Grund, warum Sie Aufzeichnungen von Briefen an Kunden verwalten müssen? Wenn Sie sich im laufenden Betrieb regenerieren, wissen Sie, dass zukünftige Codeänderungen den Brief nicht umschreiben werden (oder zumindest kann der Kunde dieses Argument vor Gericht geltend machen, wenn die Informationen in einem Rechtsstreit verwendet werden) ...

0

Die Frage, ob die pdfs dynamisch generieren oder statisch speichern klingt eher wie eine Frage des Gesetzes als eine Frage der Programmierung.

Wenn Sie keinen Rechtsbeistand haben, der Ihnen eine Anleitung geben kann, ist es viel sicherer, auf der sicheren Seite zu bleiben und sie statisch zu speichern.

0

Solange das PDF-Dokument von ständiger Natur ist (nicht nur ein Arbeitsdokument, sondern etwas offiziell unterzeichnet und an anderer Stelle im Unternehmen oder außerhalb des Unternehmens gesendet), sollten Sie eine Kopie dieser PDF-Datei auf haben Ihr Netzwerk und eine Verknüpfung zu dieser Datei in Ihrer Datenbank.

Sie nicht auf den verfügbaren Daten verlassen können das gleiche Dokument zu einem anderen Zeitpunkt zu reproduzieren vor allem, weil:

  1. können Daten geändert werden (ja annehmen, dass der Brief unterzeichnet von Abteilungsleiter wurden nach ständiger! und das Personal hat sich geändert?)
  2. Report-Format (Header, footer, logo, etc.)
  3. Das Dokument von jemandem ändern wird anders gehalten wird Ihnen hinterlassen, die Verwendung der verfügbaren Daten im Dokument machen.
Verwandte Themen