terminology - स्टेटलेस बनाम स्टेटफुल-मैं कुछ ठोस जानकारी का उपयोग कर सकता हूं




stateful stateless (5)

मुझे उन लेखों में रूचि है जिनमें प्रोग्रामिंग में स्टेटलेस और स्टेटफुल डिज़ाइन के बारे में कुछ ठोस जानकारी है। मुझे दिलचस्पी है क्योंकि मैं इसके बारे में और जानना चाहता हूं, लेकिन मुझे इसके बारे में कोई अच्छा लेख नहीं मिल रहा है। मैंने वेब पर दर्जनों लेख पढ़े हैं जो इस विषय पर अस्पष्ट चर्चा करते हैं, या वे वेब सर्वर और सत्रों के बारे में बात कर रहे हैं - जो 'स्टेटस बनाम स्टेटलेस बनाम भी हैं, लेकिन मुझे कोडिंग में विशेषताओं के स्टेटलेस बनाम स्टेटफुल डिज़ाइन में दिलचस्पी है । उदाहरण: मैंने सुना है कि बीएल-वर्ग डिज़ाइन, इकाई वर्गों (या कम से कम मैं उन्हें कॉल करता हूं - जैसे व्यक्ति (आईडी, नाम, ..)) स्टेटफुल आदि हैं।

मुझे लगता है कि यह जानना महत्वपूर्ण है, क्योंकि मुझे विश्वास है कि अगर मैं इसे समझ सकता हूं, तो मैं बेहतर कोड लिख सकता हूं (जैसे दिमाग में ग्रैन्युलरिटी)।

वैसे भी, वास्तव में छोटा, यहां मैं क्या जानता हूं 'स्टेटस बनाम स्टेटलेस बनाम:

स्टेटफुल (WinForms की तरह): आगे के उपयोग के लिए डेटा स्टोर करता है, लेकिन किसी एप्लिकेशन की स्केलेबिलिटी को सीमित करता है, क्योंकि यह सीपीयू या मेमोरी सीमा से सीमित है

स्टेटलेस (एएसपी.नेट की तरह - हालांकि एएसपी व्यूस्टेट्स के साथ बयानपूर्ण होने का प्रयास करता है): कार्य पूरा होने के बाद, डेटा स्थानांतरित हो जाता है, और उदाहरण थ्रेड पूल (असोरफस) को वापस सौंप दिया जाता है।

जैसा कि आप देख सकते हैं, यह बहुत अस्पष्ट और सीमित जानकारी है (और सर्वर इंटरैक्शन पर काफी ध्यान केंद्रित किया गया है), इसलिए यदि आप मुझे जानकारी के कुछ और स्वादिष्ट बिट्स प्रदान कर सकते हैं तो मैं वास्तव में आभारी रहूंगा :)


एक राज्यव्यापी ऐप वह होता है जो चलने शुरू होने के बाद क्या हुआ या बदल गया है इसके बारे में जानकारी संग्रहीत करता है। इसके बारे में कोई भी सार्वजनिक जानकारी "मोड" में है, या कितने रिकॉर्ड संसाधित किए गए हैं, या जो कुछ भी, यह राज्यपूर्ण बना देता है।

स्टेटलेस ऐप्स उस जानकारी में से किसी का खुलासा नहीं करते हैं। वे हर बार एक ही अनुरोध, फ़ंक्शन या विधि कॉल पर एक ही प्रतिक्रिया देते हैं। HTTP अपने कच्चे रूप में स्टेटलेस है - यदि आप किसी विशेष यूआरएल को प्राप्त करते हैं, तो आप हर बार एक ही प्रतिक्रिया प्राप्त करते हैं (सैद्धांतिक रूप से)। पाठ्यक्रम का अपवाद तब होता है जब हम शीर्ष पर स्टेटसनेस जोड़ना शुरू करते हैं, उदाहरण के लिए एएसपी.नेट वेब ऐप्स के साथ :) लेकिन अगर आप केवल एचटीएमएल फाइलों और छवियों के साथ एक स्थिर वेबसाइट के बारे में सोचते हैं, तो आपको पता चलेगा कि मेरा क्या मतलब है।


मनी ट्रांसफर ऑनलाइन फॉर्म एक खाते को दूसरे खाते में स्थानांतरित कर दिया जाता है, क्योंकि प्राप्त खाते में प्रेषक के बारे में जानकारी होती है। किसी व्यक्ति से किसी अन्य व्यक्ति को नकद सौंपना, यह लेनदेन स्टेटलेस है, क्योंकि नकद प्राप्त होने के बाद दाता की पहचान नकद के साथ नहीं है।


मेरा सुझाव है कि आप स्टैक ओवरव्लो में एक question से शुरू करें जो स्टेटलेस प्रोग्रामिंग के फायदों पर चर्चा करता है। यह कार्यात्मक प्रोग्रामिंग के संदर्भ में अधिक है, लेकिन जो भी आप पढ़ेंगे, वह अन्य प्रोग्रामिंग प्रतिमानों में भी लागू होता है।

स्टेटलेस प्रोग्रामिंग एक फ़ंक्शन की गणितीय धारणा से संबंधित है, जिसे एक ही तर्क के साथ बुलाया जाता है, हमेशा एक ही परिणाम लौटाते हैं। यह कार्यात्मक प्रोग्रामिंग प्रतिमान की एक महत्वपूर्ण अवधारणा है और मुझे उम्मीद है कि आप उस क्षेत्र में कई प्रासंगिक लेख ढूंढ पाएंगे।

एक और क्षेत्र जिसे आप अधिक समझने के लिए शोध कर सकते हैं, वह शानदार वेब सेवाएं है। ये अन्य वेब प्रौद्योगिकियों के विपरीत "स्टेटलेस" डिज़ाइन द्वारा हैं जो किसी भी तरह राज्य को रखने का प्रयास करते हैं। (वास्तव में आप क्या कहते हैं कि एएसपी.नेट स्टेटलेस सही नहीं है - एएसपी.NET व्यूस्टेट का उपयोग करके राज्य को रखने के लिए कड़ी मेहनत करता है और निश्चित रूप से राज्य के रूप में चिह्नित किया जाता है। दूसरी ओर एएसपी.नेट एमवीसी एक स्टेटलेस तकनीक है)। ऐसे कई स्थान हैं जो विश्वसनीय वेब सेवाओं (जैसे this ब्लॉग स्पॉट) की "स्टेटलेसनेस" पर चर्चा करते हैं, लेकिन आप फिर से एक SO question से शुरू कर सकते हैं।


विशेषण स्टेटफुल या स्टेटलेस केवल वार्तालाप की स्थिति को संदर्भित करता है, यह फ़ंक्शन की अवधारणा के संबंध में नहीं है जो एक ही इनपुट के लिए समान आउटपुट प्रदान करता है। यदि ऐसा है तो कोई गतिशील वेब एप्लिकेशन (इसके पीछे डेटाबेस के साथ) एक राज्य सेवा होगी, जो स्पष्ट रूप से झूठी है। इस बात को ध्यान में रखते हुए यदि मैं अंतर्निहित तकनीक (जैसे कोकी या http सत्र) में बातचीत स्थिति रखने के लिए कार्य सौंपता हूं, तो मैं एक राज्य सेवा प्रदान कर रहा हूं, लेकिन यदि सभी आवश्यक जानकारी (संदर्भ) पैरामीटर के रूप में पारित की जाती है I मैं एक स्टेटलेस सेवा लागू कर रहा हूँ। यह ध्यान दिया जाना चाहिए कि भले ही पारित पैरामीटर बातचीत स्थिति (जैसे टिकट या सत्र आईडी) का "पहचानकर्ता" है, हम अभी भी एक स्टेटलेस सेवा के तहत काम कर रहे हैं, क्योंकि बातचीत स्टेटलेस है (टिकट लगातार ग्राहक के बीच पारित होता है और सर्वर), और दो अंतराल हैं, इसलिए बोलने के लिए, "स्टेटफुल"।


स्टेटलेस का मतलब अतीत की कोई याद नहीं है। प्रत्येक लेनदेन किया जाता है जैसे कि यह पहली बार किया जा रहा था।

राज्य का मतलब है कि अतीत की याद आती है। पिछले लेनदेन को याद किया जाता है और वर्तमान लेनदेन को प्रभावित कर सकता है।

  Stateless:

     //The state is derived by what is passed into the function

        function int addOne(int number)
        {
        return number + 1;
        }

  Stateful:

     //The state is maintained by the function

        private int _number = 0; //initially zero

        function int addOne()
        {
        _number++;
        return _number;
        }

इसका संदर्भ लें: https://softwareengineering.stackexchange.com/questions/101337/whats-the-difference-between-stateful-and-stateless