Saya merancang API REST untuk sistem tiga tingkat seperti: Client application-> Front-end API cloud server-> user's home API server (Home).
Homeadalah perangkat rumah, dan seharusnya menjaga koneksi Front-endmelalui Websocket atau jajak pendapat yang panjang (ini adalah tempat pertama di mana kita melanggar REST. Semakin buruk nantinya) . Front-endsebagian besar Clientpermintaan terowongan untuk Homekoneksi dan menangani beberapa panggilan itu sendiri. Terkadang Homemengirim pemberitahuan ke Client.
Front-enddan Homepada dasarnya memiliki API yang sama; Clientmungkin terhubung Homesecara langsung, melalui LAN. Dalam hal ini, Homeperlu mendaftarkan beberapa Clienttindakan pada Front-enddirinya sendiri.
Kelebihan untuk REST dalam sistem ini adalah:
- REST dapat dibaca oleh manusia;
- REST memiliki pemetaan kata kerja yang didefinisikan dengan baik (seperti CRUD), kata benda dan kode respons terhadap objek protokol;
- Ia bekerja melalui HTTP dan melewati semua proxy yang mungkin;
Kontras REST adalah:
- Kami tidak hanya membutuhkan gaya komunikasi permintaan-respons, tetapi juga berlangganan-penerbitan;
- Kode kesalahan HTTP mungkin tidak cukup untuk menangani kesalahan komunikasi tiga tingkat;
Front-endmungkin kembali202 Acceptedke beberapa panggilan async hanya untuk mengetahui bahwaHomekoneksi yang diperlukan terputus dan seharusnya ada503; Homeperlu mengirim pesan keClient.Clientharus pollingFront-endatau untuk menjaga koneksi.
Kami sedang mempertimbangkan WAMP / Autobahn melalui Websocket untuk mendapatkan fungsionalitas mempublikasikan / berlangganan, ketika saya menyadari bahwa itu sudah terlihat seperti antrian pesan.
Apakah layak mengevaluasi semacam antrian pengiriman pesan sebagai transportasi?
Sepertinya contra antrian pesan adalah:
- Saya perlu mendefinisikan kata kerja CRUD dan kode kesalahan pada tingkat pesan.
- Saya membaca sesuatu tentang "biaya perawatan yang lebih tinggi", tetapi apa artinya?
Seberapa serius pertimbangan ini?
@Jimmy Hoffatitik valid, terima kasih. Itu benar, tetapi tidak sepenuhnya. Ini adalah database umum, penyimpanan, dan sebagainya. @Javierterima kasih, itu bagian yang baik dari sebuah jawaban.
@Mike Brownpersis. Silakan lakukan.