सर्वर-साइड स्क्रिप्टिंग

सर्वर-साइड भाषा का अंकन डेवलपमेंट में उपयोग की जाने वाली एक तकनीक है जिसमें वेब विकास पर स्क्रिप्टिंग भाषाओं को नियोजित करना शामिल है जो वेबसाइट के लिए प्रत्येक उपयोगकर्ता (क्लाइंट) के अनुरोध के लिए अनुकूलित प्रतिक्रिया उत्पन्न करता है। वैकल्पिक वेब सर्वर के लिए एक स्थिर वेब पेज देने के लिए है। लिपियों को किसी भी उपलब्ध सर्वर-साइड स्क्रिप्टिंग भाषा में लिखा जा सकता है (नीचे देखें)। सर्वर-साइड स्क्रिप्टिंग को क्लाइंट-साइड स्क्रिप्टिंग से अलग किया जाता है, जहां एम्बेडेड स्क्रिप्ट, जैसे कि जावास्क्रिप्ट, वेब ब्राउज़र में क्लाइंट-साइड चलाए जाते हैं, लेकिन दोनों तकनीकों को अक्सर एक साथ उपयोग किया जाता है।

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

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

ऐसे प्रोग्राम जो उपयोगकर्ता के स्थानीय कंप्यूटर पर बिना किसी नेटवर्क पर डेटा भेजे या प्राप्त किए चलते हैं, उन्हें क्लाइंट नहीं माना जाता है, और इसलिए ऐसे प्रोग्रामों के संचालन को क्लाइंट-साइड ऑपरेशन नहीं माना जाएगा।

इतिहास
नेटस्केप ने नेटस्केप एंटरप्राइज़ सर्वर के साथ सर्वर-साइड स्क्रिप्टिंग के लिए जावास्क्रिप्ट का कार्यान्वयन शुरू किया, जिसे पहली बार दिसंबर, 1994 में जारी किया गया (ब्राउज़रों के लिए जावास्क्रिप्ट जारी करने के तुरंत बाद)। बोस्टन, एमए टेलीविजन स्टेशन WCVB टीवी  के लिए पहली वेबसाइट विकसित करते समय सर्वर-साइड स्क्रिप्टिंग का उपयोग बाद में 1995 की शुरुआत में फ्रेड डुफ्रेसने द्वारा किया गया था। तकनीक में वर्णित है =पीएन/5835712 यूएस पेटेंट 5835712। पेटेंट 1998 में जारी किया गया था और अब इसका स्वामित्व  खुला आविष्कार नेटवर्क  (OIN) के पास है। 2010 में ओआईएन ने सर्वर-साइड स्क्रिप्टिंग पर अपने काम के लिए फ्रेड डुफ्रेसने को एक विशिष्ट आविष्कारक नामित किया।

स्पष्टीकरण
वेब के पहले के दिनों में, कॉमन गेटवे इंटरफ़ेस  (CGI) का उपयोग करके C (प्रोग्रामिंग लैंग्वेज) प्रोग्राम, पर्ल स्क्रिप्ट और  खोल स्क्रिप्ट  के संयोजन का उपयोग करके सर्वर-साइड स्क्रिप्टिंग लगभग विशेष रूप से की जाती थी। उन स्क्रिप्ट्स को ऑपरेटिंग सिस्टम द्वारा निष्पादित किया गया था, और परिणाम वेबसर्वर द्वारा वापस दिए गए थे। कई आधुनिक वेब सर्वर सीधे वेब सर्वर द्वारा या वेब सर्वर पर एक्सटेंशन मॉड्यूल (जैसे mod_perl या mod_php) के माध्यम से सक्रिय सर्वर पेज, जावा सर्वर पेज, पर्ल, पीएचपी और रूबी (प्रोग्रामिंग भाषा) जैसी ऑन-लाइन स्क्रिप्टिंग भाषाओं को निष्पादित कर सकते हैं। उदाहरण के लिए, WebDNA में अपना स्वयं का एम्बेडेड डेटाबेस सिस्टम शामिल है। स्क्रिप्टिंग के किसी भी रूप (यानी, CGI या प्रत्यक्ष निष्पादन) का उपयोग जटिल बहु-पृष्ठ साइटों के निर्माण के लिए किया जा सकता है, लेकिन बाहरी दुभाषियों को कॉल की कम संख्या के कारण प्रत्यक्ष निष्पादन के परिणामस्वरूप आमतौर पर कम ओवरहेड होता है।

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

सर्वर-साइड स्क्रिप्ट को क्लाइंट के बजाय सर्वर द्वारा पूरी तरह से प्रोसेस किया जाता है। जब क्लाइंट सर्वर-साइड स्क्रिप्ट वाले पेज का अनुरोध करता है, तो एप्लिकेशन सर्वर स्क्रिप्ट को प्रोसेस करता है और क्लाइंट को एक HTML पेज लौटाता है।

सर्वर-साइड रेंडरिंग
वेब की शुरुआत में, सामग्री विशुद्ध रूप से बैक एंड पर उत्पन्न हुई थी। फ्रंट एंड एक पेज का आवेदन को बड़े पैमाने पर अपनाने के बाद, क्लाइंट एप्लिकेशन का उपयोग करके HTML उत्पन्न करने के लिए एक नया दृष्टिकोण पेश किया गया था, लेकिन बैक एंड पर। सर्वर-साइड रेंडरिंग का उपयोग करने वाले फ्रेमवर्क के उदाहरण हैं Next.js, Nuxt.js और Nest.js। वे सर्वर की सामग्री उत्पन्न करने के लिए क्रमशः React.js, Vue.js और Angular (वेब ​​फ्रेमवर्क) का उपयोग करते हैं।

सर्वर-साइड जनरेशन
एक वेबसाइट के लिए सामग्री तैयार करने की एसएसआर तकनीक के समान एक और सर्वर-साइड पीढ़ी का उपयोग कर रहा है। यह तकनीक ऐसे एप्लिकेशन का उपयोग करती है जो स्थिर HTML पृष्ठ बनाती है और फिर उन फ़ाइलों को सर्वर पर भेज दिया जाता है। फ़ाइल निर्माण पूरी तरह से अलग कंप्यूटर पर हो सकता है उदाहरण के लिए निरंतर वितरण का उपयोग करना। जेकिल (सॉफ्टवेयर), गैट्सबी (सॉफ्टवेयर) या एलेवेंटी (सॉफ्टवेयर) एसएसजी टूल्स के उदाहरण हैं। उन साइटों को अक्सर Netlify या GitHub पेज पर होस्ट किया जाता है। गिटहब जेकिल परियोजनाओं का भी समर्थन करता है जहां गिट में परिवर्तन जोड़े जाने पर यह स्वचालित रूप से साइट बनाता है।

भाषाएँ
कई सर्वर-साइड स्क्रिप्टिंग भाषाएँ उपलब्ध हैं, जिनमें शामिल हैं:
 * एक्टिव वीएफपी (* .एवीएफपी)
 * सक्रिय सर्वर पृष्ठ (*.एएसपी)
 * ASP.NET वेब प्रपत्र (*.aspx)
 * ASP.NET वेब पेज (*.cshtml, *.vbhtml)
 * कोल्डफ्यूजन मार्कअप लैंग्वेज (*.cfm)
 * जाओ (प्रोग्रामिंग भाषा) (* .गो)
 * Google Apps स्क्रिप्ट (* .gs)
 * हैक (प्रोग्रामिंग भाषा) (* .php)
 * हास्केल (प्रोग्रामिंग भाषा) (*.hs) (उदाहरण: यसोड (वेब ​​फ्रेमवर्क))
 * जावा (प्रोग्रामिंग भाषा) (*.jsp, *.do) JavaServer पेजेस के माध्यम से
 * जावास्क्रिप्ट सर्वर-साइड जावास्क्रिप्ट (*.ssjs, *.js) का उपयोग कर रहा है (उदाहरण: Node.js)
 * कमंद (प्रोग्रामिंग भाषा) (*.lasso)
 * लुआ (प्रोग्रामिंग भाषा) (*.lp *.op *.lua)
 * पार्सर (प्रोग्रामिंग भाषा) (*.p)
 * CGI.pm मॉड्यूल के माध्यम से पर्ल (*.cgi, *.ipl, *.pl)
 * पीएचपी (*.php, *.php3, *.php4, *.phtml)
 * पायथन (प्रोग्रामिंग लैंग्वेज) (*.py) (उदाहरण: पिरामिड (वेब ​​फ्रेमवर्क)#पिरामिड, फ्लास्क (वेब ​​फ्रेमवर्क), Django (वेब ​​फ्रेमवर्क))
 * आर (प्रोग्रामिंग भाषा) (*.rhtml)
 * रूबी (प्रोग्रामिंग भाषा) (*.rb, *.rbw) (उदाहरण: रूबी ऑन रेल्स)
 * टीसीएल (प्रोग्रामिंग भाषा) (* .टीसीएल)
 * वेबडीएनए (*.डीएनए,*.टीपीएल)
 * ओपनएज एडवांस्ड बिजनेस लैंग्वेज (*.r,*.w)

यह भी देखें

 * क्लाइंट-साइड स्क्रिप्टिंग
 * सामग्री प्रबंधन प्रणाली (सीएमएस)
 * एज साइड शामिल है
 * जावा सर्वर पेज
 * नोड.जेएस
 * अगला.जेएस
 * वेब डिजाइन और वेब विकास की रूपरेखा
 * प्लैक (सॉफ्टवेयर)|पर्ल/प्लैक
 * पीएचपी
 * सर्वर साइड शामिल है (एसएसआई)
 * वेब विकास