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

From Vigyanwiki
No edit summary
No edit summary
Line 32: Line 32:
   | 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> डिजानगो  (वेब ​​फ्रेमवर्क), रूबी ऑन रेल्स, सिम्फनी, स्प्रिंग 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}}


=== त्रिस्तरीय संगठन ===
=== त्रिस्तरीय संगठन ===
Line 45: Line 45:
वेब फ्रेमवर्क को ब्राउजर के वास्तु नियमों और [[ हाइपरटेक्स्ट परहस्त शिष्टाचार ]]जैसे [[संचार प्रोटोकॉल]] के अनुसार कार्य करना चाहिए, जो कि [[स्टेटलेस प्रोटोकॉल]] है। वेबपेज [[सर्वर (कंप्यूटिंग)]] द्वारा सर्व किए जाते हैं और फिर [[जावास्क्रिप्ट]] का उपयोग करके ब्राउज़र द्वारा संशोधित किए जा सकते हैं। किसी भी दृष्टिकोण के अपने फायदे और नुकसान हैं।{{citation needed|date=January 2017}}
वेब फ्रेमवर्क को ब्राउजर के वास्तु नियमों और [[ हाइपरटेक्स्ट परहस्त शिष्टाचार ]]जैसे [[संचार प्रोटोकॉल]] के अनुसार कार्य करना चाहिए, जो कि [[स्टेटलेस प्रोटोकॉल]] है। वेबपेज [[सर्वर (कंप्यूटिंग)]] द्वारा सर्व किए जाते हैं और फिर [[जावास्क्रिप्ट]] का उपयोग करके ब्राउज़र द्वारा संशोधित किए जा सकते हैं। किसी भी दृष्टिकोण के अपने फायदे और नुकसान हैं।{{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> एप्लिकेशन जो जावास्क्रिप्ट का भारी उपयोग करते हैं और केवल पृष्ठ के कुछ हिस्सों का नवीकरण करते हैं, उन्हें [[ एक पेज का आवेदन | पेज का आवेदन]] कहा जाता है और समान्यतः कोड को व्यवस्थित करने के लिए क्लाइंट-साइड जावास्क्रिप्ट वेब फ्रेमवर्क का उपयोग करते हैं।{{citation needed|date=January 2017}}


==== सर्वर-साइड ====
==== सर्वर-साइड ====
Line 54: Line 54:
* कोडइग्निटर
* कोडइग्निटर
*[[सीपीपीसीएमएस]]
*[[सीपीपीसीएमएस]]
*Django (वेब ​​फ्रेमवर्क)
*डिजानगो (वेब ​​फ्रेमवर्क)
* [[फ्लास्क (वेब ​​फ्रेमवर्क)]]
* [[फ्लास्क (वेब ​​फ्रेमवर्क)]]
*Jam.py (वेब ​​फ्रेमवर्क)|Jam.py
*Jam.py (वेब ​​फ्रेमवर्क)|Jam.py
Line 70: Line 70:
{{Main article|Single-page application}}
{{Main article|Single-page application}}


उदाहरणों में 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|एंगुलर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>




Line 77: Line 77:


== विशेषताएं ==
== विशेषताएं ==
फ्रेमवर्क समान्यतः एक प्रोग्राम के नियंत्रण प्रवाह को सेट करते हैं और फ्रेमवर्क के उपयोगकर्ता को विभिन्न घटनाओं को उजागर करके उस प्रवाह में सम्मलितहोने की अनुमति देते हैं।<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" />उदाहरण के लिए, कुछ लोकप्रिय माइक्रोफ़्रेमवर्क जैसे रूबी सिनात्रा (सॉफ़्टवेयर) (जो एक्सप्रेस.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>




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


=== सुरक्षा ===
=== सुरक्षा ===

Revision as of 20:16, 2 March 2023

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

इतिहास

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

1995 में, सम्पूर्ण तरीके से एकीकृत सर्वर/भाषा विकास वातावरण प्राथमिक बार उत्पन हुआ और नई वेब-विशिष्ट भाषाएं प्रस्तुत की गईं, जैसे कि ठंडा गलन, पीएचपी और सक्रिय सर्वर पेज[citation needed]

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

1990 के दशक के अंत में, परिपक्व, पूर्ण स्टैक फ्रेमवर्क दिखाई देने लगे, जो प्रायः वेब विकास के लिए उपयोगी कई पुस्तकालयों को वेब डेवलपर्स के उपयोग के लिए एकल संसक्त सॉफ़्टवेयर स्टैक में इकट्ठा करते थे। इसके उदाहरणों में ASP.नेट , जावा प्लेटफार्म , एंटरप्राइज एडिशन , वेबऑब्जेक्ट्स, web2py, OpenACS, Catalyst (सॉफ़्टवेयर), Mojolicious, Ruby on Rails, Laravel, Grails (Framework), Django (वेब ​​फ़्रेमवर्क), Zend Framework, Sails.js सम्मलितहैं। यह ,[5] केकेपीएचपी,[6] और सिम्फोनी[citation needed]

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

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

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

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

पुश-आधारित बनाम पुल-आधारित

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

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

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


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

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


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

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

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

सर्वर-साइड

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

उदाहरणों में बैकबोन , एंगुलरrJS, एंगुलर (एप्लीकेशन प्लेटफॉर्म), EmberJS, React (जावास्क्रिप्ट लाइब्रेरी), jQuery UI, Svelte, और Vue.js सम्मलितहैं।[20]


चर्चा मंच, विकी और वेबलॉग

विशेषताएं

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


वेब टेम्पलेट सिस्टम

कैशिंग

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

सुरक्षा

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

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

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

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


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

एक फ्रेमवर्क की यूनिफ़ॉर्म रिसोर्स लोकेटर मैपिंग या रूटिंग सुविधा वह तंत्र है जिसके द्वारा फ्रेमवर्क URL की व्याख्या करता है। कुछ ढाँचे, जैसे Drupal और Django, नियमित अभिव्यक्ति का उपयोग करते हुए पूर्व-निर्धारित पैटर्न के विरुद्ध प्रदान किए गए URL से मेल खाते हैं, जबकि कुछ अन्य प्रदान किए गए URL को एक ऐसे URL में अनुवाद करने के लिए पुनर्लेखन तकनीकों का उपयोग करते हैं जिसे अंतर्निहित इंजन पहचान लेगा। एक अन्य तकनीक ग्राफ ट्रैवर्सल की है जैसे ज़ोप द्वारा उपयोग की जाती है, जहां एक यूआरएल चरणों में विघटित होता है जो ऑब्जेक्ट ग्राफ़ (मॉडल और विचारों के) को पार करता है।[citation needed]

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

अजाक्स

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