मैं त्रिस्तरीय प्रणाली के लिए REST API डिज़ाइन कर रहा हूं जैसे: Client application-> Front-end API cloud server-> user's home API server (Home)।
Homeएक घरेलू उपकरण है, और यह Front-endवेबसोकेट या एक लंबे सर्वेक्षण के माध्यम से संबंध बनाए रखने के लिए माना जाता है (यह पहला स्थान है जहां हम REST का उल्लंघन कर रहे हैं। यह बाद में और भी खराब हो जाता है) । Front-endज्यादातर सुरंग कनेक्शन और कॉल के कुछ Clientअनुरोधों को Homeस्वयं करने का अनुरोध करती हैं। कभी-कभी Homeसूचनाएं भेजता है Client।
Front-endऔर Homeमूल रूप से एक ही एपीआई है; LAN पर सीधे Clientकनेक्ट हो सकता है Home। इस मामले में, Homeकुछ Clientकार्यों को Front-endस्वयं ही पंजीकृत करने की आवश्यकता है।
इस प्रणाली में बाकी के लिए नियम हैं:
- REST मानव-पठनीय है;
- REST में क्रिया वस्तुओं की एक अच्छी तरह से परिभाषित मानचित्रण (जैसे CRUD), प्रोटोकॉल ऑब्जेक्ट्स के लिए संज्ञा और प्रतिक्रिया कोड हैं;
- यह HTTP पर काम करता है और सभी संभावित परदे के पीछे से गुजरता है;
अन्य कंट्रास्ट हैं:
- हमें न केवल एक अनुरोध-प्रतिक्रिया संचार शैली की आवश्यकता है, बल्कि एक प्रकाशन-सदस्यता भी चाहिए;
- तीन-स्तरीय संचार त्रुटियों को संभालने के लिए HTTP त्रुटि कोड अपर्याप्त हो सकता है; केवल कुछ आवश्यक कनेक्शन टूट गया है और वहाँ होना चाहिए था पता लगाने के लिए कुछ async कॉल करने के लिए
Front-endवापस आ सकता है ;202 AcceptedHome503 Homeको संदेश भेजने की आवश्यकता हैClient।Clientचुनाव करना होगाFront-endया संबंध बनाए रखना होगा।
हम प्रकाशित / सदस्यता कार्यक्षमता प्राप्त करने के लिए Websocket पर WAMP / Autobahn पर विचार कर रहे हैं , जब उसने मुझे मारा कि यह पहले से ही संदेश कतार की तरह लग रहा है।
क्या यह परिवहन के रूप में मैसेजिंग कतार का मूल्यांकन करने लायक है?
संदेश कतार विरोधाभास की तरह लग रहे हैं:
- मुझे संदेश स्तर पर CRUD क्रिया और त्रुटि कोड को स्वयं परिभाषित करना होगा।
- मैंने "उच्च रखरखाव लागत" के बारे में कुछ पढ़ा, लेकिन इसका क्या मतलब है?
ये विचार कितने गंभीर हैं?
@Jimmy Hoffaमान्य बिंदु, धन्यवाद। यह सही है, लेकिन पूरी तरह से नहीं। यह एक आम डेटाबेस, भंडारण और इतने पर है। @Javierधन्यवाद, यह उत्तर का एक अच्छा हिस्सा है।
@Mike Brownबिल्कुल सही। कृपया कीजिए।