हाल ही में कुछ सहकर्मियों और मैं चर्चा कर रहा था कि AngularJS सेवाओं के पास राज्य होना चाहिए या नहीं। हम इसके लिए और इसके खिलाफ कुछ तर्क लेकर आए और मैं इस विषय पर अतिरिक्त विचार और प्रतिक्रिया प्राप्त करना चाहता था। मेरी खोज में मुझे this मिला लेकिन उल्लेख किया गया कोई स्पष्ट सर्वोत्तम अभ्यास प्रतीत नहीं होता है। किसी भी ग्राहक-पक्ष की दुनिया में किसी सेवा को कभी भी राज्य नहीं रखना चाहिए, लेकिन मुझे लगता है कि यह स्वीकार्य क्लाइंट-साइड हो सकता है क्योंकि यह एक अलग समस्या है। राज्य पकड़े सेवाओं के लिएक्या एक कोणीय सेवा राज्य होना चाहिए?
कारण:
- सेवा एक से अधिक थ्रेड द्वारा पहुँचा जा करने के लिए नहीं जा रहा है। प्रत्येक ब्राउज़र के पास सेवा का अपना उदाहरण होगा।
- सेवा को केवल राज्य को पकड़ने की अनुमति देता है, केवल रूटस्कोप में इसे संग्रहीत करने की बजाय इसकी परवाह करता है।
- सेवाएं idempotent अब कर रहे हैं: राज्य पकड़ नहीं करने के लिए सेवाओं के लिए
कारण समाहित। कॉलिंग फ़ंक्शंस राज्य बदल सकता है और इसलिए सेवा की स्थिति के आधार पर इसे कॉल करते समय अलग-अलग परिणाम हो सकते हैं।
- मुझे लगता है कि कुल मिलाकर परीक्षण करना आसान होगा।
एक तरीका जो "राज्य होल्डिंग स्टेटस" अनुभाग में # 2 को संबोधित कर सकता है, उस रूटस्टॉप पर एक ऐपस्टेट ऑब्जेक्ट सेट होना होगा जिसमें एप्लिकेशन की वर्तमान स्थिति हो। तब सभी राज्य एक स्थान पर इकट्ठे किए जाएंगे और फिर आप अपनी सेवा में जो कुछ भी चाहते हैं उसे खींच लेंगे। मैंने यह पाया और
$ http और $ संसाधन के बारे में अच्छे अंक। साथ ही, मुझे केवल राज्य को संग्रहीत करने के बारे में आपका विचार पसंद है जो सेवा पर बुलाए गए कार्यों द्वारा संशोधित नहीं किया जाएगा (सेवा को प्रारंभ करते समय शायद छोड़कर)। – testing123