Apakah ada alasan untuk tidak membuat webapp hanya menjadi sisi klien?

8

Saya baru-baru ini mulai menulis aplikasi simulasi algoritma pencarian jalur dengan python.

Dibutuhkan input pengguna, secara acak menghasilkan grafik 2d, dan menunjukkan menampilkan simulasi melalui GUI.

Sekarang, apa yang saya temukan adalah bahwa Python, dan aplikasi yang berdiri sendiri tidak terlalu tepat untuk berbagi aplikasi semacam ini, karena Anda perlu membuat orang untuk menjalankannya di komputer mereka sendiri dll. Akan jauh lebih nyaman untuk langsung mengarahkan mereka ke situs web.

Jelas elemen tampilan dan kontrol perlu ditulis di sisi klien.

Tetapi algoritma pencarian jalur yang sebenarnya dapat ditulis pada sisi klien atau server.

Sekarang, mengingat bahwa tidak perlu untuk backend sisi server (mis. Tidak ada database), akan mungkin untuk melakukan seluruh webapp di sisi klien HTML / JavaScript.

Pertanyaannya adalah, adakah alasan kuat untuk tidak melakukan ini?

Cara saya melihatnya, melakukannya hanya sisi klien akan sangat mengurangi kompleksitas, karena tidak perlu menangani interaksi yang terjadi antara klien dan server. Satu-satunya hal yang diperuntukan server, adalah untuk awalnya menyajikan Javascript kepada klien.

Di sisi lain ... Saya harus menulis semuanya dalam Javascript ...

Juga, gagasan memiliki modul model yang dapat digunakan kembali menarik bagi saya. Misalnya. Jika nanti saya ingin memiliki aplikasi mandiri, saya hanya perlu menulis modul View / Control.

Saya bertanya-tanya seperti apa praktik yang diterima secara umum di sini.

djohnston
sumber
2
Praktik yang diterima secara umum adalah mengambil pendekatan yang paling memenuhi persyaratan fungsional dan non-fungsional perangkat lunak Anda. Misalnya, jika Anda tidak memerlukan data sisi server atau perhitungan, dan semuanya dapat disimpan di browser, maka Anda tidak hanya mendapatkan ketersediaan platform yang sudah diinstal pada mesin semua orang (browser), tetapi Anda juga mendapatkan dukungan lintas platform secara gratis. Di berita lain, kenapa kamu tidak suka Javascript?
Robert Harvey
Tersedia konverter python ke JavaScript, yang mungkin membantu sebagian besar pekerjaan terjemahan.
Andrew Morton
Validasi juga harus terjadi di sisi server, terutama untuk situs yang menghadap klien jika tidak ada risiko dapat dilewati.
garryp
Apakah ada alasan mengapa Anda tidak ingin membiarkan sembarang orang menjalankan aplikasi? Jika demikian, Anda perlu mengautentikasi mereka di server, sehingga tidak bisa 100% sisi klien (tapi sebagian besar masih begitu)
Mawg mengatakan mengembalikan Monica
Saya telah membangun aplikasi web seperti ini dan saya sangat senang dengan hasilnya. Ingat, aplikasi web saya mengandalkan API REST yang disediakan oleh server pihak ketiga. Saya juga bertanya-tanya mengapa lebih banyak aplikasi web tidak dibangun dengan cara ini.
leif81

Jawaban:

8

Anda telah menguraikan kelebihan melakukan sisi klien aplikasi saja. Berikut adalah beberapa kemungkinan kontra - jika ada atau semuanya berlaku, pertimbangkan untuk beralih ke solusi berbasis server:

  • Performa. Apakah solusi berbasis klien terasa lebih lambat daripada solusi berbasis server (termasuk lalu lintas)? Javascript cepat saat ini, tetapi algoritma yang mahal secara komputasi mungkin memerlukan perangkat keras khusus server-side atau peternakan HPC.
  • Produktifitas. Jika Anda seorang pengembang Python tanpa latar belakang JS, waktu yang diperlukan untuk mempelajari bahasa baru dan idiom-idiomnya mungkin mahal, atau setidaknya lebih lama dari penerapan logika klien / server. Selain itu, mungkin ada pustaka Python berguna yang bisa Anda gunakan yang tidak tersedia untuk JS, yang akan sangat meningkatkan waktu pengembangan.
  • Hak milik intelektual. Jika algoritma ini adalah sesuatu yang ingin Anda lindungi, memiliki kode yang tersedia di mesin klien dapat menjadi masalah.
  • Kesesuaian. Semakin banyak kode berbasis browser berarti semakin banyak masalah kompatibilitas browser. Ini jauh lebih mudah akhir-akhir ini, tetapi masih bisa menjadi perhatian, tergantung pada audiens dan jangkauan yang Anda inginkan.

Singkatnya, Javascript sisi klien adalah platform yang sangat layak untuk komputasi algoritmik, dan dapat dengan mudah digunakan baik untuk peramban maupun sebagai aplikasi mandiri (menggunakan mesin peramban seperti Awesomium), tetapi ia memiliki peringatan. Periksalah mereka untuk membuat pilihan.

Avner Shahar-Kashtan
sumber