none
Umgang mit Bildern RRS feed

  • Frage

  • Hallo,

    bei vielen Szenarien kann ein Benutzer heutzutage Bilder hoch laden. Ich frage mich gerade, wie geht man damit um. Speichert man diese in der Datenbank? Oder im Filesystem und lediglich eine Pfad in der Datenbank? Auch in Bezug auf Traffic, das z.B. Azure anfällt, frag ich mich, wie man am besten vorgehen sollte. 


    Sonntag, 8. Januar 2017 21:33

Antworten

Alle Antworten

  • Hallo,

    es kommt drauf an was für Bilder es sind.

    Bilder die jeder sehen darf lege ich in das Dateisystem und den Pfad in die Datenbank.

    Geschützte Bilder lege ich in eine FileTables.

    Bei Azure entstehen kosten durch den Traffic, deswegen würde ich nicht geschützte Bilder in einen kostenlosen Speicher legen und die möglichen nachteile in kauf nehmen.

    Sind nur die Pfade in der Datenbank, hast Du alle Möglichkeiten offen.



    Gruß, Thomas

    Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!

    Icon für UWP

    Sonntag, 8. Januar 2017 22:54
  • Hallo Uriel,

    grundstälich ist beides möglich, also Dateisystem und Datenbank. Datenbanken machen es insofern einfacher, dass man die Daten genauso abrufen kann wie alle anderen auch und man sich nicht um einen eigenen Ordner mit speziellen Rechten kümmern muss. Aber es gibt auch viele Gründe dafür, die Bilder als Datei abzulegen:

    1. You will be able to serve the pictures as static files.
    2. No database access or application code will be required to fetch the pictures.
    3. The images could be served from a different server to improve performance.
    4. It will reduce database bottleneck.
    5. The database ultimately stores its data on the file system.
    6. Images can be easily cached when stored on the file system.

    Quelle: http://stackoverflow.com/questions/561447/store-pictures-as-files-or-in-the-database-for-a-web-app

    Was Azure betrifft, so dürfte das auch von der Menge an Bildern abhängen. Datenbankspeicher kostet vor allem bei sonst eher kleinen Datenbanken mehr. Und der Traffic vom Dateisystem des Webservers zum Client ist natürlich ein Schritt kürzer als von der DB zum Webserver zum Client. Letzteres fällt natürlich kostenmäßig weg, wenn alles auf der selben VM läuft.


    Viele Grüße, Tom Lambert - MVP, MCC und MSP
    Wozu Antworten markieren und Posts bewerten? Klicke hier
    Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
    Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub

    • Als Antwort markiert UrielMhezzek Donnerstag, 19. Januar 2017 09:31
    Sonntag, 8. Januar 2017 22:54
  • Hi,
    wichtig ist auch noch zu berücksichtigen, ob sich die ASP.NET-Anwendung in einer skalierbaren Umgebung befindet, d.h., wenn über einen NLB der bedienende Server ausgewählt wird. In diesem Fall kann die Ablage im Dateisystem sehr kompliziert werden (Kopiervorgänge auf die Server oder Ablage außerhalb).

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Montag, 9. Januar 2017 08:41
  • Wenn ich mich jetzt dazu entschließen würde die Bilder im Verzeichnissystem zu speichern, wie wird dann der Zugriff abgesichert? Bei der API habe ich ja mein Authentifizierungssystem, aber was ist bei einem Dateisystem?

    Was genau ist ein NLB?

    Montag, 9. Januar 2017 19:00
  • Hi,
    ein NLB ist ein Network Load Balancer. Wenn Du keine skalierbare Umgebung hast, dann hast Du auch keinen NLB und brauchst es nicht zu berücksichtigen.

    Den Zugriff auf das Dateisystem kannst Du auch sichern, indem der Zugriff nur vom Konto des AppPools erlaubt wird und die Bilder per ashx geliefert werden. Da kannst im Handler auch Rechteprüfungen durchführen (z.B. mit RoleProvider.IsInRole).


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Montag, 9. Januar 2017 19:25