Чому так багато просторів імен починається з ком


45

Я помітив, що багато компаній використовують простори імен "зворотне доменне ім'я", і мені цікаво, звідки ця практика виникла і чому вона триває. Це просто продовжується через практику рота, чи існує видатна архітектурна концепція, якої я тут може бути відсутнім?

Також зверніть увагу на такі питання, як: https://stackoverflow.com/questions/189209/do-you-really-use-your-reverse-domain-for-package-naming-in-java, який відповідає на моє запитання, але не 100 %

(Якщо змушує вас почувати себе краще, мені дуже цікаво, чи варто мені використовувати це для моїх зусиль з розширення імен JavaScript, але мені цікавіше, коли і чому, і це повинно допомогти мені направити відповідь на javascript, nota bene: "вікно")

Приклад цієї практики, що поширюється на папки та файли: http://imgur.com/jtdXo


1
Це дивно, я цього раніше ніколи не бачив .. зараз мені цікаво.
Джиммі Хоффа

Відповіді:


54

Зворотна нотація домену бере свій початок у Java, але широко використовується у багатьох платформах, таких як Android Packages, Mac OS X Packages, JavaScript, ActionScript тощо.

Практика надзвичайно корисна, оскільки забезпечує децентралізовану систему програмного забезпечення для простору імен. Немає необхідності звертатися до централізованого агентства щодо простору імен; просто використовуйте доменне ім’я, яке ви є власником (зворотним) та керуйте цим у власній організації. Називаючи такі пакети, можна бути майже впевненим, що код не буде конфліктувати з іншими пакетами.

З навчальних посібників Java Oracle :

Компанії використовують своє перетворене доменне ім’я Інтернет для початку імен пакунків, наприклад, com.example.mypackage для пакету з іменем mypackage, створеного програмістом на example.com.

Зіткнення з іменами, що виникають у межах однієї компанії, повинні вирішуватися конвенцією в межах цієї компанії, можливо, включаючи регіон або назву проекту за назвою компанії (наприклад, 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, але не володію доменом, чи перешкодить мені Android робити це?
VarunAgw

@VarunAgw nope, ви можете грати брудно і змушувати конфлікти.
Martijn Pieters

Окрім конфліктів, має сенс використовувати OrgName.ProjectName для малих проектів тоді
VarunAgw

Ви б летіли перед умовами, але це ваш дзвінок.
Martijn Pieters

2

Ендіанство

Я не експерт з Java, але що стосується загальної закономірності, це лише чергова перестановка метафорично кажучи від великого ендіана проти малого ендіана.

"Endianness" іноді використовується для опису порядку компонентів доменного імені, наприклад, "en.wikipedia.org" (звичайна сучасна форма "мало-ендіан") проти зворотного DNS "org.wikipedia.en" ( 'big-endian', який використовується для іменування компонентів, пакетів або типів у комп'ютерних системах, наприклад, пакети Java, файли Macintosh ".plist" тощо). URL-адреси можна вважати "великими-ендіанськими", навіть якщо хост-частина може бути "маленьким-ендіанським" іменем DNS.

У цьому випадку це, мабуть, для організаційних цілей, щоб забезпечити природне групування / розгалуження дерев. Це підтримує впорядкованість на більш високому рівні, і ви викопуєте детальнішу інформацію.

Альтернатива була б дуже плоскою, і змістовне / потенційно корисне групування повинно бути інтерпретоване, а не суттєвим для структури.


7
Голлі, ніколи не чула витривалості, що використовується для позначення схеми простору імен з реверсним доменом ..
Martijn Pieters

У мене теж не було, доки колега не викинув це в розмові і породив якусь дотичну дискусію. Він переглянув вікіпедію (як це пов’язано), так що, мабуть, це не є нечуваним. Мені довелося трохи розслабити розум, щоб пристосувати цю точку зору, але я можу з цим жити.
Ед Гастінгс

3
Так, ця дискусія про DNS-підступність періодично виникає. У давно відійшла мережі "Янус" у Великобританії свої назви були навпаки, і вони завжди казали, що натовп ARPANet повертає справи назад.
Росс Паттерсон

3
@RossPatterson: файлові системи, операційні системи, системи гранічної класифікації, системи бібліотечних файлів, номери телефонів, більшість з яких починається з кореня зліва, а потім стає більш конкретним. Гек, навіть більшість файлів конфігурації сервера імен DNS роблять це так. Отже, я погодився б із натовпом Януса.
Йорг W Міттаг

1
@RossPatterson Враховуючи їх ім’я, я здивований, що Янус має думку про те, що вважається "правильним способом".
TRiG

0

Я думаю, що в інших відповідях незначна деталь не згадується: Причина того, що .com TLD є найпопулярнішим, полягає в тому, що в перші дні Інтернету веб-браузери, такі як Netscape Navigator, "автоматично додаються" .com якщо він не був вказаний в адресі (наприклад, якщо пошук імені не вдався). Отже, якщо ви ввели "умовно-популярне", воно буде розширене на " http://shareware.com " (або " http://www.shareware.com "; я не пам'ятаю www деталей). .com домени, ймовірно, все ще є найпопулярнішими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.