Rumah Berpikir ke depan Kembalinya komputasi client-server?

Kembalinya komputasi client-server?

Video: The Client Server Model | Clients and Servers (Oktober 2024)

Video: The Client Server Model | Clients and Servers (Oktober 2024)
Anonim

Salah satu hal yang saya temukan menarik di dunia pengembangan selama beberapa bulan terakhir adalah bagaimana aplikasi modern bergerak kembali untuk menempatkan lebih banyak kecerdasan di klien daripada di server. Model client-server bukanlah hal yang baru tentu saja: itu adalah cara aplikasi tradisional telah dibangun selama bertahun-tahun, dengan aplikasi klien yang kaya berbicara dengan aplikasi sisi server. Tetapi di era Web, dan bahkan Web 2.0, fokus berpindah ke aplikasi web di mana sebagian besar kecerdasan berada di server Web (biasanya di server aplikasi berbasis Java) dan klien hanyalah halaman web sederhana di browser tempat setiap kali Anda mengklik, Anda memuat halaman baru.

Namun baru-baru ini pematangan HTML5, CSS, dan yang paling khusus JavaScript memimpin pengembang untuk menempatkan kecerdasan nyata dan pemrosesan nyata di halaman Web itu sendiri. Secara khusus kami telah melihat munculnya berbagai kerangka kerja berbasis JavaScript sisi klien yang membuatnya lebih mudah untuk membuat front-end cerdas yang berjalan sepenuhnya dalam browser Web modern. Browser yang terlibat biasanya berbasis pada mesin Webkit, termasuk Chrome dan Safari, tetapi sebagian besar aplikasi tampaknya berjalan baik di versi Firefox dan Internet Explorer saat ini juga. Anda berakhir dengan halaman Web yang lebih kompleks yang berubah secara dinamis, menarik data dari server sesuai kebutuhan.

Tiga kerangka kerja MVC khususnya tampaknya mendapatkan sebagian besar perhatian: Backbone.js, Ember.js, dan Angular.js. (MVC adalah singkatan dari model-view-controller - pada dasarnya arsitektur di belakang komputasi klien web. "Js" adalah singkatan dari JavaScript.) Pada dasarnya ini semua merupakan hasil dari pendekatan AJAX (Asynchronous JavaScript dan XML) yang populer selama dekade terakhir atau demikian, tetapi semakin dewasa dan hampir terstandarisasi. Idenya adalah untuk menempatkan lebih banyak status dan kecerdasan di browser, lalu sambungkan browser dengan REST API di sisi server.

Backbone mungkin yang paling mendasar dan minimal dari kerangka kerja ini; ini digunakan untuk berbagai luasan oleh banyak situs populer. Ember tumbuh dari kerangka kerja yang disebut Sproutcore yang didukung Apple, dan merupakan kerangka kerja yang jauh lebih komprehensif yang dirancang untuk memungkinkan Anda melakukan aplikasi bergaya desktop. Ini sering digunakan dengan Bootstrap - satu set templat untuk HTML dan CSS yang awalnya dibuat oleh karyawan Twitter. Angular adalah alternatif Google yang tampaknya berada di antara keduanya - beberapa orang berpikir itu sedikit lebih fleksibel atau setidaknya "kurang beralasan" daripada Ember tetapi lebih komprehensif daripada Backbone. (Catatan Google mendorong pengembang untuk menggunakan Angular untuk meningkatkan kualitas pengkodean, tetapi secara internal sebenarnya menggunakan serangkaian kerangka kerja yang berbeda.) Bahkan Microsoft telah menambahkan kait ke Visual Studio untuk kerangka kerja ini.

Karena ini Web, ada puluhan alternatif. Salah satu yang lebih menarik yang saya dengar belakangan ini adalah Meteor, yang dirancang untuk bekerja dengan JavaScript pada sisi klien dan server. Tapi ini masih sangat awal, dan saya belum tahu ada pengguna yang sebenarnya. Sementara itu, lebih banyak pengembang yang bermain dengan Node.js, sering digunakan untuk implementasi JavaScript sisi-server.

Keuntungan dari kerangka kerja seperti itu tampak jelas. Aplikasi web-client yang kaya lebih kuat daripada aplikasi thin client di mana semuanya berjalan di server, mereka dapat memberikan antarmuka pengguna yang lebih baik, dan menawarkan kemungkinan informasi offline. Menggunakan kerangka kerja ini Anda dapat membuat aplikasi klien Web yang kaya lebih cepat daripada yang Anda bisa dengan membangun semuanya dari awal, dan mengambil keuntungan dari komunitas yang berkembang di sekitar masing-masing.

Mungkin yang paling penting, Anda dapat membuat aplikasi seluler yang skala ke perangkat yang berbeda tanpa harus menulis aplikasi asli tertentu. Masih ada argumen bagus untuk dibuat untuk aplikasi asli, yang dapat lebih langsung membahas fitur spesifik dari setiap platform. Namun, banyak pengembang telah menemukan kerangka kerja seperti itu dapat secara dramatis mempercepat pengembangan lintas-platform, terutama bila digunakan bersama dengan hal-hal seperti PhoneGap, kerangka kerja seluler open source yang dibeli oleh Adobe dan bersumber terbuka ke proyek Apache Cordova.

Mobile tentu saja, membawa keterbatasannya sendiri, termasuk kecepatan prosesor, dan mungkin yang lebih penting, kecepatan - dan kadang-kadang kurangnya - konektivitas. Salah satu alasan orang menyukai aplikasi melalui halaman Web adalah sering kali Anda dapat mengunduh fungsionalitas dasar melalui Wi-Fi atau koneksi cepat dan hanya mendapatkan data yang Anda perlukan untuk diunduh, bukan keseluruhan desain. Paket seperti PhoneGap mengatasi masalah ini dengan memasukkan JavaScript ke dalam aplikasi yang diunduh.

Namun, ada masalah lain dengan kerangka kerja seperti itu. Menurut definisi melakukan lebih banyak komputasi di sisi klien meningkatkan kompleksitas versus aplikasi server saja, dan memang, beberapa kelemahan dari model client-server lama memang kembali. Pengembang perlu mengelola negara di kedua sisi. Kode di dua tempat berarti Anda harus fokus pada keamanan di kedua tempat. Karena tim pengembangan sering memiliki beberapa orang yang bekerja pada klien dan yang lainnya di server, Anda mendapatkan masalah komunikasi tambahan. Di sisi lain, beberapa masalah yang lebih lama dari client-server tidak kembali, dan Anda malah mempertahankan manfaat perangkat lunak Web. Ini adalah dunia yang lebih didorong oleh standar, digerakkan oleh komunitas, jadi Anda tidak terlalu tergantung pada satu lingkungan berpemilik. Dengan memisahkan bagian klien dan sisi server Anda juga dapat memiliki implementasi sisi server yang lebih bersih dan lebih sederhana yang hanya memproses dan bukan UI, dan mungkin memerlukan lebih sedikit sumber daya sebagai hasilnya. Namun Anda masih memiliki keuntungan untuk dapat memperbarui semua klien sekaligus, karena biasanya browser memuat kode dari server ketika aplikasi dipanggil.

Kami jelas melihat langkah menuju klien Web yang lebih cerdas - tidak dalam setiap kasus, tetapi dalam banyak aplikasi baru. Jauh lebih sulit untuk mengambil aplikasi yang lebih lama dan memindahkannya ke model ini, tetapi kami melihat beberapa dari itu juga. Ini bukan model client-server yang lama, tetapi semakin dekat.

Kembalinya komputasi client-server?