REST, GraphQL dan gRPC ialah 3 teknologi pembangunan API paling popular untuk aplikasi web moden. Jadi apabila membuat pemilihan teknologi, bagaimana untuk memilih antara tiga?
Dalam artikel ini, kami akan membandingkan ciri dan penggunaan REST, GraphQL dan gRPC.
REHAT - teknologi paling popular
REHAT
Pemindahan Negara Perwakilan (REST) It ialah teknologi pembangunan API yang paling popular dalam pembangunan web moden. Ia adalah seni bina pemindahan data tanpa kewarganegaraan. Pelanggan membuat permintaan dengan semua butiran yang diperlukan untuk permintaan itu, tetapi pelayan tidak mengekalkan keadaan klien.
API REST menyokong pengepala cache asli HTTP dan menggunakan kaedah HTTP (POST, GET, PUT, PATCH dan DELETE) untuk memanipulasi data. Kerana REST mempunyai ambang pembelajaran yang rendah, semua orang boleh menggunakan RE
ST dengan mudah.
REST mudah dipanjangkan dan boleh dipercayai Jika masih ragu-ragu, boleh pilih dulu.
Faedah REST
- Anda boleh menggunakan kaedah HTTP standard dengan selamat untuk melaksanakan operasi CRUD.
- REST sangat matang, mempunyai dokumentasi lengkap dan mudah untuk bermula.
- Sokongan caching.
- Skala yang mesra dan menyediakan pemisahan antara pelanggan dan pelayan.
- Ia boleh disepadukan dengan mudah ke dalam aplikasi.
Kelemahan REHAT
- Terdapat masalah pengambilan berlebihan dan kurang pengambilan. Pengambilan berlebihan berlaku apabila API mengembalikan lebih banyak data daripada yang sebenarnya diperlukan. Ini boleh mengakibatkan trafik rangkaian yang tidak diperlukan, prestasi yang lebih perlahan dan penggunaan lebar jalur tambahan. Underfetching berlaku apabila API tidak mengembalikan semua data yang diperlukan yang diperlukan untuk kes penggunaan tertentu, memerlukan berbilang permintaan untuk mendapatkan semua maklumat yang diperlukan. Ini juga boleh mengakibatkan prestasi yang lebih perlahan dan peningkatan trafik rangkaian, serta asas kod yang lebih kompleks.
- Tidak boleh mengekalkan status.
- Muatan yang agak besar.
- Apabila aplikasi berskala, bilangan titik tamat meningkat secara mendadak.
- Tidak mudah untuk mengemas kini skema pangkalan data atau struktur data.
Bila Memilih REST
Jika tiada keperluan khusus, REST adalah pilihan terbaik. Jika anda baru dalam pembangunan, menggunakan REST adalah sempurna kerana ia mempunyai keluk pembelajaran yang cetek. Selain itu, ia mempunyai ekosistem yang besar di mana anda boleh mencari penyelesaian kepada masalah anda dengan mudah.
REST paling baik digunakan apabila mengendalikan volum permintaan yang lebih besar dan dengan lebar jalur terhad, kerana sokongan cachingnya boleh digunakan untuk meningkatkan prestasi.
Secara amnya, jika aplikasi anda tidak perlu menggunakan GraphQL atau gRPC secara eksplisit, maka gunakan REST.
GraphQL - Standard dipacu pelanggan
GraphQL ialah teknologi data yang dilancarkan pada 2015 Bahasa pertanyaan yang membolehkan pembangun mencari dan mendapatkan data yang mereka perlukan dengan tepat. Berbanding dengan REST, GraphQL ialah pendekatan dipacu pelanggan di mana pelanggan memutuskan data yang diperlukan, cara mendapatkannya dan format. Ia juga menyelesaikan masalah pengambilan terlalu banyak dan kurang ambil kerana pelanggan boleh menentukan data yang diperlukan dengan jelas.
GraphQL menggunakan pertanyaan, mutasi dan langganan untuk memanipulasi data.
- Pertanyaan : Minta data daripada pelayan.
- Tukar: Ubah suai data sebelah pelayan.
- Langganan: Apabila data dikemas kini, dapatkan data dikemas kini masa nyata melalui langganan.
GitHub ialah salah satu syarikat terbesar yang menggunakan GraphQL. Pertukarannya daripada REST kepada GraphQL pada tahun 2016 telah banyak membantu pertumbuhan pesat GitHub.
Kebaikan GraphQL
- Ia sangat fleksibel dan dapat memenuhi keperluan pelanggan dengan tepat.
- Tiada masalah lebihan perolehan atau kurang perolehan.
- Sokongan bahasa arus perdana, termasuk JavaScript, Java, Python, Ruby dan PHP.
- Membenarkan struktur data tersuai.
- Satu pertanyaan boleh mengandungi medan daripada berbilang sumber.
Kelemahan GraphQL
- Pertanyaan boleh menjadi rumit.
- Kurang sokongan caching terbina dalam.
- Pembelajaran GraphQL lebih mencabar berbanding REST.
- Muat naik fail tidak disokong secara lalai.
Bila Memilih GraphQL
GraphQL ialah pilihan terbaik apabila pertanyaan mengandungi banyak rekod daripada pangkalan data. Anda boleh menggunakan GraphQL untuk menghapuskan pengambilan berlebihan dan hanya bertanya data yang diperlukan untuk meningkatkan prestasi aplikasi. Selain itu, GraphQL sesuai untuk situasi di mana data perlu diagregatkan daripada pelbagai sumber.
Anda juga boleh menggunakan GraphQL apabila anda tidak memahami sepenuhnya cara pelanggan menggunakan API. Apabila menggunakan GraphQL, anda tidak perlu menentukan protokol yang ketat di hadapan dan secara beransur-ansur boleh membina API anda berdasarkan maklum balas pelanggan.
gRPC - teknologi berorientasikan prestasi
gRPC telah dilancarkan oleh Google pada 2016 Versi yang berkembang panggilan prosedur jauh diperkenalkan. Ia adalah penyelesaian ringan yang memberikan prestasi maksimum menggunakan sumber minimum.
gRPC mengikut pendekatan komunikasi berasaskan protokol. Ia memerlukan kedua-dua pelanggan dan pelayan mempunyai perjanjian sebelum mereka boleh mula berkomunikasi. gRPC menggunakan Protobuf, bahasa perisytiharan, untuk mencipta protokol dan menjana kod yang serasi untuk pelanggan dan pelayan dalam bahasa yang dipilih.
gRPC menyokong 4 kaedah komunikasi:
- Unary: Pelanggan menghantar permintaan dan menunggu satu respons.
- Penstriman pelayan: Pelanggan menghantar permintaan dan menerima berbilang respons.
- Penstriman pelanggan: Pelanggan menghantar berbilang permintaan dan menunggu satu respons.
- Penstriman dua arah: Pelanggan menghantar berbilang permintaan dan menerima berbilang respons.
Faedah gRPC
- Sumber terbuka. Pembangun boleh mengubah suainya mengikut keperluan.
- Menyokong berbilang bahasa termasuk JavaScript, Java, C, C++, C#, Kotlin, Python, Go dan PHP.
- Keupayaan untuk melakukan pengimbangan beban.
- Ia menggunakan HTTP2 secara lalai untuk mengurangkan kependaman berbanding REST API.
- Sirikan data menggunakan format binari.
- Menyokong penstriman dupleks penuh.
Kelemahan gRPC
- Keluk pembelajaran yang lebih curam: Berbanding dengan API REST tradisional, gRPC memerlukan penguasaan konsep dan teknologi baharu, seperti Penampan Protokol dan aliran.
- Kebolehbacaan yang lemah: Disebabkan penggunaan pengekodan binari, mesej gRPC tidak semudah yang dibaca dan difahami oleh manusia seperti JSON atau XML.
- Sukar untuk nyahpepijat: Memandangkan mesej dikodkan binari, menyahpepijat perkhidmatan gRPC boleh menjadi lebih sukar daripada menyahpepijat API REST.
- Tidak sesuai untuk aplikasi kecil: Untuk aplikasi kecil dengan hanya beberapa perkhidmatan dan jumlah data yang kecil, gRPC mungkin terlalu kompleks dan menambah overhed yang tidak perlu.
- Tidak menyokong penyemak imbas web: Memandangkan gRPC menggunakan protokol HTTP/2 dan penyemak imbas web pada masa ini tidak menyokong semua ciri protokol HTTP/2, ia tidak boleh digunakan dalam penyemak imbas web gRPC.
Bila hendak memilih gRPC
- Keperluan untuk pemindahan data yang cekap: Memandangkan gRPC menggunakan protokol binari, ia lebih pantas daripada protokol teks seperti JSON dan XML , lebih ringan.
- Memerlukan kebolehpercayaan yang tinggi: lapisan pengangkutan gRPC berdasarkan protokol HTTP/2 menyediakan banyak ciri, seperti kawalan aliran, pemultipleksan sambungan dan pemampatan pengepala, dsb., yang boleh meningkatkan kebolehpercayaan seks dan prestasi.
- Keperluan untuk komunikasi berbilang bahasa yang cekap: gRPC menyokong berbilang bahasa pengaturcaraan dan menyediakan alatan untuk menjana kod secara automatik, jadi tidak perlu menulis kod merentas bahasa secara manual.
- Perlu menyokong pelbagai jenis permintaan dan respons: gRPC menyokong empat jenis kaedah komunikasi (Unary, Penstriman Pelayan, Penstriman Pelanggan dan Penstriman Dwiarah), jadi anda boleh memilih kaedah yang paling sesuai cara komunikasi kes penggunaan khusus anda.
- Perlu pengurusan API yang lebih baik: gRPC menyediakan alatan pengurusan API yang berkuasa, seperti gRPC-Gateway dan Envoy, dsb., yang boleh meningkatkan kebolehtemuan, dokumentasi dan ujian API.
gRPC boleh digunakan dalam seni bina perkhidmatan mikro untuk mengendalikan komunikasi antara perkhidmatan kerana ia boleh berkomunikasi dengan perkhidmatan yang ditulis dalam bahasa yang berbeza.
Kesimpulan
Memilih REST, GraphQL dan gRPC bergantung pada senario dan keperluan khusus anda. Prinsip asas diringkaskan seperti berikut:
- REST: REST sesuai untuk API mudah dan perkhidmatan web, seperti operasi CRUD tradisional. Ia biasanya lebih mudah untuk difahami dan digunakan, serta mempunyai ekosistem sokongan dan alatan yang luas.
- GraphQL: GraphQL sesuai untuk aplikasi yang memerlukan fleksibiliti dan keupayaan pertanyaan lanjutan. Jika aplikasi anda perlu mengagregat data daripada berbilang sumber, atau memerlukan kawalan yang lebih baik ke atas format dan butiran data, GraphQL ialah pilihan yang baik.
- gRPC: gRPC sesuai untuk aplikasi yang memerlukan pemindahan data yang cekap dan boleh dipercayai. Jika anda memerlukan komunikasi yang cekap antara berbilang bahasa pengaturcaraan dan ingin memberikan prestasi dan kebolehpercayaan yang lebih tinggi, gRPC ialah pilihan yang baik.
Walau bagaimanapun, REST, GraphQL dan gRPC bukanlah pilihan yang saling eksklusif. Dalam situasi sebenar, anda boleh menggabungkannya untuk memenuhi keperluan dan senario tertentu.
Atas ialah kandungan terperinci Pemilihan Teknologi: Cara Memilih REST, GraphQL dan gRPC. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!