Mengingat area-area itu, saya bisa memberikan gambaran kasar, tetapi saya tidak bisa menarik kesimpulan untuk Anda. Ada dua bidang utama di mana kedua protokol berbeda:
- Format pesan
- Penemuan layanan
Format pesan paling mudah dipahami. Kemasan SOAP untuk permintaan dan respons cukup berat. Ada amplop SOAP yang berisi bagian kepala dan bagian tubuh. Header dapat digunakan oleh beberapa filter dalam rantai permintaan untuk melakukan semacam identifikasi, otorisasi, dll. Namun, XML mahal untuk diurai, yang menghasilkan penalti tertentu untuk skalabilitas sistem Anda. Seberapa besar tergantung pada lapisan pemrosesan SOAP di tumpukan Anda.
Penemuan layanan adalah tempat Anda mungkin akan memiliki pertengkaran paling banyak. REST pada dasarnya memberikan titik akhir yang dapat diprediksi , dan konten permintaan adalah permintaan HTTP sederhana. Keuntungannya adalah tidak ada overhead tambahan, dan pengguna akhir dapat menebak bagaimana melakukan apa yang mereka butuhkan begitu mereka memahami struktur URL situs Anda. Tentu saja, orang yang sadar keamanan yang naif akan melihat itu sebagai kelemahan. Lagipula, dengan SOAP, Anda harus mengonsumsi WSDL untuk mengetahui titik akhir. Tentu saja, dengan SOAP Anda diberi seluruh format pesan sehingga Anda dapat membuat lebih banyak serangan yang ditargetkan.
Dipecah berdasarkan kategori yang Anda berikan:
Keamanan
Tak satu pun secara inheren lebih aman daripada yang lain. Gunakan prinsip keamanan yang baik:
- Enkripsi komunikasi
- Pastikan Anda mengautentikasi dan mengotorisasi pengguna sebelum diproses
- Kebiasaan pengkodean yang baik untuk menghindari serangan langsung
- Dan itu hanya daftar pendek.
Ingat ketidakjelasan! = Keamanan.
Performa
Baik kinerja mentah dan skalabilitas akan masuk ke REST karena permintaan berikut protokol HTTP sederhana. Sebagian besar tumpukan SOAP menggunakan parsing SAX (parsing berbasis kejadian) yang sangat meningkatkan skalabilitas tumpukan SOAP, tetapi ada dampak yang terukur terhadap overhead. SOAP memiliki overhead pemrosesan HTTP normal selain XML parsing overhead. REST hanya memiliki overhead pemrosesan HTTP.
Kompleksitas
Dari perspektif sistem, REST menang. Ada lebih sedikit bagian yang bergerak, rantai permintaan yang lebih ramping, dll. Itu berarti lebih mudah untuk membuatnya dapat diandalkan.
Dari perspektif programmer, SOAP dapat menang jika IDE atau framework yang Anda gunakan memberikan dukungan yang baik untuk itu. Pada dasarnya, dengan REST, tanggung jawab ada pada Anda untuk melakukan pekerjaan preprocessing (otentikasi / otorisasi / dll) sementara dengan SOAP banyak yang dapat diselesaikan dengan rantai pemrosesan yang dapat dicolokkan.
Preferensi saya
Saya sangat nyaman dengan permintaan HTTP, dan saya tahu cara kerja web. Akibatnya, pendekatan REST lebih disukai bagi saya. Namun, saya tahu bahwa beberapa klien saya merasa tidak nyaman dengan itu. Mereka telah membaca beberapa artikel industri mengecam keamanan REST vs SOAP, dll. Intinya adalah bahwa tidak ada pendekatan yang menjamin keamanan. Ada pada Anda untuk memastikan aplikasi seaman yang dibutuhkan. Jelas, aplikasi web sosial tidak menuntut (atau menginginkan) keamanan sebanyak bank atau sistem pemerintah. Banyak tumpukan SOAP menyertakan prosesor yang dapat Anda pasang untuk memberikan kemiripan keamanan, tetapi masih merupakan tanggung jawab Anda untuk mencari dan meletakkannya di tempat.