web-dev-qa-db-ja.com

WebdavとFTPのどちらが最適ですか?

ネットワーク上のいくつかのファイルを読み取り、編集して元に戻す必要があるJavaアプリケーションを開発する必要があります。

問題は、FTPプロトコルを介して(ネットワーク経由で)ファイル操作を常に行っていたことです。しかし、最近HTTPベースのWebdavについて聞きました。

誰もがそれらの間に(速度の点で)違いに気づきましたか?どれが最高ですか? FTPがそれに適しているのに、なぜ彼らはWebdavを「発明」したのですか?

63
David

WebDAVには、FTPよりも次の利点があります。

  1. 1つのTCP接続を介して作業することにより、ファイアウォール、NAT、およびプロキシをバイパスするように設定しやすくなります。FTPでは、データチャネルが適切なNAT=.

  2. 繰り返しますが、1つのTCP接続は永続的であるため、多くの小さなファイルを転送する場合、WebDAVはFTPよりも少し高速です。各ファイルにデータ接続を作成する必要はありません。

  3. GZIP圧縮は、HTTPの標準ですが、FTPの標準ではありません(はい、MODE ZはFTPで提供されていますが、どの標準でも定義されていません)。

  4. HTTPには、FTPで定義されていない認証方法の幅広い選択肢があります。例えば。 NTLMおよびKerberos認証はHTTPで一般的であり、FTPではクライアント側とサーバー側の両方をFTPで記述しない限り、それらを適切にサポートすることは困難です。

  5. 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を介したリソースの消費を意図したものではありません( niform resource locator

しかし、それはそれがなったものです。

HTTPには、リソース(GET)および(HEAD)をフェッチするための強力なセマンティクスがあるためです。 (POST)はセマンティック操作の数をカバーし、(DELETE)は不信に包まれました。 HTTPには、マルチリソース操作のような他のいくつかの品質が欠けていました。

一言で言えば、それは読み取りプロトコルであり、書き込みプロトコルではありませんでした。

FTP(多くのメカニズム)を介してアップロードすることにより、リソース(URL)を取得できるようになります。

WebDAVは、インターネットの欠落しているストーリーを提供することになっています。HTTPと同じメカニズムを介してリソースを作成するためのサポート。セマンティクスを拡張し、新しいHTTP VERBSを導入しました。

また、リソース(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経由でファイルをダウンロード/アップロードすることはなかったでしょう;)

27
pyfunc

[〜#〜] dav [〜#〜][〜#〜] http [〜# 〜]、FTPが提供できないHTTPのすべての利点が得られます。

例えば:

強力な認証暗号化プロキシサポート、およびキャッシング

確かに[〜#〜] ssh [〜#〜]を通じてこれの一部を取得できますが、HTTPインフラストラクチャSSHよりもはるかに広く展開されています。さらに、SSHには、HTTPが提供する幅広いツール、開発ライブラリ、およびアプリケーションがありません。

DAV転送(まあ、HTTP転送)もFTPより効率的です。単一のTCP=接続を介して複数の転送をパイプライン処理できますが、FTPでは、転送される各ファイル(および制御接続)ごとに新しい接続が必要です。

参照

4
Durai Amuthan.H

何をしたいかによって異なります。たとえば、ファイルのリストを取得するためのFTPのオーバーヘッドは7バイト(LIST -a)ですが、Webdavでは370バイト(PROPFIND + 207マルチステータス)です。

一部のファイルを送信する場合、FTPのオーバーヘッドはWebdavよりも低くなります。

多数の小さなファイルを送信/フェッチする必要がある場合、FTPは高速になります(正しいパイプライン化のために複数の接続を使用し、ファイルごとにTCP接続)。ファイル、それは両方の技術で同じです、オーバーヘッドは無視できます。

参照してください: http://www.philippheckel.com/files/syncany-heckel-thesis.pdf

3
xryl669

ファイル変更時間:

ftpとwebdavがファイルの変更時間をどのように処理するかに違いがあるようです。

Ftpにはその時間を維持するための「コマンド」があるようです(いくつかのftpクライアントとサーバーはそうするように主張しています)が、webdavは正しく覚えていれば、ファイルの変更日を取得できますが、アップロード時に設定することはできません。

owncloudクライアントと一部の専用webdavクライアントには回避策があるようですが、それはソフトウェアでのみ動作します

使用法にもよりますが、これはftpを支持する強力な議論です。ファイルに変更日==アップロード日を含めたくありません。後でダウンロードした後、私は自分の持っているファイルのバージョンを日付で知ることができません。

2
opto

Webdavには、ファイアウォールを簡単に通過させる(個別の制御/データソケットなし)という点で、FTPよりも優れています。速度は、両方のプロトコルが生のtcpソケットを介してファイルを転送する場合とほぼ同じです。