Dlaczego tak wiele przestrzeni nazw zaczyna się od com


45

Zauważyłem, że wiele firm używa przestrzeni nazw „odwrotna nazwa domeny” i jestem ciekawy, skąd ta praktyka się wzięła i dlaczego trwa. Czy kontynuuje to tylko z powodu praktyki głosowania, czy też istnieje wyjątkowa koncepcja architektury, której mógłbym tu brakować?

Zwróć także uwagę na pytania, takie jak: https://stackoverflow.com/questions/189209/do-you-really-use-your-reverse-domain-for-package-naming-in-java, które odpowiadają na moje pytanie, ale nie 100 %

(Jeśli to sprawi, że poczujesz się lepiej, jestem naprawdę ciekawy, czy powinienem go używać do moich wysiłków w zakresie przestrzeni nazw javascript, ale jestem bardziej ciekawy, kiedy i dlaczego, i to powinno pomóc mi w odpowiedzi na odpowiedź javascript, nota bene: „okno”)

Przykład tej praktyki obejmującej foldery i pliki: http://imgur.com/jtdXo


1
To dziwne, nigdy wcześniej tego nie widziałem ... teraz jestem ciekawy.
Jimmy Hoffa,

Odpowiedzi:


54

Odwrotna notacja domen ma swoje początki w Javie, ale jest szeroko stosowana na wielu platformach, takich jak Pakiety Androida, Pakiety Mac OS X, JavaScript, ActionScript i inne.

Ta praktyka jest niezwykle przydatna, ponieważ zapewnia zdecentralizowany system oprogramowania do przestrzeni nazw. Nie trzeba składać wniosku do scentralizowanej agencji o przestrzeń nazw; wystarczy użyć nazwy domeny (odwróconej) i zarządzać nią we własnej organizacji. Nazewając takie pakiety, można być niemal pewnym, że kod nie będzie kolidował z innymi pakietami.

Z samouczków Java Oracle :

Firmy używają swojej odwróconej nazwy domeny internetowej do rozpoczynania nazw swoich pakietów, na przykład com.example.mypackage dla pakietu o nazwie mypackage utworzonego przez programistę w example.com.

Kolizje nazw występujące w obrębie jednej firmy muszą być obsługiwane przez konwencję w ramach tej firmy, być może poprzez dołączenie regionu lub nazwy projektu po nazwie firmy (na przykład com.example.region.mypackage).

To coś więcej niż zwykła praktyka, to dobra praktyka, ponieważ jest to kompletna i w pełni specyficzna przestrzeń nazw. Gdyby istniały dwie firmy o nazwie Acme i obie wybrały przestrzeń nazw acme., ich kod byłby w konflikcie. Ale tylko jedna z tych firm może posiadać domenę acme.com , więc mogą korzystać z com.acme.przestrzeni nazw.

Odwrócenie nazwy domeny pozwala na odgórną architekturę. comzawierałby kod firm (lub każdego, kto jest właścicielem nazwy domeny .com), a pod nimi nazwy firm (domeny). Następnie głębiej w tej strukturze byłaby struktura organizacji i / lub rzeczywista przestrzeń nazw. (Na przykład, jeśli był to kod z sieci o nazwie internal.acme.com , który nadaje temu działowi własną podprzestrzeń nazw com.acme.) Ta odgórna struktura jest używana w wielu aplikacjach, w tym w administracji systemów. (Jest to podobne do wyszukiwania wstecznego adresu IP).

Osobiście używam go do całego nowego kodu JavaScript, który piszę dla mojej firmy. Zapewnia to, że kod nigdy nie będzie w konflikcie z żadnym innym kodem, nawet jeśli później napiszę ten sam kod dla innej firmy. Może to utrudnić dostęp do kodu (pisanie com.digitalfruition.może trochę się wydłużyć), ale można to łatwo obejść za pomocą zamknięcia i zmiennej lokalnej ( var DF = com.digitalfruition).


Powinienem pomyśleć o zmianie losowej nazwy mojej aplikacji na Androida ... lub o zakupie tej domeny. :(
jadkik94 28.12.12

Zastanawiam się, czy ktokolwiek znalazł sposób na rozwiązanie problemu posiadania nazwy firmy zaczynającej się od numeru takiego jak 123ABC.com, jakiej konwencji nazewnictwa należy użyć w tym przypadku, w którym Java nie pozwala mieć nazwy klasy zaczynającej się od numer?!
sorin

1
@sorin - poprzedź odpowiednią część nazwy pakietu znakiem podkreślenia. Np com._123ABC. Przykłady na docs.oracle.com/javase/tutorial/java/package/namingpkgs.html .
cxw

13

Wynika to z faktu, że używanie przestrzeni nazw ogromnie zmniejsza ryzyko konfliktów nazw, a także dlatego, że używanie nazwy domeny (która została już uregulowana) jest dobrym sposobem na utworzenie globalnej przestrzeni nazw.

Odwracając część domeny w przestrzeni nazw, czynisz ją sortowalną; wszystkie nazwy należące do twojej małej części wszechświata przestrzeni nazw są posortowane razem.

I na koniec, TLD .comjest najpopularniejszą TLD w Internecie, więc jest używana przez większą liczbę programistów niż jakakolwiek inna TLD.

W każdym razie praktyka rozpoczęła się od języka Java, w którym każda klasa musi mieć własny plik, a do grania w większym ekosystemie wprowadzono globalny schemat przestrzeni nazw, aby ułatwić klasyfikację klas.


Czy jest to ściśle egzekwowane? Załóżmy, że próbuję utworzyć pakiet com.xyz, ale nie posiadam domeny, czy Android nie pozwoli mi tego zrobić?
VarunAgw

@VarunAgw nie, możesz grać w brudne i wymuszać konflikty.
Martijn Pieters

Poza konfliktami sensowniejsze jest użycie OrgName.ProjectName w przypadku małych projektów
VarunAgw

Leciałbyś w obliczu konwencji, ale to twój telefon.
Martijn Pieters

2

Endianness

Nie jestem ekspertem od Java, ale jeśli chodzi o ogólny wzorzec, jest to po prostu kolejna kombinacja big-endian kontra little-endian, mówiąc metaforycznie.

„Endianness” jest czasami używany do opisania kolejności składników nazwy domeny, np. „En.wikipedia.org” (zwykła nowoczesna forma „little-endian”) w porównaniu do odwrotnego DNS „org.wikipedia.en” ( „big-endian”, używany do nazywania komponentów, pakietów lub typów w systemach komputerowych, na przykład pakietów Java, plików „.plist” na komputerach Macintosh itp.). Adresy URL można uznać za „big-endian”, nawet jeśli część hosta może być nazwą DNS „little-endian”.

W tym przypadku przypuszczalnie w celach organizacyjnych umożliwia naturalne grupowanie / rozgałęzianie drzew. Utrzymuje porządek na wyższym poziomie, a ty kopiesz w celu uzyskania bardziej szczegółowych szczegółów.

Alternatywa byłaby bardzo płaska, a sensowne / potencjalnie przydatne grupowanie musiałoby być interpretowane w przeciwieństwie do bycia nieodłącznym elementem struktury.


7
Golly, nigdy nie słyszałem, że endianness odnosi się do odwrotnego systemu nazw domen.
Martijn Pieters,

Ja też tego nie zrobiłem, dopóki kolega nie wyrzucił tego w rozmowie i nie rozpoczął dyskusji stycznej. Odsłonił wikipedię (w powiązaniu z), więc najwyraźniej nie jest to niespotykane. Musiałem trochę rozluźnić swój dosłowny umysł, aby uwzględnić ten punkt widzenia, ale mogę z tym żyć.
Ed Hastings,

3
Tak, ta dyskusja na temat endianizmu DNS pojawia się okresowo. Od dawna nieobecna sieć „Janus” w Wielkiej Brytanii miała na odwrót swoje nazwy i zawsze mówili, że tłum ARPANet ma odwrotną sytuację.
Ross Patterson

3
@RossPatterson: Systemy plików, systemy operacyjne, fasetowane systemy klasyfikacji, biblioteczne systemy archiwizacji, numery telefonów, większość z nich zaczyna się od katalogu głównego po lewej stronie, a następnie staje się bardziej szczegółowa. Heck, nawet większość plików konfiguracyjnych serwera nazw DNS robi to w ten sposób. Zgadzam się z tłumem Janusa.
Jörg W Mittag,

1
@RossPatterson Biorąc pod uwagę ich nazwę, jestem zaskoczony, że Janus ma opinię na temat tego, co liczy się jako „właściwa droga”.
TRiG

0

Myślę, że w innych odpowiedziach nie wspomniano o drobnych szczegółach: Powodem, dla którego .com TLD jest najbardziej popularny, jest to, że we wczesnych dniach Internetu przeglądarki internetowe takie jak Netscape Navigator „automatycznie dołączały” .com, jeśli brakowało go w adresie (np. jeśli wyszukiwanie nazwy nie powiodło się). Więc jeśli wpiszesz „shareware”, zostanie ono rozwinięte do „ http://shareware.com ” (lub „ http://www.shareware.com ”; nie pamiętam szczegółów www). Domeny .com są prawdopodobnie nadal najbardziej popularne.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.