Mengapa banyak ruang nama dimulai dengan com

45

Saya perhatikan bahwa banyak perusahaan menggunakan ruang nama "reverse domain name" dan saya ingin tahu dari mana praktik itu berasal dan mengapa itu terus berlanjut. Apakah ini hanya berlanjut karena praktik hafalan, atau ada konsep arsitektur yang luar biasa yang mungkin saya lewatkan di sini?

Perhatikan juga pertanyaan seperti: https://stackoverflow.com/questions/189209/do-you-really-use-your-reverse-domain-for-package-naming-in-java yang semacam menjawab pertanyaan saya tetapi tidak 100 %

(Jika itu membuat Anda merasa lebih baik, saya benar-benar ingin tahu apakah saya harus menggunakannya untuk upaya penentuan nama javascript saya, tapi saya lebih penasaran tentang kapan dan mengapa, dan itu akan membantu membimbing saya pada jawaban javascript, nota bene: "jendela")

Contoh praktik ini meluas ke folder dan file: http://imgur.com/jtdXo

jcolebrand
sumber
1
Ini aneh, saya belum pernah melihat ini sebelumnya .. sekarang saya ingin tahu.
Jimmy Hoffa

Jawaban:

54

Reverse Domain Notation berasal dari Jawa, tetapi banyak digunakan di banyak platform, seperti Paket Android, Paket Mac OS X, JavaScript, ActionScript, dan banyak lagi.

Praktek ini sangat berguna karena menyediakan sistem yang terdesentralisasi untuk perangkat lunak namespacing. Tidak perlu menerapkan ke agen terpusat untuk namespace; cukup gunakan nama domain yang Anda miliki (terbalik) dan kelola di dalam organisasi Anda sendiri. Dengan menamai paket-paket seperti ini, seseorang dapat hampir yakin bahwa kode tersebut tidak akan bertentangan dengan paket-paket lain.

Dari Tutorial Java Oracle :

Perusahaan menggunakan nama domain Internet terbalik mereka untuk memulai nama paket mereka misalnya, com.example.mypackage untuk paket bernama mypackage yang dibuat oleh seorang programmer di example.com.

Tabrakan nama yang terjadi dalam satu perusahaan perlu ditangani dengan konvensi di dalam perusahaan itu, mungkin dengan memasukkan wilayah atau nama proyek setelah nama perusahaan (misalnya, com.example.region.mypackage).

Ini lebih dari sekadar praktik hafalan, ini praktik yang baik karena namespace yang lengkap dan sepenuhnya spesifik . Jika ada dua perusahaan bernama Acme dan keduanya memilih namespace acme., kode mereka akan konflik. Tetapi hanya satu dari perusahaan tersebut yang dapat memiliki domain acme.com , sehingga mereka dapat menggunakan com.acme.namespace.

Membalikkan nama domain memungkinkan untuk arsitektur top-down. comakan berisi kode untuk perusahaan (atau siapa pun yang memiliki nama domain .com), dan di bawahnya adalah nama perusahaan (domain). Kemudian, lebih dalam di dalamnya adalah struktur organisasi dan / atau namespace yang sebenarnya. (Misalnya, jika itu adalah kode dari jaringan yang disebut internal.acme.com , yang memberikan departemen ini sub-namespace mereka sendiri com.acme.) Struktur top-down ini digunakan dalam sejumlah aplikasi, termasuk dalam administrasi sistem. (Ini mirip dengan membalikkan lookup alamat IP.)

Secara pribadi, saya menggunakannya untuk semua kode JavaScript baru yang saya tulis untuk perusahaan saya. Ini memastikan bahwa kode tidak akan pernah bertentangan dengan kode lain, bahkan jika saya nanti menulis kode yang sama untuk perusahaan lain. Itu dapat membuat mengakses kode rumit (mengetik com.digitalfruition.bisa mendapatkan banyak) tetapi itu dapat dengan mudah dikerjakan dengan penutupan dan variabel lokal ( var DF = com.digitalfruition).

Josh
sumber
Saya harus berpikir untuk mengubah nama paket acak dari aplikasi Android saya ... atau membeli domain itu. :(
jadkik94
Saya bertanya-tanya apakah ada yang menemukan cara untuk memecahkan masalah memiliki nama perusahaan yang dimulai dengan nomor seperti 123ABC.com, konvensi penamaan apa yang harus Anda gunakan dalam kasus ini, di mana Java tidak akan mengizinkan Anda untuk memiliki nama kelas yang dimulai dengan sebuah angka?!
sorin
1
@sorin - awali bagian yang relevan dari nama paket Anda dengan garis bawah. Misalnya com._123ABC,. Contoh di docs.oracle.com/javase/tutorial/java/package/namingpkgs.html .
cxw
13

Itu karena menggunakan ruang nama mengurangi kemungkinan konflik nama secara luar biasa, dan karena menggunakan nama domain Anda (yang telah diatur) adalah cara yang baik untuk membuat namespace global .

Dengan membalikkan bagian domain di namespace, Anda membuatnya dapat diurutkan; semua nama yang termasuk bagian kecil Anda dari jagat namespace diurutkan bersama.

Dan yang tak kalah pentingnya, TLD .comadalah TLD paling populer di internet, jadi itu digunakan oleh lebih banyak pengembang perangkat lunak daripada TLD lainnya.

Bagaimanapun, praktiknya dimulai dengan Java, di mana setiap kelas perlu memiliki file sendiri, dan untuk bermain dalam ekosistem yang lebih besar, skema namespace global diperkenalkan untuk membantu menjaga kelas agar mudah dikualifikasi.

Martijn Pieters
sumber
Apakah ini diberlakukan secara ketat? Misalkan saya mencoba membuat paket com.xyz tetapi tidak memiliki domain, apakah android akan mencegah saya melakukannya?
VarunAgw
@ VarunAgw tidak, Anda bisa bermain kotor dan memaksakan konflik.
Martijn Pieters
Selain konflik, lebih masuk akal untuk menggunakan OrgName.ProjectName untuk proyek kecil saat itu
VarunAgw
Anda akan terbang dalam menghadapi konvensi, tetapi itu adalah panggilan Anda.
Martijn Pieters
2

Endianness

Saya bukan ahli java, tetapi untuk pola umum ini hanyalah permutasi dari big-endian vs little-endian, secara metaforis.

"Endianness" kadang-kadang digunakan untuk menggambarkan urutan komponen nama domain, misalnya 'en.wikipedia.org' (bentuk 'little-endian' modern yang biasa) dibandingkan dengan reverse-DNS 'org.wikipedia.en' ( 'big-endian', digunakan untuk memberi nama komponen, paket, atau tipe dalam sistem komputer, misalnya paket Java, file ".plist" Macintosh, dll.). URL dapat dianggap 'big-endian', meskipun bagian host bisa berupa nama DNS 'little-endian'.

Dalam hal ini, mungkin untuk tujuan organisasi untuk memungkinkan pengelompokan alami / percabangan pohon. Itu membuat hal-hal tetap rapi di tingkat yang lebih tinggi, dan Anda menggali untuk detail yang lebih spesifik.

Alternatifnya akan sangat datar, dan pengelompokan yang bermakna / berpotensi berguna harus ditafsirkan vs menjadi intrinsik dengan struktur.

Ed Hastings
sumber
7
Astaga, tidak pernah terdengar endianness digunakan untuk merujuk pada skema namespace reverse-domain ..
Martijn Pieters
Aku juga belum, sampai seorang kolega membuangnya dalam percakapan dan menelurkan beberapa diskusi singgung. Dia merujuk ke wikipedia (yang ditautkan dengan), jadi tampaknya itu bukan hal yang tidak pernah terjadi. Saya harus sedikit merilekskan pikiran harafiah saya untuk mengakomodasi sudut pandang ini, tetapi saya bisa hidup dengannya.
Ed Hastings
3
Ya, diskusi tentang endianness DNS ini muncul secara berkala. Jaringan "Janus" yang sekarang telah lama hilang di Inggris memiliki nama lain, dan mereka selalu mengatakan kerumunan ARPANet mendapatkan hal-hal yang terbelakang.
Ross Patterson
3
@RossPatterson: Sistem File, Sistem Operasi, Sistem Klasifikasi Segi, Sistem Pengarsipan Perpustakaan, nomor telepon, kebanyakan dari mereka mulai dengan root di sebelah kiri dan kemudian mendapatkan lebih spesifik. Heck, bahkan sebagian besar file konfigurasi server nama DNS melakukannya dengan cara itu. Jadi, saya setuju dengan kerumunan Janus.
Jörg W Mittag
1
@RossPatterson Diberi nama mereka, saya terkejut bahwa Janus memiliki pendapat tentang apa yang dianggap sebagai "jalan yang benar".
TRiG
0

Saya pikir detail kecil tidak disebutkan dalam jawaban lain: Alasan bahwa .com TLD adalah yang paling populer, adalah bahwa pada masa awal Web, browser web seperti Netscape Navigator "ditambahkan otomatis" .com jika itu tidak ada dalam alamat (mis. jika pencarian nama gagal). Jadi jika Anda mengetik "shareware", itu akan diperluas ke " http://shareware.com " (atau " http://www.shareware.com "; Saya tidak ingat detail www). Domain .com mungkin masih yang paling populer.


sumber