왜 많은 네임 스페이스가 com으로 시작합니까?


45

많은 회사에서 "역 도메인 이름"네임 스페이스를 사용하고 있으며, 그 연습이 시작된 곳과 계속되는 이유가 궁금합니다. 그것은 단지 불완전한 연습 때문에 계속됩니까, 아니면 내가 여기서 놓칠 수있는 뛰어난 아키텍처 개념이 있습니까?

또한 https : //.com/questions/189209/do-you-really-use-your-reverse-domain-for-package-naming-in-java 와 같은 질문에 유의하십시오. 내 질문에 대답하지만 100은 아닙니다. %

(만약 당신이 기분이 나아진다면, 자바 스크립트 네임 스페이스 노력에 사용해야한다면 정말 궁금합니다. 그러나 그때와 왜 더 궁금합니다. 그리고 자바 스크립트 답변을 안내하는 데 도움이 될 것입니다. bene : "창")

폴더 및 파일로 확장하는이 실습의 예 : http://imgur.com/jtdXo


1
이것은 이상하다, 나는 이것을 전에 본 적이 없다. 지금 나는 궁금하다.
Jimmy Hoffa

답변:


54

리버스 도메인 표기법 은 Java에서 시작되었지만 Android 패키지, Mac OS X 패키지, JavaScript, ActionScript 등과 같은 많은 플랫폼에서 널리 사용됩니다.

실습은 네임 스페이스 소프트웨어를위한 분산 시스템을 제공하기 때문에 매우 유용합니다. 네임 스페이스를 위해 중앙 집중식 기관에 신청할 필요는 없습니다. 자신이 소유 한 도메인 이름 (역전)을 사용하여 조직 내에서 관리하십시오. 이와 같은 패키지 이름을 지정하면 코드가 다른 패키지와 충돌하지 않을 가능성이 거의 있습니다.

오라클의 자바 튜토리얼에서 :

회사는 역 인터넷 도메인 이름을 사용하여 패키지 이름을 시작합니다 (예 : example.com의 프로그래머가 만든 mypackage 패키지의 경우 com.example.mypackage).

단일 회사 내에서 발생하는 이름 충돌은 해당 회사 내 규칙에 따라 처리해야합니다 (예 : com.example.region.mypackage).

완전하고 완전한 네임 스페이스 이기 때문에 좋은 습관이 아닙니다 . Acme 라는 회사가 두 개이고 네임 스페이스를 선택한 경우 acme.코드가 충돌합니다. 그러나 이들 회사 중 하나만 acme.com 도메인을 소유 할 수 있으므로 com.acme.네임 스페이스 를 사용할 수 있습니다.

도메인 이름을 바꾸면 하향식 아키텍처가 가능합니다. com회사 (또는 .com 도메인 이름을 소유 한 사람)의 코드를 포함하고 그 아래에 회사 (도메인) 이름이 포함됩니다. 그런 다음 조직의 구조 및 / 또는 실제 네임 스페이스가 더 깊어집니다. (예를 들어, internal.acme.com 이라는 네트워크의 코드 인 경우이 부서에 자체 하위 네임 스페이스를 제공 com.acme합니다.)이 하향식 구조는 시스템 관리를 포함하여 여러 응용 프로그램에서 사용됩니다. (역 IP 주소 조회와 유사합니다.)

개인적으로 저는 회사에서 작성한 모든 새 JavaScript 코드에 사용합니다. 나중에 다른 회사에 대해 동일한 코드를 작성하더라도 코드가 다른 코드와 충돌하지 않도록합니다. 코드에 액세스하는 것이 번거로울 com.digitalfruition.수 있지만 (타이핑 은 조금 더 커질 수 있지만) 클로저 및 로컬 변수 ( var DF = com.digitalfruition)로 쉽게 해결할 수 있습니다 .


내 Android 앱의 임의 패키지 이름을 변경하거나 해당 도메인을 구매할 생각입니다. :(
jadkik94

123ABC.com과 같은 숫자로 시작하는 회사 이름을 갖는 문제를 해결할 수있는 방법을 찾은 사람이 있는지 궁금합니다.이 경우 어떤 이름 지정 규칙을 사용해야합니까? Java는 클래스 이름을 시작할 수 없습니다. 숫자?!
sorin

1
@sorin-패키지 이름의 관련 부분 앞에 밑줄을 붙입니다. 예, com._123ABC. 에서 예 docs.oracle.com/javase/tutorial/java/package/namingpkgs.html .
cxw

13

네임 스페이스를 사용하면 이름 충돌의 가능성이 엄청나게 줄어들고 도메인 이름 (이미 규제 된)을 사용하는 것이 글로벌 네임 스페이스 를 만드는 좋은 방법이기 때문 입니다.

네임 스페이스에서 도메인 부분을 뒤집 으면 정렬 가능하게됩니다. 네임 스페이스 유니버스의 작은 부분에 속하는 모든 이름이 함께 정렬됩니다.

마지막으로, TLD .com는 인터넷에서 가장 인기있는 TLD이므로 다른 TLD보다 많은 소프트웨어 개발자가 사용합니다.

어쨌든 실습은 각 클래스마다 자체 파일이 있어야하고 더 큰 생태계에서 클래스를 쉽게 자격을 유지할 수 있도록 글로벌 네임 스페이스 체계가 도입되어야하는 Java로 시작했습니다.


엄격하게 시행됩니까? com.xyz 패키지를 만들려고하는데 도메인을 소유하고 있지 않다고 가정하면 안드로이드가 그렇게하지 못하게합니까?
VarunAgw

@VarunAgw 아니, 당신은 더러운 충돌을 강제로 재생할 수 있습니다.
Martijn Pieters

충돌 이외에도 소규모 프로젝트에 OrgName.ProjectName을 사용하는 것이 더 합리적입니다.
VarunAgw

당신은 컨벤션 앞에서 날아갈 것이지만 그것은 당신의 전화입니다.
Martijn Pieters

2

엔디안

나는 자바 전문가는 아니지만 일반적인 패턴에 관해서는 빅 엔디안 대 리틀 엔디안의 은유 적으로 말하는 또 다른 순열입니다.

"엔디안 (endianness)"은 도메인 이름의 구성 요소 순서 (예 : 'en.wikipedia.org'(일반적인 현대 'little-endian'형식))와 역방향 DNS 'org.wikipedia.en'( 컴퓨터 시스템의 구성 요소, 패키지 또는 유형의 이름을 지정하는 데 사용되는 'big-endian'(예 : Java 패키지, Macintosh ".plist"파일 등). 호스트 부분이 'little-endian'DNS 이름 일 수 있지만 URL은 'big-endian'으로 간주 될 수 있습니다.

이 경우 아마도 자연적인 그룹화 / 트리 분기를 허용하기 위해 조직 목적으로 사용됩니다. 그것은 더 높은 수준의 정리를 유지하고 더 구체적인 세부 사항을 찾기 위해 파고 들었습니다.

대안은 매우 평평하고 의미 있고 잠재적으로 유용한 그룹화는 구조에 본질적인 것보다 해석되어야합니다.


7
골리, 들어 본 적이 엔디안 역 도메인 네임 스페이스 방식을 참조하는 데 사용 ...
마티 피에 터스에게

나는 동료가 대화에서 그것을 던지고 접선 토론을하기 전까지는 아니었다. 그는 위키피디아 (링크 된)를 언급 했으므로, 들어 본 적이없는 것 같습니다. 나는이 관점을 수용하기 위해 문자 그대로의 마음을 조금 쉬어야했다. 그러나 나는 그것을 살 수있다.
Ed Hastings

3
예, DNS 엔디안에 대한이 논의는 주기적으로 이루어집니다. 영국에서 이제 오래 전에 사라진 "Janus"네트워크는 그 반대 방향으로 이름이 붙여졌으며 ARPANet 군중은 항상 물건을 거꾸로 받았다고 말했습니다.
로스 패터슨

3
@RossPatterson : 파일 시스템, 운영 체제, 패싯 분류 시스템, 라이브러리 파일링 시스템, 전화 번호, 대부분 왼쪽에서 루트로 시작한 다음 더 구체적입니다. 대부분의 DNS 이름 서버 구성 파일조차도 그렇게합니다. 저는 Janus 군중에 동의합니다.
Jörg W Mittag

1
@RossPatterson 그들의 이름을봤을 때, Janus가 "올바른 방법"으로 간주되는 것에 대한 의견을 가지고 있다는 것에 놀랐습니다.
TRiG

0

.com TLD가 가장 인기있는 이유는 웹 초창기에는 Netscape Navigator와 같은 웹 브라우저가``com-appended ".com 인 경우입니다. 주소에서 누락되었습니다 (예 : 이름 조회에 실패한 경우). 따라서 "shareware"를 입력하면 " http://shareware.com "(또는 " http://www.shareware.com " 으로 확장되며 www 세부 사항은 기억 나지 않습니다). .com 도메인은 여전히 ​​가장 인기있는 도메인 일 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.