वेब फ्रेमवर्क

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

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

1995 में, सम्पूर्ण विधि से एकीकृत सर्वर विकास वातावरण प्राथमिक बार उत्पन हुआ एवं नई वेब-विशिष्ट भाषाएं, जैसे कि कोल्ड़फ्यूज़न, पीएचपी एवं सक्रिय सर्वर पेज प्रस्तुति की गई।

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

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

फ्रेमवर्क संरचना के प्रकार
अधिकांश वेब फ्रेमवर्क मॉडल-व्यू-कंट्रोलर वास्तु पैटर्न पर आधारित होते हैं।

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

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

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

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

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

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

सर्वर-साइड

 * अपाचे विकेट
 * एएसपी.नेट कोर
 * केकेपीएचपी
 * उत्प्रेरक (सॉफ्टवेयर)
 * कोडइग्निटर
 * सीपीपीसीएमएस
 * डिजानगो (वेब ​​फ्रेमवर्क)
 * फ्लास्क (वेब ​​फ्रेमवर्क)
 * जाम.पीवाई (वेब ​​फ्रेमवर्क)
 * यी
 * लारवेल
 * मोजोलिशियस
 * रूबी ऑन रेल्स
 * पाल.जेएस
 * सिम्फनी
 * वसंतएमवीसी
 * डब्ल्यूटी (वेब ​​टूलकिट)
 * ज़ेंड फ्रेमवर्क

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

विचार, विकी एवं वेबलॉग

 * विकीबेस

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

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

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

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

वेब फ्रेमवर्क प्रदान करने वाली अन्य सुविधाओं में डेटाबेस लेनदेन एवं आंकड़ों का विस्थापन सम्मलित हैं|

यूआरएल मानचित्रण
फ्रेमवर्क की यूनिफ़ॉर्म रिसोर्स लोकेटर मैपिंग या रूटिंग सुविधा वह तंत्र है जिसके द्वारा फ्रेमवर्क यूआरएल की व्याख्या की जाती है। कुछ आकृति, जैसे द्रुपल एवं डिजानगो, नियमित अभिव्यक्ति का उपयोग करते हुए पूर्व-निर्धारित पैटर्न के विरुद्ध प्रदान किए गए यूआरएल से मिलते हैं, जबकि कुछ अन्य प्रदान किए गए यूआरएल को ऐसे यूआरएल में अनुवाद करने के लिए पुनर्लेखन प्रौद्यौगिकी का उपयोग करते हैं जिसे अंतर्निहित इंजन पहचान लेगा। अन्य प्रौद्यौगिकी ग्राफ ट्रैवर्सल है जिसे ज़ोप द्वारा उपयोग किया जाता है, जहां यूआरएल चरणों में विघटित होता है जो ऑब्जेक्ट ग्राफ़ (मॉडल एवं विचारों के) को ज्ञात करता है।

यूआरएल मैपिंग सिस्टम जो रूट एवं हैंडल अनुरोधों के लिए पैटर्न मिलान या पुनर्लेखन का उपयोग करता है, यूआरएल को अधिक अनुकूल यूआरएल को छोटा करने की अनुमति देता है, साइट की सादगी को विस्तारित करता है एवं अनुशंधान इंजन द्वारा उत्तम अनुक्रमण की अनुमति देता है। उदाहरण के लिए, "/page.cgi?cat=science&topic=physics" से समाप्त होने वाले यूआरएल को केवल /page/science/physics में परवर्तित किया जा सकता है। यह यूआरएल को लोगों के लिए याद रखना, पढ़ना एवं लिखना सरल बनाता है, एवं साइट के संरचनात्मक विन्यास के विषय में उत्तम जानकारी के साथ अनुशंधान  इंजन प्रदान करता है। ग्राफ़ ट्रैवर्सल दृष्टिकोण भी अनुकूल यूआरएल के निर्माण में परिणत होता है। छोटा यूआरएल जैसे /पेज/विज्ञान डिफ़ॉल्ट रूप से सम्मिलित होता है क्योंकि यह /पेज/विज्ञान/फिजिक्स के लंबे ट्रैवर्सल का छोटा रूप है।

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

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

वेब सेवाएं
कुछ आकृति वेब सेवाएँ बनाने एवं प्रदान करने के लिए उपकरण प्रदान करते हैं। ये उपयोगिताएँ वेब एप्लिकेशन के समान उपकरण प्रदान कर सकती हैं।

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