एप्लिकेशन सर्वर और वेब सर्वर के बीच अंतर क्या है?
एप्लिकेशन सर्वर और वेब सर्वर के बीच अंतर क्या है?
जवाबों:
अधिकांश बार इन शर्तों वेब सर्वर और अनुप्रयोग सर्वर का उपयोग किया जाता है।
वेब सर्वर और एप्लिकेशन सर्वर की सुविधाओं में कुछ प्रमुख अंतर निम्नलिखित हैं:
इस तरह के विन्यास का उदाहरण अपाचे टोमैट HTTP सर्वर और ओरेकल (पूर्व में BEA) वेबलॉजिक सर्वर है। Apache Tomcat HTTP सर्वर वेब सर्वर है और Oracle WebLogic अनुप्रयोग सर्वर है।
कुछ मामलों में सर्वरों को कसकर एकीकृत किया जाता है जैसे कि IIS और .NET रनटाइम। IIS वेब सर्वर है। .NET रनटाइम वातावरण से लैस होने पर, IIS एप्लिकेशन सेवाएँ प्रदान करने में सक्षम है।
यह स्पष्ट रूप से अंतर, समानता और कैसे दोनों संयोजन और सभी में काम कर सकते हैं, को समझने के लिए कुछ परिदृश्यों के साथ एक विस्तृत उत्तर है
एप्लिकेशन सर्वर एक शब्द है जिसे कभी-कभी वेब सर्वर के साथ मिलाया जाता है । जबकि एक वेब सर्वर मुख्य रूप से HTTP प्रोटोकॉल को संभालता है , एप्लिकेशन सर्वर कई अलग-अलग प्रोटोकॉल से संबंधित है, जिसमें HTTP तक, लेकिन सीमित नहीं है ।
वेब सर्वर का मुख्य काम साइट की सामग्री को प्रदर्शित करना है और एप्लिकेशन सर्वर तर्क के प्रभारी , उपयोगकर्ता और प्रदर्शित सामग्री के बीच बातचीत है। एप्लिकेशन सर्वर वेब सर्वर के साथ मिलकर काम कर रहा है , जहां एक प्रदर्शित करता है और दूसरा एक इंटरैक्ट करता है।
सर्वर और उसके क्लाइंट के बीच आगे-पीछे यात्रा करने वाली जानकारी केवल साधारण डिस्प्ले मार्कअप तक ही सीमित नहीं है, बल्कि दोनों के बीच बातचीत करने के लिए भी है।
ज्यादातर मामलों में, सर्वर एक घटक एपीआई के माध्यम से इस इंटरैक्शन को बनाता है , जैसे कि जे 2 ईई (जावा 2 प्लेटफ़ॉर्म) , ईजेबी (एंटरप्राइज जावाबीन) और अन्य विभिन्न एप्लिकेशन सॉफ़्टवेयर मॉडल।
एक उदाहरण:
उन परिदृश्यों के बीच अंतर को समझने का सबसे अच्छा तरीका जहां एक एप्लिकेशन सर्वर वेब सर्वर के साथ काम करता है। ऐसे परिदृश्य में जहां ऑनलाइन सर्वर स्टोर के माध्यम से नहीं है।
परिदृश्य 1: अनुप्रयोग सर्वर के बिना वेब सर्वर
आपके पास एक ऑनलाइन स्टोर है जिसमें केवल एक वेब सर्वर और कोई एप्लिकेशन सर्वर नहीं है। साइट एक प्रदर्शन प्रदान करेगी जहां आप एक उत्पाद चुन सकते हैं। जब आप कोई क्वेरी सबमिट करते हैं, तो साइट लुकअप करती है और HTML परिणाम को उसके क्लाइंट को वापस करती है। वेब सर्वर आपकी क्वेरी सीधे डेटाबेस सर्वर को भेजता है (धैर्य रखें, मैं इसे हमारे अगले डला में समझाता हूं) और प्रतिक्रिया की प्रतीक्षा करता हूं। एक बार प्राप्त करने के बाद, वेब सर्वर एक HTML फ़ाइल में प्रतिक्रिया तैयार करता है और इसे आपके वेब ब्राउज़र को भेजता है। सर्वर और डेटाबेस सर्वर के बीच यह आगे-पीछे का संचार हर बार क्वेरी चलने पर होता है।
परिदृश्य 2: एक एप्लिकेशन सर्वर के साथ वेब सर्वर
यदि आप जिस क्वेरी को चलाना चाहते हैं, वह पहले ही हो चुकी है और तब से कोई डेटा नहीं बदला गया है, तो सर्वर डेटाबेस सर्वर को अनुरोध भेजने के बिना परिणाम उत्पन्न करेगा। यह एक वास्तविक समय क्वेरी की अनुमति देता है जहां एक दूसरा ग्राहक उसी जानकारी तक पहुंच सकता है और डेटाबेस सर्वर पर एक और डुप्लिकेट क्वेरी भेजे बिना वास्तविक समय, विश्वसनीय जानकारी प्राप्त कर सकता है। सर्वर मूल रूप से डेटाबेस सर्वर और वेब सर्वर के बीच एक मध्यवर्ती के रूप में कार्य करता है। यह खींची गई जानकारी को पहले परिदृश्य में पुन: प्रयोज्य होने की अनुमति देता है, क्योंकि यह जानकारी एक विशेष और "अनुकूलित" HTML पृष्ठ में एम्बेडेड है, यह पुन: प्रयोज्य प्रक्रिया नहीं है। एक दूसरे ग्राहक को फिर से जानकारी का अनुरोध करना होगा और अनुरोधित -highly अक्षम जानकारी के साथ एक और HTML एम्बेडेड पृष्ठ प्राप्त करना होगा।
इस तरह के कई जटिल कार्यों का समर्थन करने के लिए इस सर्वर में एक अतिरेक होना चाहिए, वास्तविक समय में खींच रहे सभी डेटा को संभालने के लिए बड़ी प्रसंस्करण शक्ति और उच्च मात्रा में रैम।
उम्मीद है की यह मदद करेगा।
the application server deals with several different protocols, including, but not limited, to HTTP
<- जो कहता है कि यह निश्चित रूप से http अनुरोधों को संभालता है - यह सटीक नहीं है।
दोनों शर्तें बहुत ही सामान्य हैं, एक दूसरे के साथ और कुछ मामलों में इसके विपरीत।
वेब सर्वर : http प्रोटोकॉल का उपयोग करके वेब पर सामग्री परोसता है।
एप्लिकेशन सर्वर : व्यावसायिक तर्क और प्रक्रियाओं को होस्ट और उजागर करता है।
मुझे लगता है कि मुख्य बिंदु यह है कि वेब सर्वर http प्रोटोकॉल के माध्यम से सब कुछ उजागर करता है, जबकि एप्लिकेशन सर्वर इसके लिए प्रतिबंधित नहीं है।
उस ने कहा, कई परिदृश्यों में आप पाएंगे कि वेब सर्वर का उपयोग एप्लिकेशन सर्वर के फ्रंट-एंड को बनाने के लिए किया जा रहा है, अर्थात यह उन वेब पेजों के एक सेट को उजागर करता है जो उपयोगकर्ता को व्यावसायिक नियमों के साथ बातचीत करने की अनुमति देते हैं। अनुप्रयोग सर्वर।
वेब सर्वर
भागो python -m 'SimpleHTTPServer'
और http: // localhost: 8080 पर जाएं । आप जो देख रहे हैं, वह अपने कामकाज में एक वेब सर्वर है। सर्वर बस आपके कंप्यूटर पर संग्रहीत HTTP पर फ़ाइलों की सेवा करता है। मुख्य बिंदु यह है कि यह सब HTTP प्रोटोकॉल के शीर्ष पर किया गया है। उदाहरण के लिए एफ़टीपी सर्वर भी मौजूद हैं जो बिल्कुल एक ही काम करते हैं (संग्रहीत फ़ाइलों की सेवा) लेकिन एक अलग प्रोटोकॉल के शीर्ष पर।
अनुप्रयोग सर्वर
कहें कि हमारे पास एक छोटा अनुप्रयोग है जैसे नीचे ( फ्लास्क से स्निपेट )।
@app.route('/')
def homepage():
return '<html>My homepage</html>'
@app.route('/about')
def about():
return '<html>My name is John</html>'
छोटा उदाहरण प्रोग्राम URL /
को फ़ंक्शन homepage()
और फ़ंक्शन को मैप /about
करता है about()
।
इस कोड को चलाने के लिए हमें एक एप्लिकेशन सर्वर (जैसे Gunicorn) की आवश्यकता होती है - एक प्रोग्राम या मॉड्यूल जो क्लाइंट से अनुरोधों को सुन सकता है और हमारे कोड का उपयोग करके, कुछ गतिशील रूप से वापस कर सकता है। उदाहरण में हम बस कुछ बहुत खराब HTML लौटाते हैं।
अन्य सभी लोगों के बारे में व्यावसायिक तर्क क्या है? खैर, चूंकि URL विशेष रूप से हमारे कोडबेस में कहीं पर मैप करता है, हम काल्पनिक रूप से कुछ तर्क दिखा रहे हैं कि हमारा प्रोग्राम कैसे काम करता है।
recapping
वेब सर्वर - कहीं संग्रहीत फ़ाइलों (सबसे आम तौर पर .css, .html, .js) परोसता है। आम वेब सर्वर Apache, Nginx या यहां तक कि Python's SimpleHTTPServer हैं।
अनुप्रयोग सर्वर - मक्खी पर उत्पन्न फ़ाइलों को कार्य करता है। अनिवार्य रूप से अधिकांश वेब सर्वरों में कुछ प्रकार के प्लगइन्स होते हैं या यहां तक कि अंतर्निहित कार्यक्षमता के साथ ऐसा करने के लिए आते हैं। वहाँ भी सख्त अनुप्रयोग सर्वर जैसे Gunicorn (Python), Unicorn (Ruby), uWSGI (Python), आदि मौजूद हैं।
ध्यान दें कि आप वास्तव में एप्लिकेशन सर्वर के कोड के साथ एक वेब सर्वर का निर्माण कर सकते हैं। यह कुछ मामलों में विकास के दौरान किया जाता है जहां आप अपने कंप्यूटर पर चलने वाले विभिन्न सर्वरों का गजिलियन नहीं करना चाहते हैं।
जैसा कि रुतेश और जेमर्स्वेरा ने बताया, भेद फजी है। ऐतिहासिक रूप से, वे अलग-अलग थे, लेकिन 90 की इन दो अलग-अलग श्रेणियों के माध्यम से सुविधाओं को मिश्रित किया गया और प्रभावी रूप से विलय कर दिया गया। इस बिंदु पर शायद यह कल्पना करना सबसे अच्छा है कि "ऐप सर्वर" उत्पाद श्रेणी "वेब सर्वर" श्रेणी का एक सख्त सुपरसेट है।
कुछ इतिहास। मोज़ेक ब्राउज़र और हाइपरलिंक की गई सामग्री के शुरुआती दिनों में, इस चीज़ को एक "वेब सर्वर" कहा जाता है, जो HTTP पर वेब पेज की सामग्री और छवियों को प्रस्तुत करता है। अधिकांश सामग्री स्थिर थी, और HTTP 1.0 प्रोटोकॉल केवल फ़ाइलों को जहाज करने का एक तरीका था। सीजीआई क्षमता को शामिल करने के लिए त्वरित रूप से "वेब सर्वर" श्रेणी विकसित हुई - गतिशील सामग्री उत्पन्न करने के लिए प्रत्येक वेब अनुरोध पर प्रभावी ढंग से एक प्रक्रिया शुरू करना। HTTP भी परिपक्व हो गई और कैशिंग, सुरक्षा और प्रबंधन सुविधाओं के साथ उत्पाद अधिक परिष्कृत हो गए। जैसे-जैसे तकनीक परिपक्व होती गई, हमें Kiva और NetDynamics से कंपनी-विशिष्ट जावा-आधारित सर्वर-साइड तकनीक मिली, जो अंततः JSP में विलीन हो गई। Microsoft ने एएसपी को जोड़ा, मुझे लगता है कि 1996 में, विंडोज एनटी 4.0 के लिए। स्थिर वेब सर्वर ने कुछ नई तरकीबें सीखीं, ताकि यह एक प्रभावी "
एक समानांतर श्रेणी में, ऐप सर्वर विकसित हुआ था और लंबे समय तक अस्तित्व में था। कंपनियों ने Tixedo, TopEnd, Encina जैसे यूनिक्स के लिए उत्पाद वितरित किए जो दार्शनिक रूप से मेनफ्रेम एप्लिकेशन प्रबंधन और IMS और CICS जैसे निगरानी वातावरण से प्राप्त हुए थे। Microsoft की पेशकश Microsoft Transaction Server (MTS) थी, जो बाद में COM + में विकसित हुई। इन उत्पादों में से अधिकांश "बंद" उत्पाद-विशिष्ट संचार प्रोटोकॉल "वसा" क्लाइंट को सर्वर से कनेक्ट करने के लिए निर्दिष्ट करते हैं। (एनसीना के लिए, कॉम्स प्रोटोकॉल डीसीई आरपीसी था; एमटीएस के लिए यह डीसीओएम था; आदि) 1995/96 में, इन पारंपरिक ऐप सर्वर उत्पादों ने पहले गेटवे के माध्यम से बुनियादी HTTP संचार क्षमता को एम्बेड करना शुरू किया। और लाइनें धुंधली होने लगीं।
वेब सर्वर अधिक भार, अधिक सुगमता और बेहतर सुविधाओं को संभालने के संबंध में अधिक परिपक्व हो गए। ऐप सर्वर ने अधिक से अधिक HTTP- आधारित संचार क्षमता प्रदान की।
इस बिंदु पर "ऐप सर्वर" और "वेब सर्वर" के बीच की रेखा एक फजी है। लेकिन लोग जोर देने के रूप में शर्तों का अलग-अलग उपयोग करना जारी रखते हैं। जब कोई "वेब सर्वर" कहता है, तो आप अक्सर HTTP-केंद्रित, वेब UI, उन्मुख ऐप्स के बारे में सोचते हैं। जब कोई "ऐप सर्वर" कहता है, तो आप सोच सकते हैं "भारी भार, एंटरप्राइज़ सुविधाएँ, लेनदेन और कतार, मल्टी-चैनल संचार (HTTP + अधिक)। लेकिन अक्सर यह एक ही उत्पाद है जो कार्यभार आवश्यकताओं के दोनों सेटों को पूरा करता है।
जैसा कि कई पहले कहा है, वेब सर्वर HTTP याचिकाओं को संभालते हैं, जबकि एप्लिकेशन सर्वर वितरित घटकों के लिए याचिकाओं को संभालते हैं। तो, शायद अंतर को समझने का सबसे आसान तरीका दो उत्पादों की तुलना करना है जो प्रोग्रामिंग वातावरण के संबंध में वे पेश करते हैं।
IIS: ASP (.NET)
टॉम्कट: सर्वलेट
जेट्टी: सर्वलेट
अपाचे: पीएचपी, सीजीआई
एमटीएस: COM +
WAS: EJB
JBoss: EJB
WebLogic अनुप्रयोग सर्वर: EJB
महत्वपूर्ण अंतर यह है कि एप्लिकेशन सर्वर कुछ वितरित घटक प्रौद्योगिकी का समर्थन करते हैं, दूरस्थ मंगलाचरण और वितरित लेनदेन जैसी सुविधाएँ प्रदान करते हैं, जैसे जावा दुनिया में EJB या Microsoft प्लेटफ़ॉर्म पर COM + । Http सर्वर अक्सर Microsoft या सर्वलेट के आधार पर ASP (.NET) जैसे स्क्रिप्टिंग, अक्सर कुछ और सरल प्रोग्रामिंग वातावरणों का समर्थन करता है, अपाचे के मामले में जावा या PHP और CGI के मामले में JSP और कई अन्य सहित।
लोड-बैलेंसिंग, क्लस्टरिंग, सेशन-फेलओवर, कनेक्शन पूलिंग आदि जैसी अन्य क्षमताएं जो पहले एप्लिकेशन सर्वर के दायरे में हुआ करती थीं, वे वेब सर्वर पर सीधे या कुछ तृतीय पक्ष उत्पादों के माध्यम से उपलब्ध हो रही हैं।
अंत में, यह ध्यान देने योग्य है कि तस्वीर को स्प्रिंग फ्रेमवर्क जैसे "हल्के कंटेनरों" से और विकृत किया गया है, जो अक्सर अधिक सरल तरीके से और एप्लिकेशन सर्वर इन्फ्रास्ट्रक्चर के बिना एप्लिकेशन सर्वर के उद्देश्य को पूरक करता है। और चूंकि अनुप्रयोगों में वितरण पहलू वितरित घटक से सेवा प्रतिमान और SOA वास्तुकला की ओर बढ़ रहा है, इसलिए पारंपरिक सर्वर सर्वर के लिए कम और कम जगह बची है।
वेब सर्वर और एप्लिकेशन सर्वर के बीच मुख्य अंतर यह है कि वेब सर्वर का अर्थ स्थैतिक पृष्ठों जैसे HTML और CSS की सेवा करना है, जबकि एप्लिकेशन सर्वर सर्वर साइड कोड जैसे JSP, सर्वलेट या EJB को निष्पादित करके गतिशील सामग्री उत्पन्न करने के लिए जिम्मेदार है।
मुझे किसका उपयोग करना चाहिए?
एक बार जब आप वेब और एप्लिकेशन सर्वर और वेब कंटेनरों के बीच का अंतर जान लेते हैं, तो यह पता लगाना आसान होता है कि उनका उपयोग कब करना है। web server
यदि आप स्थैतिक वेब पेजों की सेवा कर रहे हैं, तो आपको अपाचे HTTPD की आवश्यकता होगी । अगर आपके पास डायनामिक कंटेंट जेनरेट करने के लिए सिर्फ JSP और सर्वलेट के साथ जावा एप्लीकेशन है तो आपको web containers
Tomcat या Jetty की जरूरत है । हालांकि, अगर आपके पास EJB का उपयोग करके जावा EE एप्लिकेशन है , तो आपकोapplication server
JBoss, WebSphere या Oracle के WebLogic जैसे पूर्ण विकसित की आवश्यकता वाले लेनदेन, मैसेजिंग और अन्य फैंसी फीचर्स का वितरण करना चाहिए ।
वेब कंटेनर वेब सर्वर का एक हिस्सा है और वेब सर्वर अनुप्रयोग सर्वर का एक हिस्सा है।
वेब सर्वर वेब कंटेनर से बना होता है, जबकि एप्लिकेशन सर्वर वेब कंटेनर और साथ ही EJB कंटेनर से बना होता है।
संक्षेप में एक वेब सर्वर एक सर्वर है जो http के माध्यम से उपयोगकर्ताओं को वेब पेज प्रदान करता है। एक एप्लिकेशन सर्वर एक सर्वर है जो सिस्टम के लिए व्यावसायिक तर्क को होस्ट करता है। यह अक्सर लंबे समय तक चलने वाली / बैच प्रक्रियाओं और / या मानव उपभोग (REST / JSON सेवाओं, SOAP, RPC, आदि) के लिए नहीं होने वाली इंटरोप सेवाओं दोनों को होस्ट करता है।
एक वेब सर्वर विशेष रूप से HTTP / HTTPS अनुरोधों को संभालता है। यह HTTP / HTTPS प्रोटोकॉल का उपयोग करके वेब पर सामग्री प्रदान करता है।
एक एप्लिकेशन सर्वर संभवतः HTTP सहित किसी भी संख्या के प्रोटोकॉल के माध्यम से आवेदन कार्यक्रमों के लिए व्यावसायिक तर्क प्रदान करता है। एप्लिकेशन प्रोग्राम इस तर्क का उपयोग कर सकता है जैसे यह किसी ऑब्जेक्ट पर एक विधि को कॉल करेगा। ज्यादातर मामलों में, सर्वर इस व्यावसायिक तर्क को एक घटक एपीआई के माध्यम से उजागर करता है, जैसे कि ईजेबी (एंटरप्राइज जावाबीन) घटक मॉडल जो जावा ईई (जावा प्लेटफॉर्म, एंटरप्राइज एडिशन) एप्लिकेशन सर्वर पर पाया जाता है। मुख्य बिंदु यह है कि वेब सर्वर http प्रोटोकॉल के माध्यम से सब कुछ उजागर करता है, जबकि एप्लिकेशन सर्वर इसके लिए प्रतिबंधित नहीं है। एक एप्लिकेशन सर्वर इस प्रकार एक वेब सर्वर की तुलना में बहुत अधिक सेवाएं प्रदान करता है जिसमें आमतौर पर शामिल होते हैं:
अधिकांश एप्लिकेशन सर्वर में वेब सर्वर उनके अभिन्न अंग के रूप में होता है, इसका मतलब है कि वेब सर्वर जो भी सक्षम है, ऐप सर्वर वह कर सकता है। इसके अतिरिक्त ऐप सर्वर में एप्लिकेशन स्तर सेवाओं जैसे कनेक्शन पूलिंग, ऑब्जेक्ट पूलिंग, लेनदेन समर्थन, मैसेजिंग सेवाओं आदि का समर्थन करने के लिए घटक और विशेषताएं हैं।
एक प्रोग्राम सर्वर प्रोग्राम लॉजिक को निष्पादित करने के लिए वेब सर्वर पर चला सकता है (लेकिन हमेशा नहीं करता है), जिसके परिणाम तब वेब सर्वर द्वारा दिए जा सकते हैं। यह वेब सर्वर / एप्लिकेशन सर्वर परिदृश्य का एक उदाहरण है। Microsoft दुनिया में एक अच्छा उदाहरण इंटरनेट सूचना सर्वर / SharePoint सर्वर संबंध है। IIS एक वेब सर्वर है; SharePoint एक एप्लिकेशन सर्वर है। SharePoint IIS के "शीर्ष पर" बैठता है, विशिष्ट तर्क निष्पादित करता है, और IIS के माध्यम से परिणाम प्रदान करता है। जावा दुनिया में, उदाहरण के लिए Apache और Tomcat के साथ एक समान परिदृश्य है।
जैसा कि वेब सर्वर गतिशील सामग्री के लिए स्थिर सामग्री और ऐप सर्वर के लिए अच्छी तरह से अनुकूल हैं, अधिकांश उत्पादन वातावरणों में ऐप सर्वर के लिए रिवर्स प्रॉक्सी के रूप में वेब सर्वर अभिनय होता है। इसका मतलब है कि पेज अनुरोध करते समय, स्थिर सामग्री जैसे चित्र / स्टेटिक html वेब सर्वर द्वारा प्रदान किया जाता है जो अनुरोध की व्याख्या करता है। किसी प्रकार की फ़िल्टरिंग तकनीक (ज्यादातर अनुरोधित संसाधन का विस्तार) का उपयोग करके वेब सर्वर डायनामिक सामग्री अनुरोध और पारदर्शी रूप से ऐप सर्वर की ओर अग्रसर होता है।
ऐसे कॉन्फ़िगरेशन का उदाहरण अपाचे HTTP सर्वर और BEA WebLogic सर्वर है। Apache HTTP Server वेब सर्वर है और BEA WebLogic एप्लीकेशन सर्वर है। कुछ मामलों में, सर्वरों को कसकर एकीकृत किया जाता है जैसे कि IIS और .NET रनटाइम। IIS वेब सर्वर है। .NET रनटाइम वातावरण से लैस जब IIS एप्लिकेशन सेवाएं प्रदान करने में सक्षम होता है
Web Server Programming Environment
Apache PHP, CGI
IIS (Internet Information Server) ASP (.NET)
Tomcat Servlet
Jetty Servlet
Application Server Programming Environment
WAS (IBM's WebSphere Application Server) EJB
WebLogic Application Server (Oracle's) EJB
JBoss AS EJB
MTS COM+
एक एप्लिकेशन सर्वर को आमतौर पर लंबे समय तक चलने वाली प्रक्रियाओं को सुविधाजनक बनाने के लिए डिज़ाइन और तैनात किया जाता है जो अधिक संसाधन गहन भी होगा।
एक वेब सर्वर का उपयोग शॉर्ट बर्स्ट के लिए किया जाता है जो आमतौर पर संसाधन गहन नहीं होते हैं। यह ज्यादातर वेब आधारित यातायात की सुविधा के लिए है।
इन दोनों के बीच की सीमा कभी इतनी पतली हो रही है।
एप्लिकेशन सर्वर ग्राहकों के लिए व्यावसायिक तर्क को उजागर करते हैं। इसका मतलब है कि एप्लिकेशन सर्वर में व्यावसायिक तर्क करने के लिए विधियों का एक सेट शामिल होता है (विशेष रूप से हालांकि, यहां तक कि इस पर सॉफ़्टवेयर चलाने के लिए अनुमति देने वाला कंप्यूटर भी हो सकता है)। तो यह केवल वांछित परिणाम देगा, HTML सामग्री नहीं। (एक विधि कॉल के समान)। तो यह कड़ाई से HTTP आधारित नहीं है।
लेकिन वेब सर्वर एचटीएमएल कंटेंट को वेब ब्राउजर्स (कड़ाई से एचटीटीपी आधारित) पास करते हैं। वेब सर्वर केवल स्थिर वेब संसाधनों को संभालने में सक्षम थे, लेकिन सर्वर साइड स्क्रिप्टिंग के उद्भव ने वेब सर्वर को गतिशील सामग्री को भी संभालने की अनुमति दी। जहां एक वेब सर्वर अनुरोध में लेता है और क्लाइंट को भेजे जाने वाले HTML कंटेंट को बनाने के लिए इसे संबंधित स्क्रिप्ट (PHP, JSP, CGI स्क्रिप्ट आदि) के लिए निर्देशित करता है। सामग्री प्राप्त होने के बाद, वेब सर्वर क्लाइंट को HTML पेज भेजेगा।
हालाँकि, आजकल ये दोनों सर्वर एक साथ उपयोग किए जाते हैं। जहां वेब सर्वर अनुरोध लेता है और फिर HTML सामग्री बनाने के लिए एक स्क्रिप्ट को कॉल करता है। फिर, स्क्रिप्ट HTML सामग्री को भरने के लिए फिर से एक एप्लिकेशन सर्वर LOGIC (जैसे लेन-देन का विवरण पुनर्प्राप्त करेगा) को कॉल करेगा।
इसलिए दोनों सर्वरों का प्रभावी ढंग से उपयोग किया जाता है।
इसलिए .... हम सुरक्षित रूप से कह सकते हैं कि आजकल, ज्यादातर मामलों में, वेब सर्वर का उपयोग एप्लिकेशन सर्वर के सबसेट के रूप में किया जाता है। लेकिन नाटकीय रूप से यह मामला नहीं है।
मैंने इस विषय के बारे में कई लेख पढ़े हैं और इस लेख को काफी उपयोगी पाया है ।
जावा शब्दों में, एक और है: वेब कंटेनर (या अधिक सख्ती से, सर्वलेट कंटेनर)। यह वेब सर्वर और एप्लिकेशन सर्वर के बीच में है।
जावा के संदर्भ में एक वेब कंटेनर एक एप्लिकेशन सर्वर है जो मूल रूप से केवल जावा ईई के जेएसपी / सर्वलेट भाग को लागू करता है और इसमें जावा ईई के कई मुख्य भागों का अभाव होता है, जैसे कि ईजेबी समर्थन। एक उदाहरण अपाचे टोमाकट है।
एक एप्लिकेशन सर्वर एक मशीन है (कुछ मशीन पर चलने वाली एक निष्पादन योग्य प्रक्रिया, वास्तव में) जो "किसी भी चैनल पर (किसी भी प्रोटोकॉल का उपयोग करके) सुनता है, जो भी सेवा प्रदान करता है उसके लिए ग्राहकों से अनुरोध के लिए, और फिर उन अनुरोधों के आधार पर कुछ करता है। (ग्राहक के लिए एक रिस्पांस शामिल हो भी सकता है और नहीं भी)
एक वेब सर्वर एक मशीन पर चलने वाली प्रक्रिया है जो विशेष रूप से "इंटरनेट" प्रोटोकॉल, (http, https, ftp, आदि) में से एक का उपयोग करके टीसीपी / आईपी चैनल पर "सुनता है" और जो कुछ भी करता है वह आने वाले अनुरोधों के आधार पर करता है। .. आम तौर पर, (मूल रूप से परिभाषित), यह प्राप्त / उत्पन्न होता है और क्लाइंट को एक html वेब पेज लौटाता है, या तो सर्वर पर स्थिर html फ़ाइल से लाया जाता है, या आने वाले क्लाइंट अनुरोध में मापदंडों के आधार पर गतिशील रूप से निर्मित होता है।
एक वेब सर्वर वेब पेजों की सेवा के लिए HTTP प्रोटोकॉल चलाता है। एक प्रोग्राम सर्वर प्रोग्राम लॉजिक को निष्पादित करने के लिए वेब सर्वर पर चला सकता है (लेकिन हमेशा नहीं करता है), जिसके परिणाम तब वेब सर्वर द्वारा दिए जा सकते हैं। यह वेब सर्वर / एप्लिकेशन सर्वर परिदृश्य का एक उदाहरण है।
Microsoft दुनिया में एक अच्छा उदाहरण इंटरनेट सूचना सर्वर / SharePoint सर्वर संबंध है। IIS एक वेब सर्वर है; SharePoint एक एप्लिकेशन सर्वर है। SharePoint IIS के "शीर्ष पर" बैठता है, विशिष्ट तर्क निष्पादित करता है, और IIS के माध्यम से परिणाम प्रदान करता है।
जावा दुनिया में, उदाहरण के लिए Apache और Tomcat के साथ एक समान परिदृश्य है।
पहले हाथ पर, एक वेब सर्वर HTTP प्रोटोकॉल पर वेब सामग्री (HTML और स्थिर सामग्री) परोसता है। दूसरी ओर, एक एप्लिकेशन सर्वर एक कंटेनर होता है, जिस पर आप एन-टियर आर्किटेक्चर में HTTP सहित विभिन्न प्रोटोकॉल के माध्यम से क्लाइंट लॉजिक के लिए व्यावसायिक तर्क और प्रक्रियाओं का निर्माण और खुलासा कर सकते हैं।
एक एप्लिकेशन सर्वर इस प्रकार एक वेब सर्वर की तुलना में बहुत अधिक सेवाएं प्रदान करता है जिसमें आमतौर पर शामिल होते हैं:
AFAIK, ATG डायनेमो 90 के दशक के उत्तरार्ध में (ऊपर की परिभाषा के अनुसार) बहुत पहले एप्लिकेशन सर्वर में से एक था। 2000 की शुरुआत में, यह जैसे कुछ मालिकाना आवेदन सर्वर के शासनकाल था ColdFusion (CFML के रूप में), broadvision (सर्वर साइड जावास्क्रिप्ट के रूप में), आदि लेकिन कोई भी वास्तव में जावा अनुप्रयोग सर्वर युग बच गई।
बुनियादी समझ :
क्लाइंट सर्वर आर्किटेक्चर में
सर्वर:> जो अनुरोधों को पूरा करता है।
ग्राहक:> जो सेवा का उपभोग करता है।
वेब सर्वर और एप्लीकेशन सर्वर दोनों सॉफ्टवेयर एप्लीकेशन हैं जो सर्वर के रूप में अपने क्लाइंट के लिए काम करते हैं।
उनके उपयोग के स्थान के आधार पर उन्हें उनके नाम मिले।
Web server :> serve web content
:> Like Html components
:> Like Javascript components
:> Other web components like images,resource files
:> Supports mainly web protocols like http,https.
:> Supports web Request & Response formats.
उपयोग -
we require low processing rates, regular processing practices involves.
उदा: सभी फ्लैट सर्वर आम तौर पर उपलब्ध रेडी-मेड होते हैं जो केवल वेब आधारित सामग्री परोसते हैं।
Application server :> Serve application content/component data(Business data).
:> These are special kind which are custom written
designed/engineered for specific
purpose.some times fully unique in
their way and stands out of the crowd.
:> As these serves different types of data/response contents
:> So we can utilize these services for mobile client,web
clients,intranet clients.
:> Usually application servers are services offered on different
protocols.
:> Supports different Request& Response formats.
उपयोग -
we require multi point processing, specialized processing techniques involves like for AI.
जैसे: Google मैप्स सर्वर, Google सर्च सर्वर, Google डॉक्स सर्वर, Microsoft 365 सर्वर, AI के लिए Microsoft कंप्यूटर विज़न सर्वर।
हम उन्हें 4-स्तरीय / n-tier वास्तुकला में स्तरीय / पदानुक्रम के रूप में मान सकते हैं।
So they can provide
load balancing,
multiple security levels,
multiple active points,
even they can provide different request processing environments.
मानक वास्तुकला उपमाओं के लिए कृपया इस लिंक का अनुसरण करें:
https://docs.microsoft.com/en-us/previous-versions/msp-np/ee658120(v%3dpandp.10)
सबसे बड़ा अंतर एक वेब सर्वर HTTP अनुरोधों को संभालता है, जबकि एक एप्लिकेशन सर्वर किसी भी प्रोटोकॉल पर व्यापार तर्क निष्पादित करेगा।
वास्तव में Apache एक वेब सर्वर है और Tomcat एक एप्लिकेशन सर्वर है। जब HTTP अनुरोध वेब सर्वर पर आता है। फिर स्थिर सामग्री वेब सर्वर द्वारा ब्राउज़र में वापस भेजती है। वहाँ है और तर्क करना है, तो उस अनुरोध को एप्लिकेशन सर्वर को भेजें। तर्क को संसाधित करने के बाद फिर प्रतिक्रिया वेब सर्वर को भेजें और क्लाइंट को भेजें।
उपरोक्त सभी बस अति सरल कुछ अति जटिल है। एक एप्लिकेशन सर्वर में एक वेब सर्वर होता है, एक एप्लिकेशन सर्वर में मानक वेब सर्वर की तुलना में कुछ अधिक परिवर्धन / विस्तार होते हैं। यदि आप एक उदाहरण के रूप में टॉमईई को देखते हैं:
CDI - Apache OpenWebBeans
EJB - Apache OpenEJB
JPA - Apache OpenJPA
JSF - Apache MyFaces
JSP - Apache Tomcat
JSTL - Apache Tomcat
JTA - Apache Geronimo Transaction
Servlet - Apache Tomcat
Javamail - Apache Geronimo JavaMail
Bean Validation - Apache BVal
आप देखेंगे कि ऐप सर्वर में शस्त्रागार में टॉमकैट (वेब कंटेनर / सर्वर) एक और उपकरण है। आप चाहें तो वेब सर्वर में जेपीए और दूसरी तकनीक प्राप्त कर सकते हैं, लेकिन एप्लिकेशन सर्वर आपकी सुविधा के लिए इन सभी चीजों को पैकेज करते हैं। एक ऐप सर्वर के रूप में पूरी तरह से वर्गीकृत होने के लिए आपको आवश्यक रूप से कुछ मानक द्वारा निर्धारित टूल की सूची का पालन करना होगा।
जरूरी नहीं कि एक स्पष्ट विभाजन रेखा हो। आजकल, कई कार्यक्रम दोनों के तत्वों को जोड़ते हैं - सेवारत http अनुरोध (वेब सर्वर) और व्यवसाय तर्क को संभालना (ऐप सर्वर)
से https://en.wikipedia.org/wiki/Web_server
एक वेब सर्वर एक कंप्यूटर सिस्टम है जो HTTP के माध्यम से अनुरोध करता है, वर्ल्ड वाइड वेब पर जानकारी वितरित करने के लिए उपयोग किए जाने वाले मूल नेटवर्क प्रोटोकॉल। यह शब्द संपूर्ण प्रणाली या विशेष रूप से उस सॉफ़्टवेयर को संदर्भित कर सकता है जो HTTP अनुरोधों को स्वीकार और पर्यवेक्षण करता है ।
से https://en.wikipedia.org/wiki/Application_server#Application_Server_definition
एक एप्लिकेशन सर्वर एक वेब सर्वर (जैसे Apache या Microsoft इंटरनेट इनफॉर्मेशन सर्विसेज (IIS)) और (लगभग हमेशा) एक SQL डेटाबेस (जैसे PostgreSQL, MySQL, या Oracle) के सामने चलता है ।
वेब एप्लिकेशन कंप्यूटर कोड होते हैं, जो एप्लिकेशन सर्वरों को चलाते हैं और भाषा में लिखे जाते हैं, जो एप्लिकेशन सर्वर रनटाइम लाइब्रेरीज़ का समर्थन करता है और कॉल करता है और एप्लिकेशन सर्वर ऑफ़र को कंपोनेंट करता है ।
एप्लिकेशन सर्वर और वेब सर्वर दोनों का उपयोग वेब एप्लिकेशन को होस्ट करने के लिए किया जाता है। वेब सर्वर दूसरी तरफ वेब कंटेनर के साथ डील करता है। एप्लीकेशन सर्वर वेब कंटेनर के साथ-साथ ईजेबी (एंटरप्राइज जावाबीन) कंटेनर या कॉम + कंटेनर के साथ माइक्रोसॉफ्ट डॉट नेट के लिए भी सौदा है।
वेब सर्वर को एचटीटीपी स्टेटिक कंटेंट जैसे एचटीएमएल, इमेजेज आदि की सेवा के लिए बनाया गया है और डायनामिक कंटेंट के लिए पर्ल, पीएचपी, एएसपी, जेएसपी आदि जैसी स्क्रिप्टिंग भाषाओं का समर्थन करने के लिए प्लगइन्स हैं और यह एचटीटीपी प्रोटोकॉल तक सीमित है। नीचे सर्वर गतिशील HTTP सामग्री उत्पन्न कर सकते हैं।
वेब सर्वर प्रोग्रामिंग पर्यावरण:
IIS: ASP (.NET)
अपाचे टोमाकट: सर्वलेट
जेट्टी: सर्वलेट
अपाचे: पीएचपी, सीजीआई
एप्लिकेशन सर्वर वह कर सकता है जो वेब सर्वर सक्षम है और किसी भी प्रोटोकॉल का उपयोग करके सुनता है साथ ही ऐप सर्वर में अनुप्रयोग स्तर सेवाओं जैसे कि कनेक्शन पूलिंग, ऑब्जेक्ट पूलिंग, लेनदेन समर्थन, मैसेजिंग सेवाओं आदि का समर्थन करने के लिए घटक और विशेषताएं हैं।
अनुप्रयोग सर्वर का प्रोग्रामिंग परिवेश:
एमटीएस: COM +
WAS: EJB
JBoss: EJB
WebLogic अनुप्रयोग सर्वर: EJB
जबकि दोनों के बीच ओवरलैप हो सकता है (कुछ वेब सर्वर का उपयोग एप्लिकेशन सर्वर के रूप में भी किया जा सकता है) सबसे बड़ा अंतर IMHO प्रसंस्करण मॉडल और सत्र प्रबंधन में है:
वेब सर्वर प्रोसेसिंग मॉडल में, अनुरोधों को संभालने पर ध्यान केंद्रित किया जाता है; "सत्र" की धारणा बहुत अधिक आभासी है। यह कहना है कि "सत्र" ग्राहक और सर्वर (इसलिए आरईएसटी) और / या इसे बाहरी स्थिर भंडारण (एसक्यूएल सर्वर, मेम्केड आदि) में क्रमिक रूप से राज्य के प्रतिनिधित्व को स्थानांतरित करके सिम्युलेटेड है।
एप्लिकेशन सर्वर में सत्र आमतौर पर अधिक स्पष्ट होता है और अक्सर "सत्र" की पूरी अवधि के लिए एप्लिकेशन सर्वर की स्मृति में रहने वाली एक वस्तु का रूप ले लेता है।
यह विशिष्ट वास्तुकला पर निर्भर करता है। कुछ एप्लिकेशन सर्वर मूल रूप से वेब प्रोटोकॉल (XML / RPC / SOAP HTTP पर) का उपयोग कर सकते हैं, इसलिए थोड़ा तकनीकी अंतर है। आमतौर पर एक वेब सर्वर उपयोगकर्ता-सामना कर रहा है, HTTP / HTTPS पर विभिन्न प्रकार की सामग्री परोस रहा है, जबकि एक एप्लिकेशन सर्वर उपयोगकर्ता-सामना नहीं कर रहा है और गैर-मानक या गैर-राउटेबल प्रोटोकॉल का उपयोग कर सकता है। बेशक RIA / AJAX के साथ, अंतर को और अधिक क्लाउड किया जा सकता है, जो विशेष रूप से रिमोट एक्सेस सेवाओं को पंप करने वाले ग्राहकों को केवल गैर-HTML सामग्री (JSON / XML) परोसता है।
IMO, यह ज्यादातर चिंताओं को अलग करने के बारे में है।
विशुद्ध रूप से तकनीकी दृष्टिकोण से, आप एकल वेब सर्वर में सब कुछ (वेब सामग्री + व्यावसायिक तर्क) कर सकते हैं। यदि आप ऐसा करते हैं, तो जानकारी HTML सामग्री के अनुरोध के अंदर एम्बेड की जाएगी। क्या होगा असर?
उदाहरण के लिए, कल्पना करें कि आपके पास 2 अलग-अलग ऐप हैं जो ब्राउज़र पर पूरी तरह से अलग HTML सामग्री प्रदान करते हैं। यदि आप व्यावसायिक तर्क को ऐप-सर्वर में अलग कर देंगे, तो आप स्क्रिप्ट के माध्यम से ऐप-सर्वर में समान डेटा देख रहे विभिन्न वेब-सर्वर प्रदान कर सकते हैं। हालाँकि, यदि आप तर्क को अलग नहीं करते हैं और इसे वेब-सर्वर में रखते हैं, तो जब भी आप अपना व्यवसाय मॉडल बदलते हैं, तो आप इसे हर एक वेब-सर्वर में बदल देते हैं, जिसमें आपको अधिक समय लगेगा, कम विश्वसनीय और प्रवण त्रुटि।