वेब फ्रेमवर्क: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(54 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{short description|Software framework to support the development of websites}}
{{short description|Software framework to support the development of websites}}
वेब फ्रेमवर्क (WF) या [[ वेब अनुप्रयोग ]] फ्रेमवर्क (WAF) [[ सॉफ्टवेयर ढांचा ]] है जिसे वेब सेवाओं, [[वेब संसाधन|वेब संसाधनों]] और वेब [[एपीआई]] सहित वेब एप्लिकेशन के विकास का समर्थन करने के लिए डिज़ाइन किया गया है। वेब फ्रेमवर्क [[वर्ल्ड वाइड वेब]] पर वेब एप्लिकेशन बनाने और तैनात करने का मानक तरीका प्रदान करते हैं। वेब ढांचे का उद्देश्य [[वेब विकास]] में की जाने वाली सामान्य गतिविधियों से जुड़े ओवरहेड को स्वचालित करना है। उदाहरण के लिए, कई वेब फ्रेमवर्क [[डेटाबेस]] एक्सेस, [[टेम्पलेट प्रोसेसर]] फ्रेमवर्क और सेशन (कंप्यूटर साइंस) प्रबंधन के लिए [[ पुस्तकालय (कम्प्यूटिंग) ]] प्रदान करते हैं, और वे प्रायः कोड के पुन: उपयोग को बढ़ावा देते हैं।{{refn |{{cite web |url=http://docforge.com/wiki/Web_application_framework |title= Web application framework |author=Multiple (wiki) |website=Docforge |archive-url=https://web.archive.org/web/20150723163302/http://docforge.com/wiki/Web_application_framework |archive-date=2015-07-23 }} }} चुकीं वे प्रायः [[गतिशील वेब पेज|गतिशील वेब पेजो]] के विकास को लक्षित करते हैं, वे [[स्थिर वेब पेज|स्थिर वेब पेजो]] पर भी प्रस्तावित होते हैं।{{refn |{{cite web |title=Top Open-Source Static Site Generators |url=https://www.staticgen.com/ |website=StaticGen}}}}
'''वेब फ्रेमवर्क''' या '''वेब अनुप्रयोग''' फ्रेमवर्क[[ सॉफ्टवेयर ढांचा | सॉफ्टवेयर आकृति]] है जिसे वेब सेवाओं, [[वेब संसाधन|वेब संसाधनों]] एवं वेब [[एपीआई]] सहित वेब एप्लिकेशन के विकास का समर्थन करने के लिए डिज़ाइन किया गया है। वेब फ्रेमवर्क [[वर्ल्ड वाइड वेब]] पर वेब एप्लिकेशन बनाने एवं नियुक्त करने का मानक विधि प्रदान करते हैं। वेब आकृति का उद्देश्य [[वेब विकास]] में की जाने वाली सामान्य गतिविधियों से जुड़े ओवरहेड को स्वचालित करना है। उदाहरण के लिए, कई वेब फ्रेमवर्क [[डेटाबेस]] एक्सेस, [[टेम्पलेट प्रोसेसर]] फ्रेमवर्क एवं सेशन (कंप्यूटर विज्ञान) प्रबंधन के लिए [[ पुस्तकालय (कम्प्यूटिंग) |लाइब्रेरी (अर्घकंप्यूटिंग)]] प्रदान करते हैं, एवं वे प्रायः कोड के पुन: उपयोग को विस्तारित करते हैं।{{refn |{{cite web |url=http://docforge.com/wiki/Web_application_framework |title= Web application framework |author=Multiple (wiki) |website=Docforge |archive-url=https://web.archive.org/web/20150723163302/http://docforge.com/wiki/Web_application_framework |archive-date=2015-07-23 }} }} चूँकि वे प्रायः [[गतिशील वेब पेज|गतिशील वेब पेजो]] के विकास को लक्षित करते हैं, वे [[स्थिर वेब पेज|स्थिर वेब पेजो]] पर भी प्रस्तावित होते हैं।{{refn |{{cite web |title=Top Open-Source Static Site Generators |url=https://www.staticgen.com/ |website=StaticGen}}}}


== इतिहास ==
== इतिहास ==
{{Further|Rich web application}}
{{Further|रिच वेब एप्लिकेशन}}


जैसा कि वर्ल्ड वाइड वेब का डिज़ाइन स्वाभाविक रूप से गतिशील नहीं था, शुरुआती [[हाइपरटेक्स्ट]] में हाथ से कोडित [[HTML|H TML]] टेक्स्ट फ़ाइलें सम्मलितथीं जो [[वेब सर्वर]] पर प्रकाशित हुई थीं। प्रकाशित पृष्ठों में कोई भी संशोधन पृष्ठों के लेखक द्वारा किए जाने की आवश्यकता है। 1993 में, [[कॉमन गेटवे इंटरफ़ेस]] (CGI) मानक को वेब सर्वर के साथ बाहरी अनुप्रयोगों को इंटरफेस करने के लिए प्रस्तुत किया गया था, जिससे गतिशील वेब पेज प्रदान किया जा सके जो उपयोगकर्ता इनपुट को प्रतिबिंबित करता हो।<ref>{{cite web
जैसा कि वर्ल्ड वाइड वेब का डिज़ाइन स्वाभाविक रूप से गतिशील नहीं था, प्राथमिक [[हाइपरटेक्स्ट]] में हाथ से कोडित [[HTML|एचटीएमएल]] टेक्स्ट फ़ाइलें सम्मलित थीं जो [[वेब सर्वर]] पर प्रकाशित हुई थीं। प्रकाशित पृष्ठों में कोई भी संशोधन पृष्ठों के लेखक द्वारा किए जाने की आवश्यकता है। 1993 में, [[कॉमन गेटवे इंटरफ़ेस]] (सीजीएल) मानक को वेब सर्वर के साथ बाहरी अनुप्रयोगों को इंटरफेस करने के लिए प्रस्तुत किया गया था, जिससे गतिशील वेब पेज प्रदान किया जा सके जो उपयोगकर्ता इनपुट को प्रतिबिंबित करता हो।<ref>{{cite web
   | title = CGI: Common Gateway Interface
   | title = CGI: Common Gateway Interface
   | url=http://hoohoo.ncsa.uiuc.edu/cgi/intro.html
   | url=http://hoohoo.ncsa.uiuc.edu/cgi/intro.html
   | archive-url = https://web.archive.org/web/20090409213905/http://hoohoo.ncsa.uiuc.edu/cgi/intro.html
   | archive-url = https://web.archive.org/web/20090409213905/http://hoohoo.ncsa.uiuc.edu/cgi/intro.html
   | archive-date = 2009-04-09 }}</ref>
   | archive-date = 2009-04-09 }}</ref> सीजीआई इंटरफ़ेस के मूल कार्यान्वयन का समान्यतः सर्वर लोड पर प्रतिकूल प्रभाव पड़ता है, क्योंकि प्रत्येक अनुरोध ने भिन्न [[प्रक्रिया (कंप्यूटिंग)]] प्रारम्भ की थी।<ref>{{Cite web|title=सीजीआई|url=https://www.ibm.com/docs/en/i/7.4?topic=functionality-cgi|access-date=2021-05-07|website=www.ibm.com|language=en-us}}</ref> कार्यान्वयन सर्वर के संसाधनों में पदचिह्न को अर्घ  करने एवं सामान्य प्रदर्शन को तीव्रता देने के लिए अन्य प्रौद्यौगिकी के मध्य निरंतर प्रक्रियाओं का उपयोग करते हैं।
सीजीआई इंटरफ़ेस के मूल कार्यान्वयन का समान्यतः सर्वर लोड पर प्रतिकूल प्रभाव पड़ता है, क्योंकि प्रत्येक अनुरोध ने भिन्न [[प्रक्रिया (कंप्यूटिंग)]] प्रारम्भ की थी।<ref>{{Cite web|title=सीजीआई|url=https://www.ibm.com/docs/en/i/7.4?topic=functionality-cgi|access-date=2021-05-07|website=www.ibm.com|language=en-us}}</ref> अधिक हाल के कार्यान्वयन सर्वर के संसाधनों में पदचिह्न को कम करने और सामान्य प्रदर्शन को तीव्रता देने के लिए अन्य तकनीकों के मध्य निरंतर प्रक्रियाओं का उपयोग करते हैं।{{citation needed|date=November 2021}}


1995 में, सम्पूर्ण तरीके से एकीकृत सर्वर/भाषा विकास वातावरण प्राथमिक बार उत्पन हुआ और नई वेब-विशिष्ट भाषाएं प्रस्तुतकी गईं, जैसे कि [[ ठंडा गलन | ठंडा गलन]], [[पीएचपी]] और [[सक्रिय सर्वर पेज]]{{citation needed|date=January 2017}}
1995 में, सम्पूर्ण विधि  से एकीकृत सर्वर विकास वातावरण प्राथमिक बार उत्पन हुआ एवं नई वेब-विशिष्ट भाषाएं, जैसे कि [[ ठंडा गलन |कोल्ड़फ्यूज़न]], [[पीएचपी]] एवं [[सक्रिय सर्वर पेज]] प्रस्तुति की गई।


चुकीं गतिशील वेब पेज बनाने के लिए अधिकांश भाषाओं में सामान्य कार्यों में मदद के लिए लाइब्रेरी (कंप्यूटिंग) है, वेब एप्लिकेशन को प्रायः विशेष कार्यों के लिए जैसे कि HTML बनाना (उदाहरण के लिए, [[जकार्ता सर्वर चेहरे]]) विशिष्ट लाइब्रेरी की आवश्यकता होती है।{{citation needed|date=January 2017}}
चूँकि गतिशील वेब पेज बनाने के लिए अधिकांश भाषाओं में सामान्य कार्यों में सहायता के लिए लाइब्रेरी (कंप्यूटिंग) है, वेब एप्लिकेशन को उपयोग प्रायः विशेष कार्यों के लिए जैसे कि एचटीएमएल बनाना (उदाहरण के लिए, [[जकार्ता सर्वर चेहरे|जकार्ता सर्वर फेसेस]] विशिष्ट लाइब्रेरी की आवश्यकता होती है।


1990 के दशक के अंत में, परिपक्व, पूर्ण स्टैक फ्रेमवर्क दिखाई देने लगे, जो प्रायः वेब विकास के लिए उपयोगी कई पुस्तकालयों को वेब डेवलपर्स के उपयोग के लिए एकल संसक्त [[सॉफ़्टवेयर स्टैक]] में इकट्ठा करते थे। इसके उदाहरणों में ASP.NET, Java Platform, Enterprise Edition, [[WebObjects]], [[web2py]], [[OpenACS]], Catalyst (सॉफ़्टवेयर), [[Mojolicious]], [[Ruby on Rails]], [[Laravel]], [[Grails (Framework)]], Django (वेब ​​फ़्रेमवर्क), [[Zend Framework]], Sails.js सम्मलितहैं। [[ यह ]],<ref>{{cite web |title=यह PHP फ्रेमवर्क|url=http://www.yiiframework.com/}}</ref> [[केकेपीएचपी]],<ref>{{cite web |title=केकेपीएचपी|url=http://cakephp.org/}}</ref> और [[सिम्फोनी]]{{citation needed|date=January 2017}}
1990 के दशक के अंत में, परिपक्व, पूर्ण स्टैक फ्रेमवर्क दिखाई देने लगे, जो प्रायः वेब विकास के लिए उपयोगी कई लाइब्रेरीज को वेब डेवलपर्स के उपयोग के लिए एकल संसक्त [[सॉफ़्टवेयर स्टैक]] में एकत्रित करते थे। इसके उदाहरणों में एएसपी.नेट, जावा प्लेटफार्म, एंटरप्राइज एडिशन, [[WebObjects|वेबऑब्जेक्ट्स]], [[web2py|वेब2पी]], [[OpenACS|ओपनएसीएस]], उत्प्रेरक(सॉफ़्टवेयर), [[Mojolicious|मौजोलिशियस]], [[Ruby on Rails|रूबी ऑन रेल्स]], [[Laravel|लारवेलl]], [[Grails (Framework)|ग्रिल्स (फ्रेमवर्क)]] , डिजानगो (वेब ​​फ़्रेमवर्क), [[Zend Framework|ज़ेंड फ्रेमवर्क]], साइलस.जेएस, [[ यह |यी]] ,<ref>{{cite web |title=यह PHP फ्रेमवर्क|url=http://www.yiiframework.com/}}</ref> [[केकेपीएचपी]],<ref>{{cite web |title=केकेपीएचपी|url=http://cakephp.org/}}</ref> एवं [[सिम्फोनी]] सम्मलित हैं।


== फ्रेमवर्क संरचना के प्रकार ==
== फ्रेमवर्क संरचना के प्रकार ==
अधिकांश वेब फ्रेमवर्क मॉडल-व्यू-कंट्रोलर (MVC) [[ वास्तु पैटर्न ]] पर आधारित होते हैं।{{citation needed|date=January 2017}}
अधिकांश वेब फ्रेमवर्क मॉडल-व्यू-कंट्रोलर[[ वास्तु पैटर्न |  वास्तु पैटर्न]] पर आधारित होते हैं।


=== मॉडल-व्यू-कंट्रोलर (एमवीसी) ===
=== मॉडल-व्यू-कंट्रोलर (एमवीसी) ===
{{Main article|Model–view–controller}}
{{Main article|मॉडल व्यू नियंत्रक }}
[[डेटा मॉडल]] को [[व्यापार नियम]] (कंट्रोलर) और [[ प्रयोक्ता इंटरफ़ेस ]] (व्यू) में भिन्न करने के लिए कई फ्रेमवर्क एमवीसी संरचनाल पैटर्न (कंप्यूटर साइंस) का पालन करते हैं। यह समान्यतः अच्छा अभ्यास माना जाता है क्योंकि यह चिंताओं को भिन्न करता है, कोड पुन: उपयोग को बढ़ावा देता है, और कई इंटरफेस को लागू करने की अनुमति देता है। वेब अनुप्रयोगों में, यह विभिन्न दृश्यों को प्रस्तुत करने की अनुमति देता है, उदाहरण के लिए मोबाइल बनाम डेस्कटॉप ब्राउज़रों के लिए विभिन्न [[ वेब पृष्ठ | वेब पृष्ठों]] की सेवा करना, या मशीन-पठनीय [[वेब सेवा]] इंटरफेस प्रदान करना।
[[डेटा मॉडल]] को [[व्यापार नियम|व्याज्ञात नियम]] (कंट्रोलर) एवं [[ प्रयोक्ता इंटरफ़ेस ]](व्यू) में भिन्न करने के लिए कई फ्रेमवर्क एमवीसी संरचनाल पैटर्न (कंप्यूटर विज्ञान) का पालन करते हैं। यह समान्यतः उत्तम अभ्यास माना जाता है क्योंकि यह विचारो को भिन्न करता है, कोड के पुन: उपयोग को विस्तारित करते है, एवं कई इंटरफेस को प्रस्तावित करने की अनुमति देता है। वेब अनुप्रयोगों में, यह विभिन्न दृश्यों को प्रस्तुत करने की अनुमति देता है, उदाहरण के लिए मोबाइल के प्रति डेस्कटॉप ब्राउज़रों के लिए विभिन्न [[ वेब पृष्ठ | वेब पृष्ठों]] की सेवा करना, या मशीन-पठनीय [[वेब सेवा]] इंटरफेस प्रदान करना है।


==== पुश-आधारित बनाम पुल-आधारित ====
==== पुश-बेस्ड के प्रति पुल्ल-बेस्ड ====
अधिकांश एमवीसी ढांचे पुश-आधारित संरचना का पालन करते हैं जिसे क्रिया-आधारित भी कहा जाता है। ये ढाँचे उन क्रियाओं का उपयोग करते हैं जो आवश्यक प्रसंस्करण करते हैं, और फिर परिणाम प्रस्तुत करने के लिए डेटा को व्यू लेयर पर धकेलते हैं।<ref>{{cite web
अधिकांश एमवीसी आकृति आधारित संरचना का पालन करते हैं जिसे क्रिया-आधारित भी कहा जाता है। ये आकृति उन क्रियाओं का उपयोग करते हैं जो आवश्यक प्रसंस्करण करते हैं, एवं फिर परिणाम प्रस्तुत करने के लिए डेटा को व्यू लेयर पर विस्तापित करते हैं।<ref>{{cite web
   | last = Thomson
   | last = Thomson
   | first = Kris
   | first = Kris
Line 32: Line 31:
   | url=https://www.theserverside.com/discussions/thread/22143.html
   | url=https://www.theserverside.com/discussions/thread/22143.html
   | date = 2003-10-29
   | date = 2003-10-29
   | access-date = 2007-07-29 }}</ref> Django (वेब ​​फ्रेमवर्क), रूबी ऑन रेल्स, सिम्फनी, स्प्रिंग MVC, [[ पट्टियां (ढांचा) ]], Sails.js, [[CodeIgniter]]<ref>{{cite web|url=https://cwiki.apache.org/confluence/display/WW/What+are+the+fundamental+differences+between+Struts+and+JSF |title=स्ट्रट्स और जेएसएफ के बीच मूलभूत अंतर क्या हैं|publisher=Struts.apache.org |date=2011-02-14 |access-date=2013-06-14}}</ref> इस वास्तुकला के अच्छे उदाहरण हैं। इसका विकल्प पुल-आधारित संरचना है, जिसे कभी-कभी घटक-आधारित भी कहा जाता है। ये ढांचे दृश्य परत से प्रारम्भ होते हैं, जो आवश्यकतानुसार कई नियंत्रकों से परिणाम प्राप्त सकते हैं। इस संरचना में, दृश्य के साथ कई नियंत्रकों को सम्मलित किया जा सकता है। लिफ्ट (वेब ​​फ्रेमवर्क), [[टेपेस्ट्री (प्रोग्रामिंग)]], [[ जेबीएसएस सीम |जेबीएसएस सीम,]] जकार्ता सर्वर फेसेस और [[अपाचे विकेट]] पुल-आधारित संरचना के उदाहरण हैं।
   | access-date = 2007-07-29 }}</ref> डिजानगो  (वेब ​​फ्रेमवर्क), रूबी ऑन रेल्स, सिम्फनी, स्प्रिंगएमवीसी, [[ पट्टियां (ढांचा) |आकृति]], साइलस.जेएस, [[CodeIgniter|कोडेल्गिनेटर]]<ref>{{cite web|url=https://cwiki.apache.org/confluence/display/WW/What+are+the+fundamental+differences+between+Struts+and+JSF |title=स्ट्रट्स और जेएसएफ के बीच मूलभूत अंतर क्या हैं|publisher=Struts.apache.org |date=2011-02-14 |access-date=2013-06-14}}</ref> इस वास्तुकला के अच्छे उदाहरण हैं। इसका विकल्प पुल आधारित संरचना है, जिसे कभी-कभी घटक आधारित भी कहा जाता है। ये आकृति दृश्य परत से प्रारम्भ होते हैं, जो आवश्यकतानुसार कई नियंत्रकों से परिणाम प्राप्त सकते हैं। इस संरचना में, दृश्य के साथ कई नियंत्रकों को सम्मलित किया जा सकता है। लिफ्ट (वेब ​​फ्रेमवर्क), [[टेपेस्ट्री (प्रोग्रामिंग)]], [[ जेबीएसएस सीम |जेबीएसएस सीम,]] जकार्ता सर्वर फेसेस एवं [[अपाचे विकेट]] पुल आधारित संरचना के उदाहरण हैं। [[Play Framework|प्ले फ्रेमवर्क]], [[Apache Struts|अपाचे स्ट्रटस]], रिफे (आकृति) में पुश एवं पुल आधारित एप्लिकेशन नियंत्रक कॉल का समर्थन करता है।
[[Play Framework]], [[Apache Struts]], RIFE, और ZK (ढांचे) में पुश- और पुल-आधारित एप्लिकेशन नियंत्रक कॉल दोनों के लिए समर्थन है।{{citation needed|date=January 2017}}


=== त्रिस्तरीय संगठन ===
=== त्रिस्तरीय संगठन ===
त्रिस्तरीय वास्तुकला में तीन-स्तरीय संगठन, अनुप्रयोगों को तीन भौतिक स्तरों के आसपास संरचित किया जाता है: क्लाइंट, एप्लिकेशन और डेटाबेस।<ref>{{cite web | url=http://msdn.microsoft.com/en-us/library/ff647546.aspx | title=त्रिस्तरीय वितरण| author=Microsoft | access-date=2011-09-19 }}</ref><ref>{{cite web | url=http://download.oracle.com/docs/cd/E10316_01/cs/cs_doc_10/documentation/integrator/clustering_concepts_10en.pdf | title=clustering_concepts_10en | author=Oracle | access-date=2011-09-19}}</ref><ref>{{cite web | url= http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt | title=वेब विकास का परिचय| author=Robert R. Perkoski |archive-url=https://web.archive.org/web/20131107052241/http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt | archive-date=2013-11-07}}</ref><ref>{{cite web | url=http://publib.boulder.ibm.com/html/as400/v5r1/ic2933/index.htm?info/rzaii/rzaiithreetier.htm | title= तीन स्तरीय वातावरण में क्लाइंट एक्सेस एक्सप्रेस का उपयोग करना| author=IBM | access-date=2011-09-19}}</ref> डेटाबेस समान्यतः एक [[ संबंधपरक डेटाबेस प्रबंधन प्रणाली ]] होता है। एप्लिकेशन में व्यापार तर्क सम्मलितहै, सर्वर पर चल रहा है और [[HTTP]] का उपयोग कर क्लाइंट के साथ संचार करता है।<ref>{{cite web | url=http://download.oracle.com/docs/cd/B25221_05/web.1013/b13593/undtldev010.htm | title=थ्री-टियर आर्किटेक्चर को समझना| author=Oracle | access-date=2011-09-19}}</ref> वेब एप्लिकेशन पर क्लाइंट एक वेब ब्राउज़र है जो एप्लिकेशन लेयर द्वारा उत्पन्न HTML को चलाता है।<ref>{{cite web | url=http://msdn.microsoft.com/en-us/library/aa905336.aspx | title=Pragmatic Architecture: Layering | author=Microsoft | access-date=2011-09-19}}</ref><ref>{{cite web | url=http://www.arokiait.com/3-tire-web-architechture.htm | title=3-Tier Web Architecture | author=Arokia | access-date=2011-09-19}}</ref> इस शब्द को एमवीसी के साथ भ्रमित नहीं होना चाहिए, जहां, त्रि-स्तरीय वास्तुकला के विपरीत, व्यावसायिक तर्क को नियंत्रक, मध्य परत से दूर रखने के लिए एक अच्छा अभ्यास माना जाता है।<ref>{{cite web|url=http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-–-skinny-controllers/ |title=ASP.NET MVC नियंत्रक सर्वोत्तम अभ्यास|access-date=2011-09-19 |url-status=dead |archive-url=https://web.archive.org/web/20111011174215/http://www.arrangeactassert.com:80/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/ |archive-date=2011-10-11 }}</ref><ref>{{cite web | url=http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model | title=पतला नियंत्रक, मोटा मॉडल| author=Jamis Buck |archive-url=https://web.archive.org/web/20150516021854/http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/ | archive-date=2015-05-16}}</ref>
त्रिस्तरीय संरचना में तीन-स्तरीय संगठन, अनुप्रयोगों को तीन भौतिक स्तरों के आतंरिक क्लाइंट, एप्लिकेशन एवं डेटाबेसरिफे संरचित किया जाता है।<ref>{{cite web | url=http://msdn.microsoft.com/en-us/library/ff647546.aspx | title=त्रिस्तरीय वितरण| author=Microsoft | access-date=2011-09-19 }}</ref><ref>{{cite web | url=http://download.oracle.com/docs/cd/E10316_01/cs/cs_doc_10/documentation/integrator/clustering_concepts_10en.pdf | title=clustering_concepts_10en | author=Oracle | access-date=2011-09-19}}</ref><ref>{{cite web | url= http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt | title=वेब विकास का परिचय| author=Robert R. Perkoski |archive-url=https://web.archive.org/web/20131107052241/http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt | archive-date=2013-11-07}}</ref><ref>{{cite web | url=http://publib.boulder.ibm.com/html/as400/v5r1/ic2933/index.htm?info/rzaii/rzaiithreetier.htm | title= तीन स्तरीय वातावरण में क्लाइंट एक्सेस एक्सप्रेस का उपयोग करना| author=IBM | access-date=2011-09-19}}</ref> डेटाबेस समान्यतः [[ संबंधपरक डेटाबेस प्रबंधन प्रणाली |संबंधपरक डेटाबेस प्रबंधन प्रणाली]] होता है। एप्लिकेशन में व्याज्ञात तर्क को सर्वर पर प्रस्तुत है एवं [[HTTP|एचटीटीपी]] का उपयोग कर क्लाइंट के साथ संचार करता है।<ref>{{cite web | url=http://download.oracle.com/docs/cd/B25221_05/web.1013/b13593/undtldev010.htm | title=थ्री-टियर आर्किटेक्चर को समझना| author=Oracle | access-date=2011-09-19}}</ref> वेब एप्लिकेशन पर क्लाइंट वेब ब्राउज़र है जो एप्लिकेशन लेयर द्वारा उत्पन्न एचटीएमएल को चलाता है।<ref>{{cite web | url=http://msdn.microsoft.com/en-us/library/aa905336.aspx | title=Pragmatic Architecture: Layering | author=Microsoft | access-date=2011-09-19}}</ref><ref>{{cite web | url=http://www.arokiait.com/3-tire-web-architechture.htm | title=3-Tier Web Architecture | author=Arokia | access-date=2011-09-19}}</ref> इस शब्द को एमवीसी के साथ भ्रमित नहीं होना चाहिए, जहां, त्रिस्तरीय वास्तुकला के विपरीत, व्यावसायिक तर्क को नियंत्रक, मध्य परत से दूर रखने के लिए उत्तम अभ्यास माना जाता है।<ref>{{cite web|url=http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-–-skinny-controllers/ |title=ASP.NET MVC नियंत्रक सर्वोत्तम अभ्यास|access-date=2011-09-19 |url-status=dead |archive-url=https://web.archive.org/web/20111011174215/http://www.arrangeactassert.com:80/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/ |archive-date=2011-10-11 }}</ref><ref>{{cite web | url=http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model | title=पतला नियंत्रक, मोटा मॉडल| author=Jamis Buck |archive-url=https://web.archive.org/web/20150516021854/http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/ | archive-date=2015-05-16}}</ref>




== फ्रेमवर्क एप्लिकेशन ==
== फ्रेमवर्क एप्लिकेशन ==
एक प्रोग्रामिंग भाषा के आधार पर इंटरनेट अनुप्रयोगों के निर्माण का समर्थन करने के लिए फ्रेमवर्क बनाए गए हैं, जिसमें ज़ेंड फ्रेमवर्क और रूबी ऑन रेल्स जैसे सामान्य प्रयोजन के उपकरण सम्मलितहैं, जो एक विशिष्ट भाषा की क्षमताओं को बढ़ाते हैं, मूल भाषा प्रोग्राम करने योग्य पैकेजों के आसपास निर्मित होते हैं। एक विशिष्ट उपयोगकर्ता अनुप्रयोग, जैसे [[सामग्री प्रबंधन प्रणाली]], कुछ मोबाइल विकास उपकरण और कुछ पोर्टल उपकरण।<ref>{{Cite news|url=https://www.wired.com/2010/02/get_started_with_web_frameworks/|title=वेब फ्रेमवर्क के साथ शुरुआत करना|publisher=[[Wired Magazine]]|access-date=2018-04-02|language=en}}</ref>
प्रोग्रामिंग भाषा के आधार पर इंटरनेट अनुप्रयोगों के निर्माण का समर्थन करने के लिए फ्रेमवर्क बनाए गए हैं, जिसमें ज़ेंड फ्रेमवर्क एवं रूबी ऑन रेल्स जैसे सामान्य प्रयोजन के उपकरण सम्मलित हैं, जो विशिष्ट भाषा की क्षमताओं को विस्तरित करते हैं, मूल भाषा प्रोग्राम करने योग्य पैकेजों के समीप निर्मित होते हैं। विशिष्ट उपयोगकर्ता अनुप्रयोग, जैसे [[सामग्री प्रबंधन प्रणाली]], कुछ मोबाइल विकास उपकरण एवं कुछ पोर्टल उपकरण हैं।<ref>{{Cite news|url=https://www.wired.com/2010/02/get_started_with_web_frameworks/|title=वेब फ्रेमवर्क के साथ शुरुआत करना|publisher=[[Wired Magazine]]|access-date=2018-04-02|language=en}}</ref>




=== सामान्य-उद्देश्य वाली वेबसाइट फ्रेमवर्क ===
=== सामान्य-उद्देश्य वेबसाइट फ्रेमवर्क ===
वेब फ्रेमवर्क को ब्राउजर के वास्तु नियमों और [[ हाइपरटेक्स्ट परहस्त शिष्टाचार ]] जैसे [[संचार प्रोटोकॉल]] के अनुसार कार्य करना चाहिए, जो कि [[स्टेटलेस प्रोटोकॉल]] है। वेबपेज एक [[सर्वर (कंप्यूटिंग)]] द्वारा सर्व किए जाते हैं और फिर [[जावास्क्रिप्ट]] का उपयोग करके ब्राउज़र द्वारा संशोधित किए जा सकते हैं। किसी भी दृष्टिकोण के अपने फायदे और नुकसान हैं।{{citation needed|date=January 2017}}
वेब फ्रेमवर्क को ब्राउजर के नियमों एवं [[ हाइपरटेक्स्ट परहस्त शिष्टाचार |हाइपरटेक्स्ट]] जैसे [[संचार प्रोटोकॉल]] के अनुसार कार्य करना चाहिए, जो कि [[स्टेटलेस प्रोटोकॉल]] है। वेबपेज [[सर्वर (कंप्यूटिंग)]] द्वारा सर्व किए जाते हैं एवं फिर [[जावास्क्रिप्ट]] का उपयोग करके ब्राउज़र द्वारा संशोधित किए जा सकते हैं। किसी भी दृष्टिकोण के अपने लाभ एवं हानि हैं।


सर्वर-साइड पृष्ठ परिवर्तनों के लिए समान्यतः पृष्ठ को ताज़ा करने की आवश्यकता होती है, लेकिन किसी भी भाषा का उपयोग करने और अधिक कंप्यूटिंग शक्ति का उपयोग करने की अनुमति देता है। क्लाइंट-साइड परिवर्तन पेज को छोटे टुकड़ों में अपडेट करने की अनुमति देते हैं जो एक डेस्कटॉप एप्लिकेशन की तरह लगता है, लेकिन जावास्क्रिप्ट तक सीमित है और उपयोगकर्ता के ब्राउज़र में चलता है, जिसमें सीमित कंप्यूटिंग शक्ति हो सकती है। दोनों के कुछ मिश्रण का समान्यतः उपयोग किया जाता है।<ref>{{Cite web|url=https://spin.atomicobject.com/2015/04/06/web-app-client-side-server-side/|title=Web Application Architecture – Client-Side vs. Server-Side|last=KLIMUSHYN|first=Mel|website=Atomic Spin|date=6 April 2015|access-date=2016-03-06}}</ref> एप्लिकेशन जो जावास्क्रिप्ट का भारी उपयोग करते हैं और केवल पृष्ठ के कुछ हिस्सों को रीफ्रेश करते हैं, उन्हें [[ एक पेज का आवेदन ]] कहा जाता है और समान्यतः कोड को व्यवस्थित करने के लिए क्लाइंट-साइड जावास्क्रिप्ट वेब फ्रेमवर्क का उपयोग करते हैं।{{citation needed|date=January 2017}}
सर्वर-साइड पृष्ठ परिवर्तनों के लिए समान्यतः पृष्ठ को नवनीकृत करने की आवश्यकता होती है, परन्तु किसी भी भाषा का उपयोग करने एवं अधिक कंप्यूटिंग शक्ति का उपयोग करने की अनुमति देता है। क्लाइंट-साइड परिवर्तन पेज को अर्घ खंडो में अपडेट करने की अनुमति देते हैं जो डेस्कटॉप एप्लिकेशन के जैसे लगता है, परन्तु जावा स्क्रिप्ट तक सीमित है एवं उपयोगकर्ता के ब्राउज़र में प्रचलित है, जिसमें सीमित कंप्यूटिंग शक्ति हो सकती है। दोनों के कुछ मिश्रण का समान्यतः उपयोग किया जाता है।<ref>{{Cite web|url=https://spin.atomicobject.com/2015/04/06/web-app-client-side-server-side/|title=Web Application Architecture – Client-Side vs. Server-Side|last=KLIMUSHYN|first=Mel|website=Atomic Spin|date=6 April 2015|access-date=2016-03-06}}</ref> एप्लिकेशन जो जावास्क्रिप्ट का अधिक उपयोग करते हैं एवं केवल पृष्ठ के कुछ भागों का नवीकरण करते हैं, उन्हें [[ एक पेज का आवेदन |पेज का आवेदन]] कहा जाता है एवं समान्यतः कोड को व्यवस्थित करने के लिए क्लाइंट-साइड जावास्क्रिप्ट वेब फ्रेमवर्क का उपयोग करते हैं।


==== सर्वर-साइड ====
==== सर्वर-साइड ====
Line 55: Line 53:
* कोडइग्निटर
* कोडइग्निटर
*[[सीपीपीसीएमएस]]
*[[सीपीपीसीएमएस]]
*Django (वेब ​​फ्रेमवर्क)
*डिजानगो (वेब ​​फ्रेमवर्क)
* [[फ्लास्क (वेब ​​फ्रेमवर्क)]]
* [[फ्लास्क (वेब ​​फ्रेमवर्क)]]
*Jam.py (वेब ​​फ्रेमवर्क)|Jam.py
*जाम.पीवाई (वेब ​​फ्रेमवर्क)
*यी
*यी
* लारवेल
* लारवेल
*मोजोलिशियस
*मोजोलिशियस
*रूबी ऑन रेल्स
*रूबी ऑन रेल्स
*पाल.जे.एस
*पाल.जेएस
* सिम्फनी
* सिम्फनी
*वसंत MVC
*वसंतएमवीसी
* [[Wt (वेब ​​टूलकिट)]]
* [[Wt (वेब ​​टूलकिट)|डब्ल्यूटी (वेब ​​टूलकिट)]]
* ज़ेंड फ्रेमवर्क
* ज़ेंड फ्रेमवर्क


==== क्लाइंट-साइड ====
==== क्लाइंट-साइड ====
{{Main article|Single-page application}}
{{Main article|सिंगल पेज एप्लीकेशन}}


उदाहरणों में Backbone.js, [[AngularJS]], Angular (एप्लीकेशन प्लेटफॉर्म), [[EmberJS]], React (जावास्क्रिप्ट लाइब्रेरी), [[jQuery UI]], [[Svelte]], और Vue.js सम्मलितहैं।<ref>{{Cite web|url=https://www.airpair.com/js/javascript-framework-comparison|title=एंगुलरजेएस बनाम बैकबोन.जेएस बनाम एम्बर.जेएस|website=www.airpair.com|language=en-US|access-date=2016-06-04}}</ref>
उदाहरणों में बैकबोन , [[AngularJS|एंगुलर जेएस]], एंगुलर (एप्लीकेशन प्लेटफॉर्म), [[EmberJS|एम्बर]] [[AngularJS|जेएस]], रियेक्ट (जावास्क्रिप्ट लाइब्रेरी), [[jQuery UI|जक्वेरी यूआई]], [[Svelte|स्वेल्टे]], एवं वीयूई सम्मलित हैं।<ref>{{Cite web|url=https://www.airpair.com/js/javascript-framework-comparison|title=एंगुलरजेएस बनाम बैकबोन.जेएस बनाम एम्बर.जेएस|website=www.airpair.com|language=en-US|access-date=2016-06-04}}</ref>




=== चर्चा मंच, विकी और वेबलॉग ===
=== विचार, विकी एवं वेबलॉग ===
*विकीबेस/विकीविकिवेब{{citation needed|date=January 2017}}
*विकीबेस


== विशेषताएं ==
== विशेषताएं ==
फ्रेमवर्क समान्यतः एक प्रोग्राम के नियंत्रण प्रवाह को सेट करते हैं और फ्रेमवर्क के उपयोगकर्ता को विभिन्न घटनाओं को उजागर करके उस प्रवाह में सम्मलितहोने की अनुमति देते हैं।<ref name=":0">{{Cite web|url=http://martinfowler.com/bliki/InversionOfControl.html|title=bliki: InversionOfControl|last=Fowler|first=Martin|website=martinfowler.com|access-date=2016-03-06}}</ref> नियंत्रण डिजाइन पैटर्न के इस व्युत्क्रम को एक ढांचे के परिभाषित सिद्धांत के रूप में माना जाता है, और एक टीम के लिए एक सामान्य प्रवाह को लागू करके कोड को लाभ पहुंचाता है जिसे हर कोई समान तरीकों से अनुकूलित कर सकता है।<ref name=":0" />उदाहरण के लिए, कुछ लोकप्रिय माइक्रोफ़्रेमवर्क जैसे रूबी सिनात्रा (सॉफ़्टवेयर) (जो Express.js से प्रेरित है) HTTP अनुरोधों से पहले और बाद में मिडलवेयर हुक की अनुमति देता है। ये मिडलवेयर फ़ंक्शंस कुछ भी हो सकते हैं, और उपयोगकर्ता को लॉगिंग, प्रमाणीकरण और सत्र प्रबंधन और पुनर्निर्देशन को परिभाषित करने की अनुमति देते हैं।<ref>{{Cite web|url=http://www.capitalone.io/blog/successful-framework-philosophies/|title=Capital One Engineering – Philosophies that Shaped Successful Frameworks|last=Xue|first=Qiang|website=www.capitalone.io|access-date=2016-03-06}}</ref>
फ्रेमवर्क समान्यतः प्रोग्राम के नियंत्रण प्रवाह को समायोजित करते हैं एवं फ्रेमवर्क के उपयोगकर्ता को विभिन्न घटनाओं को प्रकाशित करके उस प्रवाह में सम्मलित होने की अनुमति देते हैं।<ref name=":0">{{Cite web|url=http://martinfowler.com/bliki/InversionOfControl.html|title=bliki: InversionOfControl|last=Fowler|first=Martin|website=martinfowler.com|access-date=2016-03-06}}</ref> नियंत्रण डिजाइन पैटर्न के इस व्युत्क्रम को आकृति के परिभाषित सिद्धांत के रूप में माना जाता है, एवं समूह के लिए सामान्य प्रवाह को प्रस्तावित करके कोड को लाभ पहुंचाता है जिसे कोई समान उपायों से अनुकूलित कर सकता है।<ref name=":0" />उदाहरण के लिए, कुछ लोकप्रिय माइक्रोफ़्रेमवर्क जैसे रूबी (सॉफ़्टवेयर) एचटीटीपी अनुरोधों से पूर्व एवं पश्चात में मिडलवेयर हुक की अनुमति देता है। ये मिडलवेयर प्रोग्राम कुछ भी हो सकते हैं, एवं उपयोगकर्ता को लॉगिंग, प्रमाणीकरण एवं सत्र प्रबंधन एवं पुनर्निर्देशन को परिभाषित करने की अनुमति देते हैं।<ref>{{Cite web|url=http://www.capitalone.io/blog/successful-framework-philosophies/|title=Capital One Engineering – Philosophies that Shaped Successful Frameworks|last=Xue|first=Qiang|website=www.capitalone.io|access-date=2016-03-06}}</ref>




=== वेब टेम्पलेट सिस्टम ===
=== वेब टेम्पलेट प्रणाली ===
{{Main article|Web template system}}
{{Main article|वेब टेम्पलेट प्रणाली }}


=== कैशिंग ===
=== कैशिंग ===
{{Main article|Web cache}}
{{Main article|वेब कैश}}
[[बैंडविड्थ (कंप्यूटिंग)]] उपयोग, [[वेब सर्वर]] [[लोड (कंप्यूटिंग)]], और कथित [[विलंबता (इंजीनियरिंग)]] को कम करने के लिए वेब [[कैश]]िंग वर्ल्ड वाइड वेब [[इलेक्ट्रॉनिक दस्तावेज़]] का वेब कैश है। एक वेब कैश इसके माध्यम से गुजरने वाले दस्तावेज़ों की प्रतियों को संग्रहीत करता है; यदि कुछ शर्तों को पूरा किया जाता है तो बाद के अनुरोध कैश से संतुष्ट हो सकते हैं। कुछ एप्लिकेशन फ्रेमवर्क दस्तावेज़ों को कैशिंग करने और पृष्ठ की तैयारी के विभिन्न चरणों, जैसे डेटाबेस एक्सेस या टेम्प्लेट व्याख्या, को दरकिनार करने के लिए तंत्र प्रदान करते हैं।{{citation needed|date=January 2017}}
[[बैंडविड्थ (कंप्यूटिंग)]] उपयोग, [[वेब सर्वर]] [[लोड (कंप्यूटिंग)|लोड]], एवं कथित [[विलंबता (इंजीनियरिंग)]] को अर्घ करने के लिए वेब [[कैश]] वर्ल्ड वाइड वेब [[इलेक्ट्रॉनिक दस्तावेज़]] का वेब कैश है।वेब कैश इसके माध्यम से निकलने वाले प्रपत्रों की प्रतियों को संग्रहीत करता है; यदि कुछ नियमों को पूर्ण किया जाता है तो उसके पश्चात के अनुरोध कैश से संतुष्ट हो सकते हैं। कुछ एप्लिकेशन फ्रेमवर्क दस्तावेज़ों को कैशिंग करने एवं पृष्ठ की संयोजना के विभिन्न चरणों, जैसे डेटाबेस एक्सेस या टेम्प्लेट व्याख्या, को पूर्ण करने के लिए तंत्र प्रदान करते हैं।


=== सुरक्षा ===
=== सुरक्षा ===
{{Main article|Web application security}}
{{Main article|वेब अनुप्रयोग सुरक्षा}}
कुछ वेब ढाँचे [[प्रमाणीकरण]] और प्राधिकरण ढाँचे के साथ आते हैं, जो वेब सर्वर को एप्लिकेशन के उपयोगकर्ताओं की पहचान करने में सक्षम बनाते हैं, और कुछ परिभाषित मानदंडों के आधार पर कार्यों तक पहुँच को प्रतिबंधित करते हैं। [[Drupal]] एक ऐसा उदाहरण है जो पृष्ठों तक भूमिका-आधारित पहुँच प्रदान करता है, और उपयोगकर्ताओं को बनाने और उन्हें भूमिकाएँ सौंपने के लिए एक वेब-आधारित इंटरफ़ेस प्रदान करता है।{{citation needed|date=January 2017}}
कुछ वेब आकृति [[प्रमाणीकरण]] एवं प्राधिकरण आकृति के साथ आते हैं, जो वेब सर्वर को एप्लिकेशन के उपयोगकर्ताओं की पहचान करने में सक्षम बनाते हैं, एवं कुछ परिभाषित मानदंडों के आधार पर कार्यों तक पहुँच को प्रतिबंधित करते हैं। [[Drupal|द्रुपल]] ऐसा उदाहरण है जो पृष्ठों तक भूमिका-आधारित पहुँच प्रदान करता है, एवं उपयोगकर्ताओं को बनाने एवं उन्हें भूमिकाएँ अधिकृत करने के लिए वेब-आधारित इंटरफ़ेस प्रदान करता है।


===डेटाबेस एक्सेस, मैपिंग और कॉन्फ़िगरेशन ===
===डेटाबेस एक्सेस, मैपिंग एवं कॉन्फ़िगरेशन ===
कई वेब फ्रेमवर्क एक डेटाबेस बैकएंड के लिए एक एकीकृत एपीआई बनाते हैं, जिससे वेब एप्लिकेशन विभिन्न प्रकार के डेटाबेस के साथ बिना किसी कोड परिवर्तन के काम कर सकते हैं, और प्रोग्रामर को उच्च-स्तरीय अवधारणाओं के साथ काम करने की अनुमति देते हैं। इसके अतिरिक्त, कुछ [[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ]] | ऑब्जेक्ट-ओरिएंटेड फ्रेमवर्क में [[ऑब्जेक्ट-रिलेशनल मैपिंग]] प्रदान करने के लिए मैपिंग टूल होते हैं, जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को टुपल्स में मैप करते हैं।<ref name="ActiveRecordBasics">{{cite web |url=https://guides.rubyonrails.org/active_record_basics.html |title=सक्रिय रिकॉर्ड मूल बातें|website=Ruby on Rails |access-date=March 20, 2021 |quote=Object Relational Mapping, commonly referred to as its abbreviation ORM, is a technique that connects the rich objects of an application to tables in a relational database management system...Active Record automatically creates methods to allow an application to read and manipulate data stored within its tables.}}</ref>
कई वेब फ्रेमवर्क डेटाबेस बैकएंड के लिए एकीकृत एपीआई बनाते हैं, जिससे वेब एप्लिकेशन विभिन्न प्रकार के डेटाबेस के साथ बिना किसी कोड परिवर्तन के कार्य  कर सकते हैं, एवं प्रोग्रामर को उच्च-स्तरीय अवधारणाओं के साथ कार्य  करने की अनुमति देते हैं। इसके अतिरिक्त, कुछ [[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ]] ऑब्जेक्ट-ओरिएंटेड फ्रेमवर्क में [[ऑब्जेक्ट-रिलेशनल मैपिंग]] प्रदान करने के लिए मैपिंग उपकरण होते हैं, जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को टुपल्स में मैप करते हैं।<ref name="ActiveRecordBasics">{{cite web |url=https://guides.rubyonrails.org/active_record_basics.html |title=सक्रिय रिकॉर्ड मूल बातें|website=Ruby on Rails |access-date=March 20, 2021 |quote=Object Relational Mapping, commonly referred to as its abbreviation ORM, is a technique that connects the rich objects of an application to tables in a relational database management system...Active Record automatically creates methods to allow an application to read and manipulate data stored within its tables.}}</ref> कुछ आकृति [[आत्मनिरीक्षण (कंप्यूटर विज्ञान)]] एवं प्रसिद्ध सम्मेलनों के उपयोग के माध्यम से वेब एप्लिकेशन कॉन्फ़िगरेशन को अर्घ  करते हैं। उदाहरण के लिए, कई जावा फ्रेमवर्क [[हाइबरनेट (जावा)]] को दृढ़ता परत के रूप में उपयोग करते हैं, जो आवश्यक जानकारी को बनाए रखने में सक्षम रनटाइम पर डेटाबेस स्कीमा उत्पन्न कर सकता है। यह एप्लिकेशन डिज़ाइनर को डेटाबेस स्कीमा को स्पष्ट रूप से परिभाषित करने की आवश्यकता के बिना व्यावसायिक वस्तुओं को डिज़ाइन करने की अनुमति देता है। रूबी ऑन रेल्स जैसे फ्रेमवर्क रिवर्स में भी कार्य  कर सकते हैं, अर्थात डेटाबेस स्कीमा के आधार पर रनटाइम पर मॉडल ऑब्जेक्ट्स के गुणों को परिभाषित करते हैं।<ref name="ActiveRecordBasics" />
कुछ ढांचे [[आत्मनिरीक्षण (कंप्यूटर विज्ञान)]] और/या प्रसिद्ध सम्मेलनों के उपयोग के माध्यम से वेब एप्लिकेशन कॉन्फ़िगरेशन को कम करते हैं। उदाहरण के लिए, कई जावा फ्रेमवर्क [[हाइबरनेट (जावा)]] को एक दृढ़ता परत के रूप में उपयोग करते हैं, जो आवश्यक जानकारी को बनाए रखने में सक्षम रनटाइम पर एक डेटाबेस स्कीमा उत्पन्न कर सकता है। यह एप्लिकेशन डिज़ाइनर को डेटाबेस स्कीमा को स्पष्ट रूप से परिभाषित करने की आवश्यकता के बिना व्यावसायिक वस्तुओं को डिज़ाइन करने की अनुमति देता है। रूबी ऑन रेल्स जैसे फ्रेमवर्क रिवर्स में भी काम कर सकते हैं, यानी डेटाबेस स्कीमा के आधार पर रनटाइम पर मॉडल ऑब्जेक्ट्स के गुणों को परिभाषित करते हैं।<ref name="ActiveRecordBasics" />


वेब फ्रेमवर्क प्रदान कर सकने वाली अन्य सुविधाओं में [[डेटाबेस लेनदेन]] सम्मलितहैं<ref>{{cite web |url=https://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html |title=सक्रिय रिकॉर्ड लेनदेन|website=Ruby on Rails |access-date=March 20, 2021 }}</ref> और [[आंकड़ों का विस्थापन]]<ref name="ActiveRecordBasics" />
वेब फ्रेमवर्क प्रदान करने वाली अन्य सुविधाओं में [[डेटाबेस लेनदेन]] <ref>{{cite web |url=https://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html |title=सक्रिय रिकॉर्ड लेनदेन|website=Ruby on Rails |access-date=March 20, 2021 }}</ref> एवं [[आंकड़ों का विस्थापन]]<ref name="ActiveRecordBasics" />सम्मलित हैं|




===यूआरएल मानचित्रण ===
===यूआरएल मानचित्रण ===
{{see also|Front controller|URL redirection}}
{{see also|फ्रंट नियंत्रक | यूआरएल निर्देशक}}
एक फ्रेमवर्क की [[यूनिफ़ॉर्म रिसोर्स लोकेटर]] मैपिंग या रूटिंग सुविधा वह तंत्र है जिसके द्वारा फ्रेमवर्क URL की व्याख्या करता है। कुछ ढाँचे, जैसे Drupal और Django, [[नियमित अभिव्यक्ति]] का उपयोग करते हुए पूर्व-निर्धारित पैटर्न के विरुद्ध प्रदान किए गए URL से मेल खाते हैं, जबकि कुछ अन्य प्रदान किए गए URL को एक ऐसे URL में अनुवाद करने के लिए [[पुनर्लेखन]] तकनीकों का उपयोग करते हैं जिसे अंतर्निहित इंजन पहचान लेगा। एक अन्य तकनीक [[ग्राफ ट्रैवर्सल]] की है जैसे [[ज़ोप]] द्वारा उपयोग की जाती है, जहां एक यूआरएल चरणों में विघटित होता है जो ऑब्जेक्ट ग्राफ़ (मॉडल और विचारों के) को पार करता है।{{citation needed|date=January 2017}}
फ्रेमवर्क की [[यूनिफ़ॉर्म रिसोर्स लोकेटर]] मैपिंग या रूटिंग सुविधा वह तंत्र है जिसके द्वारा फ्रेमवर्क यूआरएल की व्याख्या की जाती है। कुछ आकृति, जैसे द्रुपल एवं डिजानगो, [[नियमित अभिव्यक्ति]] का उपयोग करते हुए पूर्व-निर्धारित पैटर्न के विरुद्ध प्रदान किए गए यूआरएल से मिलते हैं, जबकि कुछ अन्य प्रदान किए गए यूआरएल को ऐसे यूआरएल में अनुवाद करने के लिए [[पुनर्लेखन]] प्रौद्यौगिकी का उपयोग करते हैं जिसे अंतर्निहित इंजन पहचान लेगा। अन्य प्रौद्यौगिकी  [[ग्राफ ट्रैवर्सल]] है जिसे [[ज़ोप]] द्वारा उपयोग किया जाता है, जहां यूआरएल चरणों में विघटित होता है जो ऑब्जेक्ट ग्राफ़ (मॉडल एवं विचारों के) को ज्ञात करता है।


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


=== अजाक्स ===
=== अजाक्स ===
{{Main article|Ajax framework}}
{{Main article|अजाक्स फ्रेमवर्क }}
[[अजाक्स (प्रोग्रामिंग)]], अतुल्यकालिक I/O जावास्क्रिप्ट और [[XML]] के लिए आशुलिपि, वेब अनुप्रयोग बनाने के लिए एक वेब विकास तकनीक है। पर्दे के पीछे सर्वर के साथ थोड़ी मात्रा में डेटा का आदान-प्रदान करके वेब पेजों को अधिक प्रतिक्रियाशील बनाने का इरादा है, जिससे उपयोगकर्ता द्वारा परिवर्तन का अनुरोध करने पर हर बार पूरे वेब पेज को फिर से लोड न करना पड़े। इसका उद्देश्य वेब पेज की अन्तरक्रियाशीलता, गति, रखरखाव और उपयोगिता को बढ़ाना है।<ref>{{Cite web|title=अजाक्स क्या है|url=https://www.dlsweb.rmit.edu.au/set/Courses/Content/CSIT/oua/cpt270/chapter/08/WhatisAJAX.html|access-date=2021-05-07|website=www.dlsweb.rmit.edu.au}}</ref>
[[अजाक्स (प्रोग्रामिंग)]], अतुल्यकालिक इनपुट/आउटपुट जावास्क्रिप्ट एवं [[XML|एक्सएमएल]] के लिए, वेब अनुप्रयोग बनाने के लिए वेब विकास प्रौद्यौगिकी है। सर्वर के साथ अल्प मात्रा में डेटा का आदान-प्रदान करके वेब पेजों को अधिक प्रतिक्रियाशील बनाने का उद्देश्य है, जिससे उपयोगकर्ता द्वारा परिवर्तन का अनुरोध करने पर पुनः पूर्ण वेब पेज को फिर से लोड न करना पड़े। इसका उद्देश्य वेब पेज की अन्तरक्रियाशीलता, गति, सुरक्षा एवं उपयोगिता को विस्तारित करता है।<ref>{{Cite web|title=अजाक्स क्या है|url=https://www.dlsweb.rmit.edu.au/set/Courses/Content/CSIT/oua/cpt270/chapter/08/WhatisAJAX.html|access-date=2021-05-07|website=www.dlsweb.rmit.edu.au}}</ref> [[जावास्क्रिप्ट पुस्तकालय|जावास्क्रिप्ट लाइब्रेरी]] अजाक्स प्रोग्रामिंग की जटिलता के कारण, कई अजाक्स आकृति हैं जो विशेष रूप से अजाक्स समर्थन से होता हैं। कुछ अजाक्स आकृति को बड़े आकृति के भाग के रूप में भी एम्बेड किया गया है। उदाहरण के लिए, [[jQuery|जक्वेरी]] जावा स्क्रिप्ट लाइब्रेरी रूबी ऑन रेल्स में सम्मलित है।
[[जावास्क्रिप्ट पुस्तकालय]] अजाक्स प्रोग्रामिंग की जटिलता के कारण, कई अजाक्स ढांचे हैं जो विशेष रूप से अजाक्स समर्थन से निपटते हैं। कुछ अजाक्स ढांचे को बड़े ढांचे के हिस्से के रूप में भी एम्बेड किया गया है। उदाहरण के लिए, [[jQuery]] JavaScript लाइब्रेरी रूबी ऑन रेल्स में सम्मलितहै।{{citation needed|date=January 2017}}


वेब 2.0 [[समृद्ध वेब अनुप्रयोग]]ों के विकास में बढ़ती रुचि के साथ, सीधे अजाक्स और जावास्क्रिप्ट में प्रोग्रामिंग की जटिलता इतनी स्पष्ट हो गई है कि कंपाइलर तकनीक ने डेवलपर्स को जावा, पायथन और रूबी जैसी उच्च-स्तरीय भाषाओं में कोड करने की अनुमति दी है। इन कंपाइलरों में से पहला [[जुड़ा हुआ]] था, जिसके बाद Google वेब टूलकिट, कुछ समय बाद पायज और रूबीजेएस के रूप में पायथन और रूबी के बंदरगाहों के साथ था। ये कंपाइलर और उनसे जुड़े विजेट सेट लाइब्रेरी समृद्ध मीडिया अजाक्स अनुप्रयोगों के विकास को डेस्कटॉप अनुप्रयोगों के विकास के समान बनाते हैं।{{citation needed|date=January 2017}}
वेब 2.0 [[समृद्ध वेब अनुप्रयोग|समृद्ध वेब अनुप्रयोगों]] के विकास में विस्तरित रुचि के साथ, सरल अजाक्स एवं जावा स्क्रिप्ट में प्रोग्रामिंग की जटिलता इतनी स्पष्ट हो गई है कि कंपाइलर प्रौद्यौगिकी ने डेवलपर्स को जावा, पायथन एवं रूबी जैसी उच्च-स्तरीय भाषाओं में कोड करने की अनुमति दी है। इन कंपाइलरों में से प्रथम मॉर्फिक [[जुड़ा हुआ]] था, जिसके पश्चात गूगल वेब टूलकिट, कुछ समय पश्चात पायज एवं रूबीजेएस के रूप में पायथन एवं रूबी के साथ था। ये कंपाइलर एवं उनसे जुड़े विजेट सेट लाइब्रेरी समृद्ध मीडिया अजाक्स अनुप्रयोगों के विकास को डेस्कटॉप अनुप्रयोगों के विकास के समान बनाते हैं।


=== वेब सेवाएं ===
=== वेब सेवाएं ===
{{Main article|Web service}}
{{Main article|वेब सर्विस }}
कुछ ढाँचे वेब सेवाएँ बनाने और प्रदान करने के लिए उपकरण प्रदान करते हैं। ये उपयोगिताएँ बाकी वेब एप्लिकेशन के समान उपकरण प्रदान कर सकती हैं।<ref>{{cite journal |last1=Maximilien |first1=E.M. |date=December 19, 2006 |title=Web Services on Rails: Using Ruby and Rails for Web Services Development and Mashups |url=https://ieeexplore.ieee.org/document/4032003 |journal=IEEE Xplore |location=Chicago |doi=10.1109/ICWS.2006.139 |isbn=0-7695-2669-1 }}</ref>
कुछ आकृति वेब सेवाएँ बनाने एवं प्रदान करने के लिए उपकरण प्रदान करते हैं। ये उपयोगिताएँ वेब एप्लिकेशन के समान उपकरण प्रदान कर सकती हैं।<ref>{{cite journal |last1=Maximilien |first1=E.M. |date=December 19, 2006 |title=Web Services on Rails: Using Ruby and Rails for Web Services Development and Mashups |url=https://ieeexplore.ieee.org/document/4032003 |journal=IEEE Xplore |location=Chicago |doi=10.1109/ICWS.2006.139 |isbn=0-7695-2669-1 }}</ref>
 
 
=== वेब संसाधन ===
=== वेब संसाधन ===
{{Main article|Web resource}}
{{Main article|वेब संसाधन}}
कई नए वेब 2.0 [[प्रतिनिधित्ववादी स्थिति में स्थानांतरण]] फ्रेमवर्क अब [[ संसाधन विवरण ढांचा ]] (आरडीएफ) की अवधारणाओं के आधार पर [[सेमांटिक वेब]] [[ऑन्कोलॉजी इंजीनियरिंग]] के एक प्रकार के संसाधनों के संग्रह के निर्माण के लिए संसाधन-उन्मुख संरचना (आरओए) बुनियादी ढांचा प्रदान कर रहे हैं।{{citation needed|date=January 2017}}
कई नए वेब 2.0 [[प्रतिनिधित्ववादी स्थिति में स्थानांतरण]] फ्रेमवर्क अब [[ संसाधन विवरण ढांचा | संसाधन विवरण आकृति]] (आरडीएफ) की अवधारणाओं के आधार पर [[सेमांटिक वेब]] [[ऑन्कोलॉजी इंजीनियरिंग]] के संसाधनों के संग्रह के निर्माण के लिए संसाधन-उन्मुख संरचना (आरओए) की आकृति प्रदान करते हैं।
 
== यह भी देखें ==
{{colbegin}}
*[[जावास्क्रिप्ट-आधारित वेब फ्रेमवर्क की तुलना]] (क्लाइंट-साइड)
*[[सर्वर-साइड वेब फ्रेमवर्क की तुलना]]
*[[अनुप्रयोग सर्वर]]
* [[आवेदन ढांचा]]
* [[आवेदन सुरक्षा]]
*[[कॉन्फिगरेशन पर सम्मलेन]]
*खुद को न दोहराएं (DRY)
* [[वेब सेवा ढांचे की सूची]]
*रिच वेब एप्लिकेशन (अप्रचलित)
** [[समृद्ध वेब एप्लिकेशन फ्रेमवर्क की सूची]]
* समाधान ढेर
* [[मोबाइल विकास ढांचा]]
{{colend}}


==संदर्भ==
==संदर्भ==
{{reflist}}
{{reflist}}


{{Web frameworks}}
{{DEFAULTSORT:Web Framework}}
{{Web interfaces}}
 
{{DEFAULTSORT:Web Framework}}[[Category: वेब फ्रेमवर्क | वेब फ्रेमवर्क ]]
 
 


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Web Framework]]
[[Category:Created On 25/02/2023]]
[[Category:CS1 English-language sources (en)]]
[[Category:Collapse templates|Web Framework]]
[[Category:Created On 25/02/2023|Web Framework]]
[[Category:Lua-based templates|Web Framework]]
[[Category:Machine Translated Page|Web Framework]]
[[Category:Multi-column templates|Web Framework]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Web Framework]]
[[Category:Pages using div col with small parameter|Web Framework]]
[[Category:Pages with script errors|Web Framework]]
[[Category:Short description with empty Wikidata description|Web Framework]]
[[Category:Sidebars with styles needing conversion|Web Framework]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Web Framework]]
[[Category:Templates generating microformats|Web Framework]]
[[Category:Templates that add a tracking category|Web Framework]]
[[Category:Templates that are not mobile friendly|Web Framework]]
[[Category:Templates that generate short descriptions|Web Framework]]
[[Category:Templates using TemplateData|Web Framework]]
[[Category:Templates using under-protected Lua modules|Web Framework]]
[[Category:Wikipedia fully protected templates|Div col]]
[[Category:Wikipedia metatemplates|Web Framework]]
[[Category:वेब फ्रेमवर्क| वेब फ्रेमवर्क ]]

Latest revision as of 15:36, 27 October 2023

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

इतिहास

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

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

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

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

फ्रेमवर्क संरचना के प्रकार

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

मॉडल-व्यू-कंट्रोलर (एमवीसी)

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

पुश-बेस्ड के प्रति पुल्ल-बेस्ड

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

त्रिस्तरीय संगठन

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


फ्रेमवर्क एप्लिकेशन

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


सामान्य-उद्देश्य वेबसाइट फ्रेमवर्क

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

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

सर्वर-साइड

क्लाइंट-साइड

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


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

  • विकीबेस

विशेषताएं

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


वेब टेम्पलेट प्रणाली

कैशिंग

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

सुरक्षा

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

डेटाबेस एक्सेस, मैपिंग एवं कॉन्फ़िगरेशन

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

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


यूआरएल मानचित्रण

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

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

अजाक्स

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

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

वेब सेवाएं

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

वेब संसाधन

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

संदर्भ

  1. Multiple (wiki). "Web application framework". Docforge. Archived from the original on 2015-07-23.
  2. "Top Open-Source Static Site Generators". StaticGen.
  3. "CGI: Common Gateway Interface". Archived from the original on 2009-04-09.
  4. "सीजीआई". www.ibm.com (in English). Retrieved 2021-05-07.
  5. "यह PHP फ्रेमवर्क".
  6. "केकेपीएचपी".
  7. Thomson, Kris (2003-10-29). "Clarification on MVC= Pull and MVC Push". Retrieved 2007-07-29.
  8. "स्ट्रट्स और जेएसएफ के बीच मूलभूत अंतर क्या हैं". Struts.apache.org. 2011-02-14. Retrieved 2013-06-14.
  9. Microsoft. "त्रिस्तरीय वितरण". Retrieved 2011-09-19.
  10. Oracle. "clustering_concepts_10en" (PDF). Retrieved 2011-09-19.
  11. Robert R. Perkoski. "वेब विकास का परिचय". Archived from the original on 2013-11-07.
  12. IBM. "तीन स्तरीय वातावरण में क्लाइंट एक्सेस एक्सप्रेस का उपयोग करना". Retrieved 2011-09-19.
  13. Oracle. "थ्री-टियर आर्किटेक्चर को समझना". Retrieved 2011-09-19.
  14. Microsoft. "Pragmatic Architecture: Layering". Retrieved 2011-09-19.
  15. Arokia. "3-Tier Web Architecture". Retrieved 2011-09-19.
  16. "ASP.NET MVC नियंत्रक सर्वोत्तम अभ्यास". Archived from the original on 2011-10-11. Retrieved 2011-09-19.
  17. Jamis Buck. "पतला नियंत्रक, मोटा मॉडल". Archived from the original on 2015-05-16.
  18. "वेब फ्रेमवर्क के साथ शुरुआत करना" (in English). Wired Magazine. Retrieved 2018-04-02.
  19. KLIMUSHYN, Mel (6 April 2015). "Web Application Architecture – Client-Side vs. Server-Side". Atomic Spin. Retrieved 2016-03-06.
  20. "एंगुलरजेएस बनाम बैकबोन.जेएस बनाम एम्बर.जेएस". www.airpair.com (in English). Retrieved 2016-06-04.
  21. 21.0 21.1 Fowler, Martin. "bliki: InversionOfControl". martinfowler.com. Retrieved 2016-03-06.
  22. Xue, Qiang. "Capital One Engineering – Philosophies that Shaped Successful Frameworks". www.capitalone.io. Retrieved 2016-03-06.
  23. 23.0 23.1 23.2 "सक्रिय रिकॉर्ड मूल बातें". Ruby on Rails. Retrieved March 20, 2021. Object Relational Mapping, commonly referred to as its abbreviation ORM, is a technique that connects the rich objects of an application to tables in a relational database management system...Active Record automatically creates methods to allow an application to read and manipulate data stored within its tables.
  24. "सक्रिय रिकॉर्ड लेनदेन". Ruby on Rails. Retrieved March 20, 2021.
  25. "अजाक्स क्या है". www.dlsweb.rmit.edu.au. Retrieved 2021-05-07.
  26. Maximilien, E.M. (December 19, 2006). "Web Services on Rails: Using Ruby and Rails for Web Services Development and Mashups". IEEE Xplore. Chicago. doi:10.1109/ICWS.2006.139. ISBN 0-7695-2669-1.