Laden...

Profil von saro78

myCSharp.de - Member Mitglied seit
S
saro78
myCSharp.de - Member
0
Themen
5
Beiträge
Dabei seit
02.11.2010
Letzte Aktivität
vor 14 Jahren
Alter
47 Jahre
Beruf
Fachinformatiker
Interessen
games
Erstellt vor 14 Jahren

Hallo,

Ich rate dir auch generell davon ab Dateien in die Datenbank zu speichern.

Ich würde eine Kombination aus Dateisystem und Datenbank verwenden. In der Datenbank die Schlüssel und Dateinamen und sonstige Dateiinfos speichern und die Daten selber im Dateisystem ablagern.

Damit du keine Konflikte mir Dateinamen etc bekommst am besten den Internen db Schlüssel als Dateinamen verwenden.

Falls Verzeichnisstrukturen innerhalb der Anwendung gewünscht sind würde ich diese wieder über die Datenbank verwalten. Das wird sonst unnötig kompliziert.
Generell würde ich aber wenn man mit sehr vielen Dateien rechnen kann nicht alle Dateien im einem Verzeichnis kopieren. Z.B. max 1000 Dateien in einem Verzeichnis anlegen und wenn diese erreicht sind ein neues Verzeichnis anlegen. Dieses einfach auch nur mit einer fortlaufenden Nummer.

Als Endpunkt und schliesslich um auf die Dateien zuzugreifen bietet sich ein Wcf-Service an. Hier sollten dann funktionen drin liegen um sich den Stream zu holen oder hochzuladen. Falls Dateien auch bearbeitet werden müssen muss noch an einem locking Mechanismus gedacht werden. Dies läßt sich aber auch recht umkompliziert umsetzen. Dateien dürfen auf nur über den Service gelöscht werden. Der Service muss selber auch darauf achten das das Dateisystem mit der Datenbank synchron bleibt. Hier solltest du aber bei MySql das InnoDb System verwenden. Das Isam unterstützt meinem Wissen her keine Transaktionen und diese sind hier total wichtig um sicher zu gehen das die Datenbank mit dem Dateisystem synchron bleibt.

Ich habe grob in der Art einen FileService entwickelt und es funktioniert sehr gut. Das Streaming per Wcf geht geht schnell und die Datenbank bleibt schön kompakt und schlank.

In meinem Service speichere ich auch noch Blobs in der Datenbank ab. Hier aber nur wenn es sich bei der jeweiligen Datei um ein Bild handelt. Wenn das der Fall ist wird ein Thumbnail erstellt und abgespeichert.

Hoffe das ich dir ein paar Tips geben konnte

Sorry wegen den Rechschreibfehlern .. viel zu tun heute .. aber irgendwie wollte ich unbedingt zu dem Thema was posten 😉

lg Sascha

Erstellt vor 15 Jahren

Hallo,

Hast du bei Hibernate die Möglichkeit aktiv in das SQL einzugreifen?
Über den Befehl Top kannst du unter MSSql die Ergebnismenge einschränken.

select TOP 20 * from Tabelle

Gruß
Sascha

Erstellt vor 15 Jahren

Hallo,

Ich glaube dass das so nicht Möglich ist.
Meines Wissens hast du zwei Möglichkeiten:

  1. Möglichkeit
    das Attachement herausnehmen und im HTML Text der EMail auf die Pdf Datei verweisen.

  2. Möglichkeit
    Bei einem Attachement wird ein FileName (Dateisystem) oder ein Stream erwartet. Entweder das pdf herunterladen und den Constructor mit Dateinamen verwenden oder einen FileStream erzeugen und den Constructor mit FileStream verwenden.

Wobei ich mir ziemlich sicher bin das du auch beim Filestream die Datei zuerst vom Web Server herunterladen musst - quasi ein FileStream direkt auf Http nicht Möglich ist.

Gruß
Sascha

Erstellt vor 15 Jahren

Hallo,

Falls das ganze was kosten darf kann ich dir nur den ReportDesigner von DevExpress empfehlen. Es wird eine Trial angeboten.

Folgende Punkte finde ich an DevExpress sehr gut:

Reports Komponenten selber in C# (ein Report = c# Klasse)
Bericht Customination auch im Programm für Endkunde auszulagern
Als Datenquelle Dataset oder Objektliste möglich
Viele Exportfunktionen (html, Pdf, Word, Excel)

Ein Hauptgrund war zum einen das die Reports selber in C# sind. Hier kann man auch mit Vererbungstechnicken arbeiten. Zum anderen das auch Objektlisten als Datenquellen hinterlegt werden können. Hab mich nie mit den Datasets von Microsoft angefreundet.

Die Reporting Komponenten sind nur ein kleiner Teil dieser Umfangreichen Sammlung. Die ganze Sammlung ist einfach nur genial ... und vereinfacht vieles 😃

Devexpress Downloads

Die Reporting Komponenten sind Bestandteil der VisualStudio Controls WinForms

Gruß Sascha

Erstellt vor 15 Jahren

Hi,

Ich hatte mal eine im Netz synchrone Anwendung geschrieben...
Dort hatte ich ähnliche Probleme.. in unregelmäßigen Abständen sind Exceptions aufgetreten. Bei mir war es ein Timing Problem. Jede Client Verbindung auf dem Server war ein eigener Thread ... wenn zwei "gleichzeitig" eine Aktualisierungsinfo an die anderen Clients posten wollten (serialisierte Objekte per Stream) wurde dann gelegentlich gleichzeitig auf dem gleichen Kanal des Clients geschrieben.
Problem hatte ich gelöst indem ich alle Meldungen eines Kanals/clients in eine Thread sichere liste packe und ein separater Thread diese dann im Hintergrund abarbeitet.

Hoffe das ich behilflich sein konnte oder der Tip in die richtige Richtung geht 😃

Gruß
Sascha