2009-05-21 10 views
2

wir eine Anwendung erstellen, die eine Menge von Bildern werden die Speicherung wird. Wir haben eine virtualisierte Umgebung auf GoGrid.com und wir hofften, ihren Cloud-Speicher zu nutzen.Der beste Weg, einen UNC-Pfad in C# für den Zugriff auf

nicht sicher, wie dies zu Wort, aber wenn wir (in unserem Code) den UNC-Pfad und creds angeben, um Platz oder ein Bild abzurufen, das schrecklich ineffizient scheint (zu verbinden, erhalten Bild, trennen)

Wenn Wir haben eine große Anzahl von Bildern oder viele Benutzer, die das gleichzeitig tun, es scheint, als würde es jeden normalen Server in die Knie zwingen.

Also meine Frage ist, kurz von großen Laufwerken mit, dass Ihre Website auf ausgeführt wird, wie sollen wir dies zu erreichen, streben? Wieder entscheiden wir uns für die GoGrid-Cloud-Star gegen Amazon S3, da alles unter einem schönen Regenschirm steht. Auf den Cloud-Speicher kann über einen UNC-Pfad und einen bestimmten Benutzernamen/ein Passwort zugegriffen werden.

Danke!

Antwort

0

Wenn Sie denken, Sie könnten die Dateizugriffsmethode im Laufe der Zeit ändern, und dann sicher sein, es abstrakt zu halten. Beginnen Sie mit einer einfachen UNC-Implementierung, aber Sie könnten später zu einem Webdienst oder einer REST-Implementierung wechseln.

+0

Wäre es sinnvoll, zu versuchen, eine Art von zugeordnetem Laufwerk einzurichten und dann den Code erhalten und Dateien auf diesem zugeordneten Laufwerk (vs Verbindung für jede Anfrage?) – dpluscc

+1

Wenn ich du wäre, würde ich es als verlassen ein UNC-Pfad, der bei jeder Anforderung eine Verbindung herstellt und den Rest des Systems zum Laufen bringt. Sobald es funktionierte, würde ich nachsehen, ob die Dateizugriffsmethode Performance-Probleme verursachte. Ich würde keine Zeit damit verbringen, davon auszugehen. –

0

Ich habe nicht vor mit hohen Lautstärke-Access-Server gearbeitet, aber es klingt für mich wie Sie nach etwas suchen, sehr leicht einem UNC-Pfad erreichbar. Facebook hat eine Architektur, die auf einer leichten HTTP-Implementierung und Blade-Servern für die Lastverteilung mit einem einzigen 10-TB-Dateisystem basiert, aber Sie hören sich nicht so an, als wären Sie noch da. Wenn Sie maximieren möchten, was Sie aus den Verbindungen herausholen, versuchen Sie, mehrere Dateien in einer Verbindungs-/Lese-/Trennungssequenz zu ziehen. Seien Sie gewarnt, dass Ihre Nutzer dadurch noch eine Weile warten und dass 20 Sekunden langsamer für Google zu einem Rückgang der Nutzer um 20% führen. Ansonsten kenne ich keinen schnelleren Weg, als einfach auf den Pfad zuzugreifen.

+0

Ich ringe mit einem ähnlichen Problem beim Zugriff auf Dateien auf UNCs gespeichert, wo der Benutzer eine Minute verbinden kann, kann nicht die nächste, kann aber die nächste Minute. Ich vermute, dass Verbindungen nicht geschlossen werden, nachdem unsere App auf den Server zugreift, sondern wir verwenden einfach File.Copy und File.Exist von System.IO. Wie verwalten wir explizit die Sequenz "connect/read/disconnect"? – flipdoubt

1

C# können UNC-Pfade wie native Pfade verwenden, die native Betriebssystemdatei mit i/o. Normalerweise werden Sie nicht "verbinden/abrufen/trennen", sondern nach dem Herstellen der Verbindung wird die Verbindung zum Remote-Server beibehalten, als ob Sie ein Laufwerk zugeordnet hätten. Nur weil Sie keinen Laufwerksbuchstaben dafür haben, bedeutet das nicht, dass es keine Verbindung gibt.

Alternativ (und nichts gehen Gitter zu wissen), können Sie entweder nur ein Laufwerk oder die Offline-Dateien in Windows verwenden, um die am häufigsten verwendeten Dateien lokal zwischengespeichert zu halten.