Seberapa penting menggunakan bahasa yang sama untuk klien dan server?


11

Saya telah mengevaluasi solusi arsitektur untuk proyek seluler yang akan memiliki layanan web / aplikasi di samping aplikasi asli dan telah melihat berbagai perpustakaan, kerangka kerja, dan tumpukan seperti Meteor , ini menjadi semacam "kerangka paket tumpukan terbuka" , erat terikat dengan Node.js .

Ada banyak pembicaraan tentang manfaat menggunakan bahasa yang sama baik dari sisi klien dan server, dan saya tidak mengerti. Saya bisa mengerti jika Anda ingin mencerminkan seluruh keadaan aplikasi web di kedua klien dan server tetapi berjuang untuk menemukan kemenangan lain ... Efisiensi alur kerja?

Saya mencoba memahami mengapa paritas bahasa klien / server dianggap sebagai grail suci. Mengapa paritas bahasa klien / server penting dalam pengembangan perangkat lunak?


12
Saya berpendapat ini tidak selalu merupakan hal yang hebat, terutama ketika JavaScript adalah bahasa yang dipertanyakan.
Latty

4
Saya harus mengakui bahwa saya belum mencapai momen pencerahan dengan JS dan karena itu belum memahami mengapa Anda ingin menulis kode server dengan itu, tapi itu topik lain ..
Makita

1
Terima kasih telah membuat posting pertama Anda tentang Pemrogram Stack Exchange. Untuk informasi lebih lanjut tentang memaksimalkan suara naik dan meminimalkan suara turun, baca FAQ. Anda mungkin tidak dipilih karena pertanyaan Anda lebih merupakan topik obrolan daripada sesuatu dengan jawaban tertentu. Perlu waktu untuk membiasakan diri dengan format di sini. Jawaban singkat yang tanpa detail tidak dapat dipilih. Begitu juga jawaban yang memperdebatkan suatu topik. Ada beberapa jalan tengah di mana pertanyaan atau jawaban itu spesifik tetapi cukup universal dan menyentuh topik dengan jumlah detail yang tepat.
Pengembang

1
Saya bahkan akan membantahnya. Dengan menggunakan bahasa yang sama untuk server dan klien, Anda berisiko terjerat dan fitur khusus bahasa dalam komunikasi.
Pieter B

3
@Makita Saya pikir ini adalah pertanyaan yang valid, tetapi orang-orang cenderung senang dengan downvotes ketika meminta contoh. Saya menghapus bagian-bagian tertentu dari pertanyaan awal dan memfokuskan pertanyaan Anda di sekitar mengapa masalah kesamaan bahasa klien / server.
maple_shaft

Jawaban:


5

Di sisi PRO:

  • Jika skema dan kode dapat digunakan kembali oleh kedua belah pihak, ada banyak efisiensi dalam mengimplementasikan logika dan data yang sama hanya sekali.

Di sisi CON:

  • Klien mungkin terutama pandangan yang sangat cocok untuk bahasa mark up atau skrip, sementara server mungkin terutama logika bisnis yang lebih cocok untuk bahasa yang berbeda.

Dalam pengembangan web, bahasa telah berkembang, menciptakan alat yang kuat untuk bagian-bagian tertentu dari sistem serta kebutuhan akan banyak spesialisasi untuk dipelajari oleh pengembang atau tim pengembang. Di bidang lain seperti pemrosesan transaksi atau sistem tertanam yang mengikuti pendekatan sistem desain sistem, mungkin ada penghematan dari bahasa yang sama.

Kerangka kerja Javascript baru tampaknya datang kepada kami dengan sangat cepat, dan beberapa pekerjaan dilakukan untuk menggabungkan API untuk ujung belakang dan alat untuk ujung depan. Mungkin pintar untuk menjaga fleksibilitas dan pemisahan kekhawatiran antara kode sisi klien dan server sehingga Anda bebas melayang di antara mereka tanpa terlalu terjebak terlalu lama dengan alat tertentu.


14

Mungkin manfaat yang dirasakan adalah:

yaitu membuat manajemen sumber daya lebih mudah bagi manajer proyek dan memiliki sedikit atau tidak ada manfaat teknis (bahkan mungkin manfaat teknis negatif jika Anda mempekerjakan sekelompok kuda poni satu trik)


1
Ini bermanfaat jika Anda mengembangkan sendiri, karena tidak ada "mental" beralih antara server dan klien. Jika Anda ingin melakukan sesuatu dan memiliki pengalaman besar dalam JavaScript, Anda mungkin mendapatkan hasil yang lebih baik dan lebih cepat dengan cara ini, tapi mungkin itu saja ...
K ..

Apakah Anda juga mengatakan bahwa tidak ada kerugian teknis, mungkin keuntungan menggunakan bahasa yang berbeda untuk setiap subsistem tunggal?
Michael Borgwardt

1
@MichaelBorgwardt mengasumsikan setiap bahasa cocok untuk subsistem. Saya akan mengatakan ya, tidak ada kerugian teknis (mungkin juga tidak banyak keuntungan), tetapi mungkin ada dampak besar pada dinamika tim dan perekrutan. tentu saja mayoritas subsistem akan sangat mudah diimplementasikan dalam bahasa apa pun jadi saya tidak akan berharap untuk melihat ekstrim ini.
jk.

Pernyataan tentang ini sebagai ide yang buruk tidak bisa dibenarkan. Ada banyak bahasa yang dapat dikompilasi ke JavaScript dan bahasa sisi-server, termasuk Lisp , yang sebenarnya adalah bahasa yang digunakan dalam kursus SICP yang dipuji oleh posting blog Joel.
back2dos

@ back2dos mudah-mudahan itu menjelaskannya
jk.

2

Manfaatnya adalah Anda dapat menggunakan kembali (untuk beberapa hal) keahlian dan kode orang di kedua sisi.

Orang-orang

Pengembang perlu menguasai satu bahasa dan membentuk satu kumpulan. Daripada dua kelompok keahlian. Ini membuatnya lebih mudah untuk mentransfer pengetahuan di antara mereka, dan juga memungkinkan mereka beralih pekerjaan mereka antara sisi klien dan server lebih mudah. Terakhir, ini memfasilitasi komunikasi dengan anggota tim "pihak lain" ketika membahas masalah teknis karena mereka memiliki latar belakang teknis yang sama.

Kode

Kadang-kadang berguna untuk memiliki beberapa keadaan di sisi klien, atau algoritma, atau keduanya. Terkadang, hal yang sama dilakukan di kedua sisi. Mari kita ambil contoh game multi-pemain: Anda harus mewakili status permainan pada klien dan server. Juga, Anda perlu menerapkan aturan di sisi klien (untuk responsif) dan juga di sisi server (untuk memvalidasi tindakan pemain). Mampu menggunakan kembali kode untuk hal-hal ini bisa menjadi keuntungan besar. ... di beberapa aplikasi lain, Anda tidak akan memerlukan ini sama sekali ... semuanya tergantung pada kasingnya.

... tentu saja ada juga kerugiannya, tapi itu untuk posting lain;)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.