ネットワーク上のいくつかのファイルを読み取り、編集して元に戻す Java アプリケーションを開発する必要があります。
問題は、私が常に FTP プロトコルを介して (ネットワーク経由で) ファイル操作を行っていたことです。しかし、最近、HTTP ベースの Webdav について耳にしました。
誰かが(速度に関して)違いに気づきましたか?どれが最高ですか?FTP が適しているのに、なぜ彼らは Webdav を「発明」したのでしょうか?
WebDAV には、FTP に比べて次の利点があります。
1 つの TCP 接続を介して作業することで、ファイアウォール、NAT、およびプロキシをバイパスするように構成することが容易になります。FTP では、データ チャネルが適切な NAT セットアップで問題を引き起こす可能性があります。
繰り返しになりますが、永続的な TCP 接続が 1 つあるため、多くの小さなファイルを転送する場合、WebDAV は FTP よりも少し高速になります。ファイルごとにデータ接続を行う必要はありません。
GZIP 圧縮は HTTP の標準ですが、FTP の標準ではありません (はい、MODE Z は FTP で提供されていますが、どの標準でも定義されていません)。
HTTP には、FTP で定義されていない認証方法の幅広い選択肢があります。例えば。NTLM および Kerberos 認証は、HTTP では一般的であり、FTP では、FTP のクライアント側とサーバー側の両方を作成しない限り、適切なサポートを得るのは困難です。
WebDAV は部分転送をサポートし、FTP では部分アップロードはできません (つまり、ファイルの途中でブロックを上書きすることはできません)。
もう1つ考慮すべきことがあります(サーバーを制御しているかどうかによって異なります)-SFTP(SSHファイル転送プロトコル、FTPとはまったく関係ありません)。SFTP は WebDAV よりも機能が豊富で、SFTP はリモート ファイル システムにアクセスするためのプロトコルですが、WebDAV は抽象化を念頭に置いて設計されています (WebDAV は「ドキュメント」用で、SFTP はファイルとディレクトリ用です)。SFTP には、WebDAV について前述したすべての利点があり、管理者と開発者の両方に人気があります。
質問への回答 -Why did they "invent" Webdav
WebDAV は の略ですWeb Distributed Authoring and Versioning
。
インターネットは、URL を介してリソースを消費するためのものではありませんでした ( Uniform resource locator )
でも、それがこうなりました。
HTTP には、リソース (GET) および (HEAD) を取得するための強力なセマンティクスがあったためです。(POST) はセマンティック操作の数をカバーしていましたが、(DELETE) は不信感に包まれていました。HTTP には、マルチリソース操作などの他の特性が欠けていました。
簡単に言えば、それは読み取りプロトコルであり、書き込みプロトコルではありませんでした。
FTP や多くのメカニズムを介してリソース (URL) をアップロードすることで、リソース (URL) を取得できるようにします。
WebDAV は、インターネットのミッシング ストーリーを提供することになっていました。同じメカニズム HTTP によるリソースのオーサリングのサポート。そのセマンティクスを拡張し、新しい HTTP 動詞を導入しました。
また、リソース (uris) の読み取り、書き込み、変更、および削除だけでなく、リソースのメタ プロパティを照会して変更するメカニズムも導入しました。以前はできなかったというわけではありませんが、裏口のメカニズムによって行われていました。
ご覧のとおり、デスクトップ上のファイル操作で期待されるのと同じメカニズムの一部がインターネット リソースにもたらされました。
以下は、類推の一部です。
MKCOL ----- make collection ----- similar to make folder
PROPGET ---- get properties (meta?) --- same as get info or extended attributes on mac
PROPPATCH --- modify properties
COPY ---- cp
MOVE ---- mv
インターネットのオーサリングをサポートするための HTTP の拡張機能として、WebDAV の崇高な目標のいくつかを確立できたことを願っています。ただし、それを達成したかどうかはわかりません。
あなたの質問について
アプリケーションはクライアントであり、使用可能なメカニズム (FTP または WebDAV の反対側) で対処する必要があります。WebDAV が利用できる場合は、それを使用できます。しかし、セマンティクスに慣れるには時間がかかります。FTP はセマンティクスが限定されており、シンプルさで優れています。すでに使用している場合は、変更しないでください。
どちらが速いですか
それは答えに似ています。HTTP と FTP のどちらが速いですか?
ずる賢いメモとして、これがそのような問題である場合、HTTP 経由でファイルをダウンロード/アップロードすることはなかったでしょう ;)
何をしたいかによります。たとえば、ファイルのリストを取得するための FTP のオーバーヘッドは 7 バイト (LIST -a) ですが、Webdav では 370 バイト (PROPFIND + 207 Multi Status) です。
一部のファイルを送信する場合、オーバーヘッドは Webdav よりも FTP の方が低くなります。
小さなファイルを大量に送信/取得する必要がある場合は、FTP の方が高速です (複数の接続を使用して正しいパイプライン処理を行い、ファイルごとの TCP 接続を使用します)。大きなファイルを送受信している場合、それは両方のテクノロジーで同じであり、オーバーヘッドはごくわずかです。
参照してください: http://www.philippheckel.com/files/syncany-heckel-thesis.pdf
Webdav には、ファイアウォールを簡単に通過できるという点で FTP よりも優れています (個別の制御/データ ソケットはありません)。どちらのプロトコルも未加工の tcp ソケットを介してファイルを転送するため、速度はほぼ同じです。