2009-04-21 15 views
2

Ich bin eine Anwendung erstellen, die einen Webserver wie ein Dateisystem verwenden muss. Insbesondere wäre die ideale Lösung:HTTP-Dateisystem mit Such-und Sperr-Unterstützung

  • Eine serverseitige Komponente, die über HTTP das Öffnen (Sperren), Lesen, Schreiben, Suchen und Abschneiden einer Datei ermöglichen würde. Ich muss in der Lage sein, mehrere Dateien gleichzeitig zu sperren. Ich brauche das da draußen auf einen der Standard-Web-Hosts ausgeführt werden, so dass es auf IIS oder Apache ausgeführt werden muss, Server-Side-Scripting mit (Web Service, PHP, etc.)
  • Eine Client-Schnittstelle dazu, dass ich es von Hand ein URI, und es öffnet sich und verhält sich genau wie eine Datei. Meine Client-Anwendung befindet sich in .NET. Idealerweise würde die Client-API eine FileSteam-Unterklasse implementieren.
  • Der Grund, warum ich das brauche, ist, dass ich ziemlich große Dateien habe, die auf einem Webhost sitzen werden. Ich muss Teile der Dateien lesen (mit Suchvorgang), abschneiden und an das Ende anhängen. Das Herunterladen und Hochladen der gesamten Datei ist zu bandbreitenintensiv. Außerdem muss ich mehrere Dateien gleichzeitig sperren. Meine Fragen

    :

    • Gibt es so etwas gibt?
    • Wenn nicht, warum nicht? Ist das nicht ein sehr nützlicher Service?
    • Es scheint so eine Komponente würde mir erlauben, jede Web-Hosting-Firma da draußen als Netzwerk-Dateiserver zu verwenden. Das scheint nützlich zu sein, nicht?

      Danke für Ihre Hilfe!

      Eric

    Antwort

    1

    Es scheint, was Sie suchen für eine WebDAV Server ist.

    +0

    Diese Verbindung adressiert nicht die Suchanforderung; es könnte möglich sein, aber es sieht so aus, als ob das Bearbeitungsmodell ein Download/lokale Bearbeitung/Überschreibe-Anordnung ist und das OP speziell andere als diese angefordert – BCS

    +0

    es scheint es sucht zu lesen: http://www.webdav.org/mod_dav/ faq/# 01-02 aber das sagt nichts über das Schreiben, also wer weiß – BCS

    1

    Lange Version
    Web-Hosts wurden ursprünglich entwickelt, um Inhalte an den Benutzer in Einzelverbindung zu senden. Das ganze Konzept von Sitzungen ist ein relativ modernes Phänomen (Stichwort: relativ) - die meisten sind einfach Methoden, um einzelne Verbindungen vom selben Benutzer zu verfolgen. Meistens gibt es nur die Impression, dass Sie immer noch mit dem Server verbunden sind, wenn Sie in Wirklichkeit verbunden sind, heruntergeladen, getrennt - und die gleiche Verbindung/Download/Verbindung jedes Mal, wenn Sie eine Aktion ausführen.

    Dinge wie WebDav, die heft auf Ergänzungen der Standard-HTTP-Dialog sind die speziell Software entwickelt, ermöglichen über HTTP auf einem Server komplexere Kommunikation zu haben. Sehr verbreitet für WebDav ist Subversion, iCal (Kalenderunterstützung), usw. - diese ermöglichen Einzelverbindung Upload von Daten.

    Worüber Sie sprechen, ist ein sessionsbasierter Dateisystemdienst. Während es scheint, dass es ein guter Service wäre, vermute ich, dass es wegen der Komplexität und der Gefahr, die die Vorteile überwiegen, nicht umgesetzt wurde. Zum Beispiel müsste sich ein solcher Dienst nicht nur um Standard-Dateisystemprobleme (Autorisierung, Dateiberechtigungen, Sperrung, Timeouts usw.) sorgen, sondern muss sich auch um die Komplexität des Internets kümmern (Authentifizierung, Sitzungsverfolgung, Verbindungsabbrüche, Replay-Attacken, DDoS, usw.). Was passiert zum Beispiel, wenn ein Client eine Datei sperrt und dann offline geht? Bleibt die Datei gesperrt, bis der Server neu gestartet wird? Wenn nicht, wann entsperren Sie die Datei automatisch? Was passiert, wenn der Auto-Unlock-Auslöser und das Original-Schließfach wieder online sind?Erzwingen Sie, dass alles in einer einzigen Verbindung erledigt wird, um das auszugleichen? Was passiert, wenn sie mitten in einer Sitzung getrennt werden?

    Sie sind aber ein paar Dinge, über die Sie sich Sorgen machen müssen. Ich habe schweifte auf viel länger als ich meinte, aber das Endergebnis ist, dass ...

    Short Version
    Sie sicherlich WebDav dies implementieren können, die Sie benötigen, eine serverseitige bauen Bibliothek. Es ist zwar nicht unmöglich, aber Sie sind in einer Welt von Schmerz wie geplant. Ich würde vorschlagen, das Design zu vereinfachen, damit Sie es nicht so sehr wie ein Dateisystem verwenden müssen.