2009-07-01 4 views
0

이 질문은 RESTful ROA (Resource-Oriented Architecture)에 관한 것입니다. 웹상의 리소스에는 URL (또는 원하는 경우 URI)가 있습니다 (예 : http://myserver.com/me.jpg).REST ROA의 로컬 시스템에있는 리소스의 URL

로컬 (Windows) 컴퓨터에서 file : /// C : /MyPictures/me.jpg와 같은 파일을 가져올 수 있습니다. 이것은 정확하게 "Universal"Resource Identifier는 아닙니다. 다른 컴퓨터에서 해보면 제대로 작동하지 않습니다. 당신의 컴퓨터에서 이것은 나 대신에 당신의 그림 일 수 있습니다.

파일을 웹 서비스에 복사 할 수있는 응용 프로그램을 디자인한다고 가정합니다. 다른 컴퓨터의 다른 사용자는 웹 서비스에서 다운로드 할 수 있지만 원래 컴퓨터에서 사용하는 경우 로컬 파일 시스템에서 가져 와서 속도를 향상시킵니다.

로컬 컴퓨터 일 경우 특정 컴퓨터의 파일을 참조하는 URI 개념이 있습니까? 특정 머신의 URI 개념이 있습니까? IP 주소가 충분하지 않습니다. 내 컴퓨터의 IP 주소는 192.168.0.102이고 너의 IP 주소도 될 수있다.

첫 번째 선택 사항, 두 번째 선택 사항 등으로 사진의 여러 위치를 저장하고 싶습니다. 첫 번째 선택 = file : /// C : /MyPictures/me.jpg하지만 로컬 컴퓨터가 컴퓨터 인 경우에만 온; 두 번째 선택 = http://myserver.com/me.jpg.

동일한 질문을하는 다른 방법 :이 컴퓨터는 고유하며 C : //somedir/somefile.jpg의 파일은 고유합니다. 고유 한 주소가 있습니까? 요청한 위치에 따라 "호스트에 경로 없음"또는 올바른 파일을 생성하는 주소?

답변

1

는 URI의 개념은 로컬 기계로 발생하는 경우 특정 컴퓨터에 파일로 연결되는 것이 있습니까?

논리를 따라 해봅시다. 어떻게 결정 되는가? URI는 반드시 기계를 고유하게 식별하는 이름을 포함해야합니다.

따라서 컴퓨터는 공개적으로 등록 된 이름으로 식별되어야합니다. 사설 IP 주소가 충분하지 않다는 것을 분명히 확인했습니다.

그래서, 대답은 :

  • 기계가 공개적으로 확인 된 이름 (방화벽 뒤에있는 경우 프록시를 통해) 공개적으로 액세스 할 수 있어야합니다.

  • "로컬 실행 사례"에서 효율성을 원한다면 그 이름도 방화벽이 아닌 컴퓨터로 직접 확인되어야합니다.

이 설정은 시스템에 따라 다릅니다. 그러나

  1. 는 공개적으로 향하는 IP에 해결이 해당 DNS 서버에 고유 한 이름을 등록 ... 가상 서버 프록시를 지원하는 NAT 방화벽 뒤에있어 가정.

  2. 방화벽에서 가상 서버를 내부 주소로 다시 프록시를 설정할 수 있습니다.

  3. 로컬 컴퓨터에 웹 서버를 설치하십시오.

  4. 로컬 컴퓨터 자체가 (/ etc/hosts 또는 Windows에 해당하는) 공용 주소를 192.168 주소에 매핑하도록 구성되었는지 확인하십시오.

기본적으로 그렇게합니다. 어떻게 다른 일이 일어날 지 상상할 수 없습니다. 아니요, 단일 URI가 "Try file : //"로 정의되거나이 경우 http : // "로 정의 될 수 없습니다.

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

+0

기계는 주소 지정 가능해야하지만 공개적으로 액세스 할 필요는 없습니다. 포트 녹스 (Fort Knox)의 금처럼, 당신이 그곳에 도착할 수없는 곳이라 할지라도 당신은 알고 있습니다. "파일"구성표를 사용하는 경우 로컬 웹 서버가 필요하지 않습니다. 예를 들어 shareddocs가 파일 공유의 이름이기 때문에 "file : //blackbeauty/shareddocs/myfile.txt"에 액세스 할 수 있습니다. "blackbeauty"는 내 네트워크에서 고유하지만 범용 적이 아닙니다. 따라서 이것은 가능하지만 완전히 만족스러운 방법은 아닙니다. –

0

당신은 정확하고 잘못된 모두 위치 : 여기에 설명 된대로 URI의 매우 정의는 하나의 방식이다. 두 컴퓨터는 네트워크 세그먼트 내에서 동일한 이름이나 동일한 IP 주소를 가질 수 있지만 해당 네트워크 내에 만 존재합니다.

파일과 컴퓨터를 고유하게 식별하려는 경우 파일 이름 : //blackbeauty.mydomain.org/c : \ myfile.txt는 blackbeauty 이름이 mydomain에 의해 "소유 됨"이라는 의미에서 완벽하게 허용됩니다 .org.

따라서 URL을 해석 가능하게하려면 FQDN으로 컴퓨터를 처리해야합니다.

+0

URL 파일 : //blackbeauty.mydomain.org/c :/myfile은 blackbeauty.mydomain.org 자체를 제외한 어느 곳에서나 해석 할 필요가 없습니다. 로컬 네트워크의 다른 곳에서도 해결할 수있는 것은 좋지만 필수는 아닙니다. 그래서 이것은 기계를 "소유"하는 도메인 이름이있는 좋은 해결책입니다. 주소 지정이 불가능하거나 식별이 가능하지 않은 컴퓨터를 고유하게 식별 할 수있는 방법을 찾고 있습니다. 내가 알아야 할 것은 John이 어제와 같이 오늘 같은 컴퓨터에서 연결하고 있습니까? 쿠키는 부분적인 해결책입니다. –

+0

그래서 중앙 권한없이 시간이 지남에 따라 일정한 해당 시스템의 식별자를 원하십니까? file : // machinename/c를 사용할 때의 문제점을 이해하지 못한다. 그것은 중앙 권한이 없으며 시간이 지남에 따라 일정하며 지역 해결이 아닌 다른 용도로 사용될 필요가 없습니다. 언급 할 수 없거나 식별 할 필요가 없다고 말하면됩니다. 쿠키는 서버에서 발행 한 지속성 가방입니다. 로컬 컴퓨터에 이미 액세스 할 수 있으면 문제가 생깁니 까? 로컬 해결을 위해 브라우저를 사용하는 것을 언급하지 않는다면? – SerialSeb

관련 문제