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

From Vigyanwiki
No edit summary
No edit summary
 
(48 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.नेट , जावा प्लेटफार्म , एंटरप्राइज एडिशन , [[WebObjects|वेबऑब्जेक्ट्स]], [[web2py]], [[OpenACS]], Catalyst (सॉफ़्टवेयर), [[Mojolicious]], [[Ruby on Rails]], [[Laravel]], [[Grails (Framework)]], डिजानगो (वेब ​​फ़्रेमवर्क), [[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> डिजानगो  (वेब ​​फ्रेमवर्क), रूबी ऑन रेल्स, सिम्फनी, स्प्रिंग 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> इस वास्तुकला के अच्छे उदाहरण हैं। इसका विकल्प पुल-आधारित संरचना है, जिसे कभी-कभी घटक-आधारित भी कहा जाता है। ये ढांचे दृश्य परत से प्रारम्भ होते हैं, जो आवश्यकतानुसार कई नियंत्रकों से परिणाम प्राप्त सकते हैं। इस संरचना में, दृश्य के साथ कई नियंत्रकों को सम्मलित किया जा सकता है। लिफ्ट (वेब ​​फ्रेमवर्क), [[टेपेस्ट्री (प्रोग्रामिंग)]], [[ जेबीएसएस सीम |जेबीएसएस सीम,]] जकार्ता सर्वर फेसेस और [[अपाचे विकेट]] पुल-आधारित संरचना के उदाहरण हैं। [[Play Framework|प्ले फ्रेमवर्क]] ,[[Apache Struts|अपाचे स्ट्रटस]], रिफे, और ZK (ढांचे) में पुश- और पुल-आधारित एप्लिकेशन नियंत्रक कॉल दोनों के लिए समर्थन है।{{citation needed|date=January 2017}}
   | 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|अपाचे स्ट्रटस]], रिफे (आकृति) में पुश एवं पुल आधारित एप्लिकेशन नियंत्रक कॉल का समर्थन करता है।


=== त्रिस्तरीय संगठन ===
=== त्रिस्तरीय संगठन ===
त्रिस्तरीय वास्तुकला में तीन-स्तरीय संगठन, अनुप्रयोगों को तीन भौतिक स्तरों के आसपास  क्लाइंट, एप्लिकेशन और डेटाबेसरिफे संरचित किया जाता है।<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 56: Line 55:
*डिजानगो (वेब ​​फ्रेमवर्क)
*डिजानगो (वेब ​​फ्रेमवर्क)
* [[फ्लास्क (वेब ​​फ्रेमवर्क)]]
* [[फ्लास्क (वेब ​​फ्रेमवर्क)]]
*Jam.py (वेब ​​फ्रेमवर्क)|Jam.py
*जाम.पीवाई (वेब ​​फ्रेमवर्क)
*यी
*यी
* लारवेल
* लारवेल
*मोजोलिशियस
*मोजोलिशियस
*रूबी ऑन रेल्स
*रूबी ऑन रेल्स
*पाल.जे.एस
*पाल.जेएस
* सिम्फनी
* सिम्फनी
*वसंत MVC
*वसंतएमवीसी
* [[Wt (वेब ​​टूलकिट)]]
* [[Wt (वेब ​​टूलकिट)|डब्ल्यूटी (वेब ​​टूलकिट)]]
* ज़ेंड फ्रेमवर्क
* ज़ेंड फ्रेमवर्क


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


उदाहरणों में बैकबोन , [[AngularJS|एंगुलरrJS]], एंगुलर (एप्लीकेशन प्लेटफॉर्म), [[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" />उदाहरण के लिए, कुछ लोकप्रिय माइक्रोफ़्रेमवर्क जैसे रूबी सिनात्रा (सॉफ़्टवेयर) (जो एक्सप्रेस.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" />
कुछ ढांचे [[आत्मनिरीक्षण (कंप्यूटर विज्ञान)]] एवं प्रसिद्ध सम्मेलनों के उपयोग के माध्यम से वेब एप्लिकेशन कॉन्फ़िगरेशन को कम करते हैं। उदाहरण के लिए, कई जावा फ्रेमवर्क [[हाइबरनेट (जावा)]] को दृढ़ता परत के रूप में उपयोग करते हैं, जो आवश्यक जानकारी को बनाए रखने में सक्षम रनटाइम पर डेटाबेस स्कीमा उत्पन्न कर सकता है। यह एप्लिकेशन डिज़ाइनर को डेटाबेस स्कीमा को स्पष्ट रूप से परिभाषित करने की आवश्यकता के बिना व्यावसायिक वस्तुओं को डिज़ाइन करने की अनुमति देता है। रूबी ऑन रेल्स जैसे फ्रेमवर्क रिवर्स में भी