Pedoman arsitektur untuk "satu halaman web-aplikasi"

12

Saya akan memulai proyek sampingan untuk membangun aplikasi web "satu halaman". Aplikasi harus real-time, mengirimkan pembaruan kepada klien ketika perubahan terjadi.

Apakah ada sumber daya yang baik untuk pendekatan praktik terbaik dan arsitektur untuk aplikasi semacam ini. Sumber daya terbaik yang saya temukan sejauh ini adalah artikel arsitektur trello di sini: http://blog.fogcreek.com/the-trello-tech-stack/

Bagi saya, arsitektur ini, walaupun sangat seksi, mungkin terlalu direkayasa untuk kebutuhan spesifik saya - walaupun saya memiliki persyaratan yang sama. Saya ingin tahu apakah saya perlu repot dengan sub / pub di sisi server, dapatkah saya tidak hanya mendorong pembaruan dari server ketika sesuatu terjadi (misalnya ketika klien mengirim pembaruan ke server, menulis pembaruan ke db, dan kemudian mengirim pembaruan ke klien).

Secara teknis, saya mungkin ingin membangun ini di Node.JS atau mungkin Ruby, meskipun pedoman arsitektur harus sampai batas tertentu berlaku untuk teknologi server yang mendasarinya.

Matt Roberts
sumber

Jawaban:

5

Saya pasti akan melihat sisi klien MVC untuk ini seperti Backbone.js. Ini sangat ringan tetapi akan memberi aplikasi Anda beberapa struktur yang sangat dibutuhkan. Saya sangat merekomendasikan screencast Peepcode sebagai cara tercepat untuk mempelajari lebih lanjut tentang Backbone.

Manfaat arsitektur yang bagus dari sisi klien MVC seperti ini adalah kenyataan bahwa Anda dapat lebih mudah bergerak ke arah pertukaran data dengan sisi server Anda misalnya JSON terstruktur melalui REST.

Backbone.js mendukung ini di luar kotak - Anda dapat membuat serial model Anda antara klien dan server sebagai JSON, yang dapat membebaskan kita dari pemikiran dalam hal permintaan / tanggapan.

Sesuatu seperti Node.js di sisi server menarik di bawah model ini di mana Anda mungkin akan memiliki banyak permintaan asinkron yang berpotensi pendek untuk mendorong dan menarik data.

Salah satu alternatif .... Model seperti Comet dapat menjadi cara sederhana untuk mencapai web pub / sub dan ada beberapa kerangka kerja sisi server yang mendukung ini.

Benjamin Wootton
sumber
Ceria, saya pasti berpikir untuk menggunakan MV * FW untuk sisi klien, dan telah belajar tentang Backbone .. Tip yang bagus.
Matt Roberts
1

Saya mungkin akan pergi dengan kerangka kerja javascript MV * untuk ujung depan. Saya sendiri sedang membangun aplikasi web satu halaman dan setelah menyelidiki sejumlah solusi, saya akhirnya pergi dengan Backbone.js. Saya menemukan sementara solusi ini tidak memberikan yang terbaik dari fungsionalitas kotak, itu memang memberi saya fondasi inti untuk memulai dan jauh lebih fleksibel daripada solusi lain yang saya lihat (yang penting bagi saya).

Solusi populer lainnya adalah Ember.js dan Knockout.js yang memang memberikan lebih banyak fungsi di luar kotak namun Anda harus mengikuti konvensi mereka untuk menggunakan fungsionalitas thT (yang mungkin atau mungkin tidak bekerja untuk Anda).

ryanzec
sumber
1

Ini adalah IMO no brainer. AngularJS untuk ujung depan karena mengagumkan. NodeJS / express / SocketIO untuk backend yang dinamis dan seksi dengan pub / sub goodness dan minimum keributan. Dan sebagai bonus, Anda dapat menggunakan satu bahasa untuk bagian depan dan belakang!

Lihatlah penerapan https://github.com/hackify/hackify-server saya yang sama untuk contoh

Satu peringatan, beberapa orang merekomendasikan alternatif NodeJS ke socketio yang disebut sockjs tapi saya belum memeriksanya jadi saya tidak bisa merekomendasikannya

Michael Dausmann
sumber
0

Kedengarannya seperti yang Anda lihat adalah Apache 2.2 dengan server aplikasi PHP atau Tomcat dengan servlet sederhana yang menangani permintaan. Ini setara dengan tukang kayu dari palu dan paku. Tidak ada yang rumit tapi itu menyelesaikan pekerjaan. Jika Anda perlu memperluas fungsionalitas, Anda selalu dapat melakukannya karena Tomcat dapat mendukung jsp dan jsf jika Anda memerlukannya.

Untuk masalah ujung depan, saya akan merasa nyaman hanya menggunakan jQuery ( $ .post , $ .load , $ .ajax ) karena itu cukup berguna untuk menggandakan sebagai cara untuk menambahkan fungsionalitas ke halaman Anda dalam kombinasi dengan jQuery UI

Neil
sumber
0

Jika Anda ingin pembaruan klien waktu nyata, maka Anda harus mengimplementasikan panggilan "AJAX" yang lama memblokir, atau lebih baik menggunakan soket web modern. Ini memungkinkan Anda untuk mendorong pembaruan ke klien yang terhubung yang akan ditangani oleh sedikit javascript.

Saya mengerti bahwa state-of-the-art (atau mode terbaru) saat ini adalah AngularJS oleh Google. Sebagian dirancang untuk membuat penulisan SPA lebih mudah.

gbjbaanb
sumber
0

Jika Anda menginginkan sesuatu yang dekat dengan tumpukan rata-rata (node.js, mongo ...) untuk membangun aplikasi halaman tunggal yang perlu reaktif, saya akan memilih meteor . Apalagi jika Anda sedang membangun prototipe dan mulai dari awal.

Rail dengan frontend sudut akan menjadi pilihan yang bagus, tetapi Anda akan kesulitan "mengirim pembaruan kepada klien saat perubahan terjadi", karena Anda perlu menginstal permata tertentu, merangkai beberapa polling panjang atau perpustakaan sockjs .. .

Benjamin Crouzier
sumber