ฉันออกแบบ API REST สำหรับระบบสามชั้นเช่น: Client application
-> ->Front-end API cloud server
user's home API server (Home)
Home
เป็นอุปกรณ์บ้านและควรจะรักษาเชื่อมต่อFront-end
ผ่าน WebSocket หรือโพลล์ยาว(นี้เป็นสถานที่แรกที่เรากำลังละเมิด REST. จะได้รับก็แย่ภายหลัง) Front-end
ช่องสัญญาณส่วนใหญ่Client
ร้องขอการHome
เชื่อมต่อและจัดการการโทรบางตัว บางครั้งส่งการแจ้งเตือนไปยังHome
Client
Front-end
และHome
มี API เดียวกันโดยทั่วไป Client
อาจเชื่อมต่อHome
โดยตรงผ่าน LAN ในกรณีนี้Home
จำเป็นต้องลงทะเบียนClient
การกระทำบางอย่างกับFront-end
ตัวเอง
ข้อดีสำหรับ REST ในระบบนี้คือ:
- REST สามารถอ่านได้โดยมนุษย์
- ส่วนที่เหลือมีการทำแผนที่กริยาที่กำหนดไว้อย่างดี (เช่น CRUD) คำนามและรหัสการตอบสนองกับวัตถุโปรโตคอล;
- มันทำงานผ่าน HTTP และส่งผ่านผู้รับมอบฉันทะที่เป็นไปได้ทั้งหมด;
ส่วนที่เหลือ REST คือ:
- เราไม่เพียง แต่ต้องการสไตล์การสื่อสารที่ตอบสนองการร้องขอเท่านั้น
- รหัสข้อผิดพลาด HTTP อาจไม่เพียงพอสำหรับจัดการข้อผิดพลาดการสื่อสารสามระดับ
Front-end
อาจจะกลับ202 Accepted
ไปโทร async บางเพียงเพื่อจะพบว่าสิ่งที่จำเป็นHome
การเชื่อมต่อถูกทำลายและมีควรจะได้รับ503
; Home
Client
ความต้องการที่จะส่งข้อความไปยังClient
จะต้องสำรวจFront-end
หรือเพื่อรักษาการเชื่อมต่อ
เรากำลังพิจารณาWAMP / Autobahnบน Websocket เพื่อรับฟังก์ชั่นการเผยแพร่ / สมัครสมาชิกเมื่อมันทำให้ฉันรู้สึกว่ามันดูเหมือนคิวข้อความอยู่แล้ว
มันคุ้มค่าหรือไม่ที่จะประเมินคิวการส่งข้อความว่าเป็นการขนส่งหรือไม่
ดูเหมือนว่า contras queue message คือ:
- ฉันจะต้องกำหนดคำกริยา CRUD และรหัสข้อผิดพลาดด้วยตัวเองในระดับข้อความ
- ฉันอ่านบางอย่างเกี่ยวกับ "ค่าบำรุงรักษาที่สูงขึ้น" แต่มันหมายความว่าอย่างไร
การพิจารณาเหล่านี้มีความสำคัญเพียงใด
@Jimmy Hoffa
จุดที่ถูกต้องขอบคุณ ถูกต้อง แต่ไม่สมบูรณ์ มันเป็นฐานข้อมูลทั่วไปที่เก็บข้อมูลและอื่น ๆ @Javier
ขอบคุณมันเป็นคำตอบที่ดี
@Mike Brown
อย่างแน่นอน กรุณาทำ