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

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

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

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

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

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

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

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

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

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

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

भाषाएँ
कई सर्वर-साइड स्क्रिप्टिंग भाषाएँ उपलब्ध हैं, जिनमें सम्मिलित हैं:
 * एक्टिव वीएफपी (* .एवीएफपी)
 * सक्रिय सर्वर पृष्ठ (*.एएसपी)
 * ASP.NET वेब प्रपत्र (*.aspx)
 * ASP.NET वेब पेज (*.csएचटीएमएल, *.vbएचटीएमएल)
 * कोल्डफ्यूजन मार्कअप लैंग्वेज (*.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, *.pएचटीएमएल)
 * पायथन (प्रोग्रामिंग लैंग्वेज) (*.py) (उदाहरण: पिरामिड (वेब ​​फ्रेमवर्क)#पिरामिड, फ्लास्क (वेब ​​फ्रेमवर्क), Django (वेब ​​फ्रेमवर्क))
 * आर (प्रोग्रामिंग भाषा) (*.rएचटीएमएल)
 * रूबी (प्रोग्रामिंग भाषा) (*.rb, *.rbw) (उदाहरण: रूबी ऑन रेल्स)
 * टीसीएल (प्रोग्रामिंग भाषा) (* .टीसीएल)
 * वेबडीएनए (*.डीएनए,*.टीपीएल)
 * ओपनएज एडवांस्ड बिजनेस लैंग्वेज (*.r,*.w)

यह भी देखें

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