2009-07-01 58 views
0

此问题是基于RESTful ROA(面向资源的体系结构)的。 Web上的资源具有URL(或者,如果您愿意的话),例如http://myserver.com/me.jpgREST ROA中位于本地机器上的资源的URL

你可以得到这样的地方(Windows)中的机器上的文件:文件:/// C:/MyPictures/me.jpg。这不完全是“通用”资源标识符;如果你在另一台机器上试用它,它不能正常工作。在你的机器上,这可能是你而不是我的照片。

假设我想设计一个应用程序,可以将文件复制到Web服务。其他机器上的其他用户可以从Web服务下载它们,但是如果从原始机器使用它们,则会从本地文件系统中提取它们以提高速度。

是否有一个URI的任何概念,指的是文件中的特定机器上,如果它恰好是在本地机器?是否有任何特定机器的URI的概念? IP地址是不够的;我的机器的IP地址是192.168.0.102,你的也可能是。

我想为照片存储一些位置作为第一选择,第二选择等。第一选择= file:/// C:/MyPictures/me.jpg但是只有当本地机器是机器时来自;第二选择= http://myserver.com/me.jpg

,说明同一个问题的另一种方式:本机是独一无二的,在文件C://somedir/somefile.jpg是独一无二的。它有一个唯一的地址吗?一个地址会产生“无路由到主机”或正确的文件,这取决于您请求的地址?

回答

1

是否有一个URI的任何概念, 指的是文件中的特定 机器上,如果它恰好是当地 机?

让我们遵循的逻辑。这是如何确定的? URI绝对必须包含唯一标识机器的名称。

因此,您的机器必须通过公开注册的名称进行标识。您已明确指出私有IP地址不足。

因此,答案是:

  • 您的机器必须有一个公开认定名称是公开访问(如果在防火墙后面通过代理)。

  • 如果您想在“本地运行案例”中使用效率,该名称还必须直接解析到您的计算机(而不是防火墙)。

设置它取决于机器。但是,假设你是它支持虚拟服务器代理一个NAT防火墙后面...

  1. 在适当的DNS服务器注册的唯一名称,有它解析为公开面向IP。

  2. 设置虚拟服务器在防火墙代理回到你的内部地址。

  3. 设置你的本地计算机上的Web服务器。

  4. 确保您的本地机器本身配置(在/ etc/hosts或Windows平台上类似),以公共地址映射到192.168地址。

,基本上做的。无法想象其他事情会如何。不,不可能将单个URI定义为“Try file://在这种情况下,或默认为http://”。 URI的定义本身是一个单一的方案,如下所述:

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

+0

机床必须addressible但不必须是可公开访问的。就像诺克斯堡的黄金一样,即使你无法实现它,你也知道它在哪里。 如果使用“文件”方案你不需要本地Web服务器。例如,我可以访问“file://blackbeauty/shareddocs/myfile.txt”,但只是因为shareddocs是文件共享的名称。 “blackbeauty”在我的网络中是独一无二的,但并不普遍。所以这是一个可能但不是完全令人满意的方式。 – 2009-07-01 04:15:01

0

你是正确和不正确。虽然两台计算机可以在网段内具有相同的名称或相同的IP地址,但它们只存在于该网络内。

如果你想唯一标识一个文件和一台机器,那么file://blackbeauty.mydomain.org/c:\myfile.txt是完全可以接受的,因为blackbeauty名称是由mydomain“拥有” .ORG。

所以,如果你想要的网址是解析,您将需要一种方法来解决机器的FQDN。

+0

的URL文件://blackbeauty.mydomain.org/c:/ MYFILE并不需要可解析从任何地方,除了blackbeauty.mydomain.org本身。在本地网络的其他地方可以解决问题,但不是必需的。所以这是一个很好的解决方案,其中有一个域名“拥有”该机器。 我仍在寻找一种方法来唯一标识不可识别的机器,甚至不一定可识别的机器。我所需要知道的是:约翰是否像昨天一样从同一台计算机上连接? Cookies是一个部分解决方案。 – 2009-07-02 14:54:36