Saya telah melihat pertanyaan (terutama di Stack Overflow), yang tidak memiliki pengetahuan dasar ini. Inti dari pertanyaan ini adalah untuk memberikan informasi yang baik bagi mereka yang mencarinya, dan mereka yang merujuknya.
Dalam konteks pemrograman web, apa perbedaan antara pemrograman sisi server dan pemrograman sisi klien? Bahasa mana yang termasuk di dalamnya, dan kapan Anda menggunakannya?
web-development
server-side
client-side
Madara Uchiha
sumber
sumber
Jawaban:
Latar Belakang
Pengembangan web adalah tentang komunikasi. Dalam hal ini, komunikasi antara dua (2) pihak, melalui protokol HTTP:
Pemrograman masing-masing pihak, mengacu pada kode yang berjalan pada mesin tertentu, server atau klien.
Contoh dasar
Pemrograman
Pemrograman sisi server
Pemrograman sisi server, adalah nama umum untuk jenis program yang dijalankan pada Server .
Penggunaan
Bahasa Contoh
Pemrograman sisi klien
Sama seperti sisi server, pemrograman sisi Klien adalah nama untuk semua program yang dijalankan pada Klien .
Penggunaan
Bahasa contoh
* HTML dan CSS tidak benar-benar "bahasa pemrograman" per-se. Itu adalah sintaks markup yang digunakan Klien untuk membuat halaman untuk Pengguna .
sumber
Dalam kata-kata awam:
Di sini saya hanya akan berbicara tentang pemrograman web.
Pemrograman sisi klien sebagian besar berkaitan dengan antarmuka pengguna, yang dengannya pengguna berinteraksi. Dalam pengembangan web itu adalah browser, di mesin pengguna, yang menjalankan kode, dan itu terutama dilakukan dalam javascript, flash, dll. Kode ini harus dijalankan di berbagai browser.
Tugas utamanya adalah:
Orang yang bertanggung jawab atas pemrograman ujung depan harus tahu :
Pemrograman sisi server berkaitan dengan menghasilkan konten dinamis. Ini berjalan di server. Banyak dari server ini "tanpa kepala". Sebagian besar halaman web tidak statis, mereka mencari database untuk menunjukkan informasi pribadi yang diperbarui kepada pengguna. Sisi ini berinteraksi dengan ujung belakang, seperti misalnya, basis data.
Pemrograman ini dapat dilakukan dalam banyak bahasa:
Kode ini berkaitan dengan:
Orang yang bertanggung jawab atas pemrograman sisi server harus tahu:
sumber
Jawaban lain terfokus pada apa yang client-side dan pemrograman server-side: bahasa apa sebagian besar digunakan, tugas apa yang harus dicapai, dll
Ini benar sekali, tetapi saya kehilangan sedikit fokus pada apa perbedaan antara kedua jenis pemrograman, dalam konteks pemrograman web. Biarkan saya mencoba mengatasinya.
Keamanan dan izin
Dalam pemrograman sisi klien, Anda tidak memiliki akses ke sistem lengkap, karena masalah keamanan. Pengguna tidak perlu memercayai setiap bagian dari kode yang diunduh dari web dan dieksekusi di mesinnya, dan ini adalah tujuan desain utama dari lingkungan sisi klien (browser dan mesin JavaScript): untuk menyediakan lingkungan yang terisolasi di mana kode klien dapat dijalankan tetapi tidak dapat mengakses apa pun di luar lingkup yang diizinkan.
Dalam pemrograman sisi server, adalah praktik yang baik untuk juga membatasi akses setiap aplikasi ke sistem yang mendasarinya, tetapi ini jauh lebih sedikit diberlakukan pada Anda, karena pada akhirnya, Anda atau perusahaan Anda mengendalikan sistem itu. Desain 'kandang terisolasi' ini tidak terintegrasi ke dalam alat dan bahasa pemrograman sisi server, tetapi diselesaikan melalui pengaturan instalasi (menggunakan pengguna khusus dengan izin terbatas, memilih port yang memerlukan atau tidak memerlukan izin root, dll).
Penyebaran dan platform
Dalam pemrograman sisi server, penyebaran harus terjadi dari luar kode Anda, menggunakan beberapa jenis alat (bahkan jika itu
make install
atau agit clone
), dan penyebaran ini biasanya manual - atau setidaknya, diharapkan terjadi dalam semi-diawasi cara. Sistem (artinya OS) di mana Anda menyebarkan biasanya seragam di sejumlah mesin, tetapi dapat sangat disesuaikan dengan kebutuhan Anda.Dalam pemrograman sisi klien, penyebaran terjadi dari kode sisi server Anda, yang melayani klien secara otomatis dan tanpa pengawasan. Sistem yang mendasarinya (terutama browser) bisa sangat berbeda di banyak mesin. Agar penyebaran bisa dilakukan, standar harus dijaga, dan ada kecenderungan yang lebih kuat untuk satu bahasa dan lingkungan.
Inilah sebabnya mengapa menyalin kode sisi server dari satu mesin ke komputer lain dapat memakan waktu berminggu-minggu, sementara kode sisi klien biasanya sepele untuk dieksekusi di mesin yang berbeda.
Efek negara dan sekunder
(Penafian: sejauh ini ini adalah titik paling subyektif dari semua. Mungkin ada banyak aspek yang salah dalam argumentasi saya. Ini hanya hipotesis yang menarik, dalam pandangan saya.)
Dalam pemrograman sisi server, keadaan adalah masalah yang jauh lebih besar, artinya bagaimana mengambil dan memperbarui data atas permintaan pengguna dengan kemungkinan konflik karena konkurensi. Bahkan jika sebagian besar kompleksitas ini diturunkan ke server database, itu adalah tanggung jawab kode sisi-server untuk memungkinkan database menjaga jaminannya pada integritas data dengan menggunakan antarmuka dengan benar (mis. Tidak menggunakan cache untuk pembaruan yang tidak pernah dilihat oleh DB), sementara itu juga merupakan tujuan dari kode sisi server untuk tidak membebani database dengan pekerjaan dan membuat pengguna menunggu tanggapan.
Dalam pemrograman sisi klien, menyajikan hasil kepada pengguna adalah masalah yang jauh lebih besar, dan ini menyiratkan efek sekunder (sebagian besar mencetak ke layar). Ini bukan untuk mengatakan bahwa tidak ada keadaan yang terlibat (misalnya cookie), hanya bahwa tujuan utama dari kode ini adalah untuk benar-benar berinteraksi dengan pengguna, dan ini tidak dapat terjadi tanpa efek sekunder.
Inilah sebabnya mengapa pemrograman sisi klien biasanya memerlukan (pada titik tertentu) melihat layar dengan demo, untuk memeriksa bahwa semua warna dan tata letak sudah benar, sementara pemrograman sisi server dapat terjadi hampir secara eksklusif di lingkungan berorientasi teks, di mana otomatis tes memeriksa bahwa logika masih melakukan apa yang seharusnya dilakukan.
sumber
Ini sama sekali tidak dimaksudkan untuk menjadi jawaban yang diterima; alih-alih saya menawarkannya sebagai poin pelengkap (dalam menanggapi
when do you use each of them
pertanyaan) yang belum disebutkan dalam jawaban lain sejauh ini, yaitu:Perlindungan kekayaan intelektual
Kode sumber yang berada di sisi klien (seperti dalam Javascript) mudah dibaca dan / atau mampu direkayasa ulang jika telah dikaburkan.
Namun, kode sumber yang berada di sisi server dapat dengan aman melindungi algoritma kepemilikan dan hanya mengembalikan hasilnya; semacam kotak hitam.
sumber