Diğer cevaplar , müşteri tarafı ve sunucu tarafı programlamanın ne olduğuna odaklandı : en çok hangi dillerin kullanıldığı, hangi görevlerin yapılması gerektiği vb.
Bu kesinlikle doğru, ancak web programlama bağlamında her iki programlama türü arasındaki farkın ne olduğuna odaklanmayı özlüyorum . Bunu ele almaya çalışmama izin ver.
Güvenlik ve izinler
İstemci tarafı programlamada, güvenlik endişeleri nedeniyle tam sisteme erişemezsiniz. Kullanıcı, web'den indirilen ve makinesinde yürütülen her kod parçasına mutlaka güvenmez ve bu, istemci tarafı ortamının (tarayıcı ve JavaScript motoru) ana tasarım hedefidir: yalıtılmış bir ortam sağlamak İstemci kodunun yürütülebileceği ancak izin verilen kapsamın dışındaki hiçbir şeye erişemediği durumlarda.
Sunucu tarafı programlamada, her uygulamanın altta yatan sisteme erişimini de sınırlandırmak iyi bir uygulamadır, ancak sonuçta siz veya şirketiniz o sistemi kontrol altında tuttuğunuz için bu sizin için daha az uygulanır. Bu 'yalıtılmış kafes' tasarımı, sunucu tarafında programlama araçlarına ve dillerine yerleşik değildir , ancak kurulum kurulumuyla (kısıtlı izinlere sahip özel kullanıcılar kullanarak, kök izinleri gerektiren veya gerektirmeyen bağlantı noktaları seçerek vb.) Gerçekleştirilir.
Dağıtım ve platform
Sunucu tarafı programlamada, dağıtımın bir tür araç kullanarak (bu make install
ya da a olsa bile) kodunuzun dışından yapılması gerekir git clone
ve bu dağıtım genellikle elle yapılır - ya da en azından yarı denetim altında yapılması beklenir. yol. Dağıttığınız sistem (işletim sistemi anlamına gelir) genellikle birkaç makinede aynıdır, ancak gereksinimlerinize göre büyük ölçüde özelleştirilebilir.
İstemci tarafı programlamada, dağıtım, istemcilere otomatik olarak ve denetimsiz olarak hizmet veren sunucu tarafı kodunuzdan gerçekleşir. Temel sistem (esas olarak tarayıcı anlamına gelir) çok daha fazla sayıda makinede çok farklı olabilir. Dağıtımı tümüyle uygulanabilir kılmak için standartlar korunmalıdır ve tek bir dile ve çevreye çok daha güçlü bir eğilim vardır.
Bu nedenle sunucu tarafı kodunun bir makineden diğerine kopyalanması haftalar sürebilir, istemci tarafı kodu genellikle farklı makinelerde çalıştırma konusunda önemsizdir.
Devlet ve ikincil etkiler
(Feragatname: Bu, hepsinin en öznel noktasıdır. Muhtemelen benim tartışmamın birçok yanlış yönü var. Benim görüşüme göre sadece ilginç bir hipotez.)
Sunucu tarafı programlamada, durum çok daha büyük bir endişe kaynağıdır; bu, kullanıcının isteği üzerine verilerin eşzamanlılık nedeniyle çakışma olasılığı ile nasıl alınacağı ve güncelleneceği anlamına gelir. Bu karmaşıklığın çoğu bir veritabanı sunucusuna aktarılsa bile, sunucunun arayüzünü doğru şekilde kullanarak veri bütünlüğü konusundaki garantilerini muhafaza etmesine izin vermek (örn. DB), aynı zamanda sunucu tarafı kodunun bir amacı olmasına rağmen, veritabanını işle aşırı yüklememek ve kullanıcıyı yanıt bekletmek.
İstemci tarafı programlamada sonuçları kullanıcıya sunmak çok daha büyük bir endişedir ve bu ikincil etkiler (çoğunlukla ekrana yazdırma) anlamına gelir. Bu, ilgili bir durumun (örneğin çerezler) olmadığını, yalnızca kodun asıl amacının kullanıcıyla gerçekten arayüz oluşturmak olduğunu söylemek değildir ve bu ikincil etkiler olmadan gerçekleşemez.
Bu nedenle, istemci tarafı programlama genellikle (bir noktada) ekrana bir demo ile bakmayı gerektirir, tüm renkler ve mizanpajın doğru olduğunu kontrol etmek için sunucu tarafı programlama neredeyse yalnızca otomatik olarak yazılmış metin odaklı bir ortamda gerçekleşebilir. Testler, mantığın hala yapması gerekeni yaptığını kontrol eder.