Pasti ada pro / kontra tentang menggunakan JSON lebih dari REST vs lurus TCP / IP dengan protokol biner dan saya pikir Anda sudah curiga bahwa protokol biner akan lebih cepat. Saya tidak dapat memberi tahu Anda dengan tepat seberapa cepat (dan ini akan tergantung pada banyak faktor), tetapi saya kira mungkin 1-2 urutan perbedaan besarnya.
Pada pandangan pertama jika sesuatu 10-100 kali lebih lambat daripada yang lain, Anda mungkin memiliki reaksi spontan dan pergi untuk "hal yang cepat". Namun, perbedaan kecepatan ini hanya ada di protokol itu sendiri. Jika ada akses database / file di sisi server, itu tidak akan terpengaruh oleh pilihan Anda dari lapisan transfer. Dalam beberapa kasus, ini mungkin membuat kecepatan lapisan transfer Anda jauh kurang signifikan.
HTTP REST dan JSON baik untuk sejumlah alasan:
- mereka mudah dikonsumsi oleh siapa saja. Anda dapat menulis Aplikasi Web Anda, lalu berbalik dan menerbitkan API Anda untuk digunakan seluruh dunia. Sekarang siapa pun dapat mencapai titik akhir yang sama dan mendapatkan layanan Anda
- mereka mudah debuggable, Anda dapat membuka sniffer paket atau hanya membuang permintaan masuk ke file teks dan melihat apa yang terjadi. Anda tidak dapat melakukannya dengan protokol biner
- mereka mudah diperpanjang. Anda dapat menambahkan lebih banyak atribut dan data di lain waktu dan tidak merusak kompatibilitas dengan klien lama.
- dikonsumsi oleh klien javascript (tidak yakin mereka memiliki parser JS protobuf, jangan percaya ada satu)
Protobuf melalui TCP / IP:
Jika itu pilihan saya, saya akan menggunakan HTTP REST dan JSON. Ada alasan mengapa begitu banyak perusahaan dan situs web lain yang menggunakan rute itu. Juga perlu diingat bahwa di masa depan Anda selalu dapat mendukung 2 poin akhir. Jika desain Anda benar, pilihan titik akhir Anda harus sepenuhnya dipisahkan dari logika bisnis sisi server atau database. Jadi jika Anda kemudian menyadari bahwa Anda membutuhkan lebih banyak kecepatan untuk semua / beberapa permintaan, Anda harus dapat menambahkan protobuf dengan kerepotan minimal. Namun segera, REST / JSON akan membuat Anda turun lebih cepat dan membuat Anda lebih jauh.
Sejauh Netty vs Spring berlangsung. Saya belum pernah menggunakan Netty secara langsung, tetapi saya percaya itu hanya server web yang ringan, di mana Spring adalah kerangka kerja yang menyediakan lebih banyak untuk Anda daripada hanya itu. Ini memiliki lapisan akses data, penjadwalan pekerjaan latar belakang dan (saya pikir) model MVC, sehingga jauh lebih berat. Yang mana yang harus dipilih? Jika Anda memutuskan untuk menggunakan cara HTTP, maka pertanyaan berikutnya mungkin seberapa standar aplikasi Anda? Jika Anda akan menulis beberapa logika kustom gila yang tidak sesuai dengan cetakan standar dan yang Anda butuhkan hanyalah lapisan server HTTP, ikuti Netty.
Namun, saya curiga aplikasi Anda tidak terlalu istimewa dan mungkin dapat mengambil manfaat dari banyak hal yang ditawarkan Spring. Tetapi itu berarti bahwa Anda harus menyusun aplikasi Anda di sekitar kerangka Spring dan melakukan hal-hal seperti yang mereka harapkan Anda lakukan, yang berarti belajar lebih banyak tentang Spring sebelum menyelami produk Anda. Kerangka kerja secara umum bagus karena sekali lagi mereka membuat Anda lebih cepat, tetapi downside adalah bahwa Anda harus masuk ke cetakan mereka daripada melakukan desain Anda sendiri dan kemudian mengharapkan kerangka kerja hanya berfungsi.
(*) - di masa lalu ditunjukkan bahwa posting saya tidak mencerminkan pendapat seluruh dunia, jadi saya akan melanjutkan dan menambahkan bahwa saya memiliki pengalaman yang terbatas dengan Netty (Saya telah menggunakan kerangka bermain sebelumnya yang didasarkan pada Netty) atau Spring (Saya baru saja membacanya). Jadi, ambil apa yang saya katakan dengan sebutir garam.