2009-07-01 6 views
0

この質問は、RESTful ROA(Resource-Oriented Architecture)に関するものです。 Web上のリソースには、URL(または希望する場合はURI)があります(例:http://myserver.com/me.jpg)。REST ROAのローカルマシン上にあるリソースのURL

ローカル(Windows)マシンでfile:/// C:/MyPictures/me.jpgのようにファイルを取得できます。これはまさに "ユニバーサル"リソース識別子ではありません。別のマシンで試してみると正しく動作しません。あなたのマシンでは、これは私の代わりにあなたの写真かもしれません。

ファイルをWebサービスにコピーできるアプリケーションを設計したいとします。他のマシンの他のユーザーは、Webサービスからそれらをダウンロードできますが、元のマシンから使用している場合は、ローカルファイルシステムからフェッチして速度を上げます。

特定のマシンのファイルをローカルマシンと見なすURIの概念はありますか?特定のマシンのURIの概念はありますか? IPアドレスでは不十分です。私のマシンのIPアドレスは192.168.0.102であり、あなたのIPアドレスもそうです。

最初の選択肢、第2の選択肢などの写真の場所の数を保存したいと思います。最初の選択= file:/// C:/MyPictures/me.jpgただし、ローカルマシンがマシンの場合のみから来た;第2の選択= http://myserver.com/me.jpg

同じ質問を述べる別の方法:このマシンは一意であり、C://somedir/somefile.jpgのファイルは一意です。固有のアドレスを持っていますか? 「No Route to Host」または正しいファイル(要求した場所に応じて)を生成するアドレス?

答えて

1

ローカル マシンであることを起こる場合 は、特定の マシン上のファイルを参照していることをURIのいずれかの概念がありますか?

論理に従ってみましょう。これはどうやって決定されますか? URIには、マシンを一意に識別する名前が絶対含まれていなければなりません。

したがって、マシンは公開名で識別される必要があります。プライベートIPアドレスが不十分であることがはっきりとわかりました。

だから、答えは次のとおりです。

  • あなたのマシンが公に識別名によって(ファイアウォールの背後にある場合は、プロキシ経由で)、公にアクセス可能である必要があります。

  • "ローカル実行中のケース"で効率を上げたい場合は、この名前もファイアウォールではなくマシンに直接解決する必要があります。

これはマシンによって異なります。しかし

  1. は、適切なDNSサーバに固有の名前を登録する...あなたは仮想サーバープロキシをサポートしてNATファイアウォールの後ろにいると仮定すると、それは公に向きのIPに解決できます。

  2. ファイアウォールに仮想サーバーを設定して、内部アドレスにプロキシします。

  3. ローカルマシンにWebサーバーを設定します。

  4. パブリックアドレスを192.168アドレスにマッピングするようにローカルマシン自体が構成されていることを確認します(/ etc/hostsまたはWindowsに相当)。

これは基本的にそれです。どのように他のものが想像することは不可能です。いいえ、1つのURIを "Try file://"と定義することはできません。この場合はhttp://にデフォルト設定します。

http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax

+0

マシンはアドレス指定可能である必要がありますが、一般にアクセス可能である必要はありません。フォートノックスの金のように、あなたがそれに到達できない場合でも、あなたはどこにいるのかを知っています。 "ファイル"方式を使用する場合、ローカルWebサーバーは必要ありません。たとえば、私は "file://blackbeauty/shareddocs/myfile.txt"にアクセスできますが、shareddocsはファイル共有の名前であるためです。 "blackbeauty"はネットワーク上でユニークですが、普遍的ではありません。これは可能ですが、それを行うには完全に満足できる方法ではありません。 –

0

あなたは正しいと間違って両方だ:ここで説明するようにURIの定義そのものは、単一の方式です。 2つのコンピュータはネットワークセグメント内で同じ名前または同じIPアドレスを持つことができますが、そのネットワーク内にのみ存在します。

ファイルとマシンを一意に識別したい場合は、ファイル://blackbeauty.mydomain.org/c:\ myfile.txtは、ブラックビューティの名前がmydomainによって「所有」されているという意味で完全に許容されます.org。

URLを解決したい場合は、FQDNでマシンをアドレス指定する方法が必要です。

+0

URLファイル://blackbeauty.mydomain.org/c:/ myfileは、blackbeauty.mydomain.orgを除くどこからでも解決できる必要はありません。ローカルネットワーク上の別の場所で解決できることは良いことですが、必須ではありません。だから、これは、マシンを「所有している」ドメイン名がある場合の良い解決策です。 私は依然として、アドレス指定が不可能であるか、または必ずしも識別可能でないマシンを一意に識別する方法を探しています。私が知る必要があるのは、Johnが今日昨日と同じコンピュータから接続していますか?クッキーは部分的な解決策です。 –

+0

なので、時間の経過と共に一定のマシンの識別子を中央の権限なしで使用したいのですか? file:// machinename/cを使用した場合の問題点は何もわかりません。それは中央権威がなく、時間の経過と共に一定であり、あなたがそれがアドレス指定可能であるか識別可能である必要はないと言われるので、ローカル解決以外に何も使用する必要はありません。 クッキーはサーバー発行の永続性バッグです。ローカルマシンに既にアクセスしている場合は、それを気にする必要はありませんか?ローカル解決のためにブラウザを使用することを参照している場合を除きますか? – SerialSeb

関連する問題