अन्य उत्तर पर जोर दिया है क्या क्लाइंट-साइड और सर्वर-साइड प्रोग्रामिंग है: कौन-सी भाषाओं ज्यादातर उपयोग किया जाता है, क्या कार्य पूरा किया जाना है, आदि
यह बिल्कुल सही है, लेकिन मैं वेब प्रोग्रामिंग के संदर्भ में, दोनों प्रकार की प्रोग्रामिंग में क्या अंतर हैं, इस पर थोड़ा ध्यान केंद्रित करने से चूक जाता हूं । मुझे पता करने की कोशिश करते हैं।
सुरक्षा और अनुमति
क्लाइंट-साइड प्रोग्रामिंग में, सुरक्षा चिंताओं के कारण, आपके पास पूर्ण सिस्टम तक पहुंच नहीं है। उपयोगकर्ता आवश्यक रूप से प्रत्येक और हर उस कोड पर भरोसा नहीं करता है जो वेब से डाउनलोड किया गया है और उसकी मशीन पर निष्पादित किया गया है, और यह क्लाइंट-साइड वातावरण (ब्राउज़र और जावास्क्रिप्ट इंजन) का मुख्य डिजाइन लक्ष्य है: एक पृथक वातावरण प्रदान करना जहां क्लाइंट कोड निष्पादित कर सकता है, लेकिन अनुमत दायरे से बाहर कुछ भी एक्सेस नहीं कर सकता है।
सर्वर-साइड प्रोग्रामिंग में, प्रत्येक एप्लिकेशन की अंतर्निहित प्रणाली तक पहुंच को सीमित करना भी अच्छा अभ्यास है, लेकिन यह आप पर बहुत कम लागू होता है, क्योंकि अंत में, आप या आपकी कंपनी उस सिस्टम के नियंत्रण में हैं। यह 'अलग-थलग पिंजरे' का डिज़ाइन सर्वर-साइड प्रोग्रामिंग टूल और भाषाओं में बिल्ट-इन नहीं है , लेकिन इंस्टॉलेशन सेटअप के माध्यम से पूरा किया जाता है (प्रतिबंधित अनुमतियों वाले समर्पित उपयोगकर्ताओं का उपयोग करके, उन पोर्ट्स को चुनना जो रूट अनुमतियों की आवश्यकता होती है या जिनकी आवश्यकता नहीं होती है)।
तैनाती और मंच
सर्वर-साइड प्रोग्रामिंग में, तैनाती को आपके कोड के बाहर से होता है, किसी प्रकार के टूल (भले ही वह हो make install
या नहीं git clone
) का उपयोग करते हुए, और यह तैनाती आमतौर पर मैनुअल होती है - या कम से कम, यह अर्ध-पर्यवेक्षण में होने की उम्मीद है मार्ग। वह सिस्टम (जिसका अर्थ है OS) जिस पर आप तैनात होते हैं, आमतौर पर कई मशीनों में समान होता है, लेकिन यह आपकी आवश्यकताओं के लिए भारी अनुकूलित हो सकता है।
क्लाइंट-साइड प्रोग्रामिंग में, परिनियोजन आपके सर्वर-साइड कोड से होता है, जो क्लाइंट को स्वचालित रूप से और पर्यवेक्षण के बिना कार्य करता है। अंतर्निहित प्रणाली (मुख्य रूप से ब्राउज़र का अर्थ) बहुत बड़ी संख्या में मशीनों में बहुत भिन्न हो सकती है। सभी में तैनाती को संभव बनाने के लिए, मानकों को रखा जाना चाहिए, और एक ही भाषा और पर्यावरण के लिए बहुत मजबूत प्रवृत्ति है।
यही कारण है कि सर्वर-साइड कोड को एक मशीन से दूसरे मशीन में कॉपी करने में सप्ताह लग सकते हैं, जबकि क्लाइंट-साइड कोड आमतौर पर विभिन्न मशीनों में निष्पादित करने के लिए तुच्छ होता है।
राज्य और माध्यमिक प्रभाव
(डिस्क्लेमर: यह अब तक का सबसे व्यक्तिपरक बिंदु है। संभवतः मेरे तर्क में कई गलत पहलू हैं। यह सिर्फ एक दिलचस्प परिकल्पना है, मेरे विचार में।)
सर्वर-साइड प्रोग्रामिंग में, राज्य एक बहुत बड़ी चिंता है, जिसका अर्थ है कि उपयोगकर्ता के अनुरोध पर डेटा को कैसे पुनः प्राप्त करना और अपडेट करना है, क्योंकि संगामिति के कारण संघर्ष की संभावना है। भले ही इस जटिलता का अधिकांश डेटाबेस सर्वर पर लोड हो रहा है, यह सर्वर-साइड कोड की ज़िम्मेदारी है कि डेटाबेस को अपने इंटरफ़ेस के सही तरीके से उपयोग करके डेटा की अखंडता की गारंटी देने की अनुमति दें (उदाहरण के लिए अपडेट के लिए कैश का उपयोग न करें जो कि कभी नहीं देखा जाता है। DB), जबकि यह सर्वर-साइड कोड का भी एक लक्ष्य है, डेटाबेस को काम के साथ अधिभार नहीं देना और उपयोगकर्ता की प्रतिक्रिया का इंतजार करना।
क्लाइंट-साइड प्रोग्रामिंग में, उपयोगकर्ता को परिणाम पेश करना एक बहुत बड़ी चिंता है, और इसका अर्थ है माध्यमिक प्रभाव (ज्यादातर स्क्रीन पर मुद्रण)। यह कहने के लिए नहीं है कि इसमें कोई राज्य शामिल नहीं है (उदाहरण के लिए कुकीज़), केवल यह है कि कोड का मुख्य लक्ष्य वास्तव में उपयोगकर्ता के साथ इंटरफ़ेस करना है, और यह माध्यमिक प्रभाव के बिना नहीं हो सकता है।
यही कारण है कि क्लाइंट-साइड प्रोग्रामिंग को आमतौर पर (कुछ बिंदु पर) एक डेमो के साथ स्क्रीन को देखने की आवश्यकता होती है, यह जांचने के लिए कि सभी रंग और लेआउट सही हैं, जबकि सर्वर-साइड प्रोग्रामिंग एक पाठ-उन्मुख वातावरण में लगभग विशेष रूप से हो सकती है, जहां स्वचालित परीक्षणों की जाँच करें कि तर्क अभी भी वही कर रहा है जो उसे करना चाहिए था।