Dengan membuang REST, Anda kehilangan lebih dari sekadar HATEOAS. Jika layanan Microsoft Anda bersifat publik (dan itu ide yang bagus bagi mereka untuk menjadi publik atau setidaknya cenderung menjadi publik suatu hari¹), menggunakan apa pun selain REST dan SOAP akan bermasalah:
Beberapa pengembang tidak pernah menggunakan AMQP,
Beberapa telah menggunakan AMQP, tetapi seringkali lebih akrab dengan REST dan SOAP,
Perpustakaan AMQP untuk beberapa bahasa tidak mudah,
Eksperimen manual dengan layanan ini sangat terbatas: Saya dapat menggunakan CURL untuk melakukan permintaan apa pun ke Amazon S3; apa yang harus saya instal pada mesin saya jika saya ingin bermain dengan varian AMQP S3?
Debestging REST dan SOAP itu mudah. Saya hanya melacak pertukaran HTTP dan menganalisisnya. Tidak yakin alat apa yang harus saya gunakan untuk melihat untuk men-debug pertukaran AMQP.
AMQP memang hebat, tetapi dilakukan untuk tujuan pertukaran yang sangat spesifik berdasarkan peristiwa. Meskipun secara teknis dimungkinkan untuk melakukan RPC dengan AMQP, itu bukan tujuan utamanya.
Aspek asinkron juga penting. Terkadang ini menguntungkan: Saya tidak ingin memblokir antarmuka pengguna aplikasi saat melakukan permintaan ke server. Kadang-kadang, itu hanya membuat segalanya lebih sulit daripada yang seharusnya: jika saya perlu memulihkan cadangan file dari Amazon S3 karena yang lokal rusak, dan kemudian mengembalikan cadangan, file batch saya perlu CURL untuk menyelesaikan tugasnya sebelum melanjutkan, dan operasi sinkron (dengan batas waktu tertentu) sangat masuk akal.
Simpan REST untuk operasi utama:
Mendapatkan produk,
Menyimpan faktur,
dan gunakan AMQP untuk tugas-tugas di mana perpesanan benar-benar masuk akal:
Memproses semua faktur dari bulan September dan memberi tahu aplikasi ketika laporan siap ditampilkan (mengingat bahwa operasi biasanya berlangsung dari dua hingga sepuluh menit),
Manfaat AMQP di sini adalah aspek asinkronnya. Permintaan HTTP yang tertunda selama sepuluh menit memiliki peluang bagus untuk menyebabkan batas waktu dan masalah lainnya.
Mengirim informasi bahwa cadangan rusak kepada setiap orang yang mungkin tertarik, seperti orang-orang pendukung, administrator basis data, tim pemantauan, pengembang aplikasi yang menggunakan basis data ini, dll.
Manfaat AMQP di sini adalah, antara lain, kemampuan untuk menambah pelanggan tanpa mengubah aplikasi yang melacak cadangan dan memicu peringatan ketika menemukan yang rusak.
¹ Layanan web publik tidak selalu digunakan oleh pengguna di luar perusahaan. Di perusahaan besar atau menengah, layanan Anda sering digunakan oleh divisi lain dari perusahaan yang sama dan memiliki persyaratan yang sama dengan yang akan digunakan oleh pihak ketiga: layanan ini seharusnya tidak mempercayai panggilan apa pun (fakta bahwa beberapa pria yang tidak pernah Anda kenal sebelumnya) mendengar siapa yang menyebut layanan Anda bekerja di perusahaan yang sama dengan Anda, bukan berarti dia tidak akan mengeksploitasi masalah keamanannya, itu harus didokumentasikan dengan baik (karena orang India yang sama tidak perlu mengetahui nomor telepon Anda dan tidak perlu tahu bahasa Inggris), dll.