बड़ी वेबसाइटें बैकएंड और फ्रंटएंड के लिए विभिन्न भाषाओं का उपयोग क्यों करती हैं?


26

छोटे MVC अनुप्रयोगों से मेरी समझ यह है कि आपके पास सामने का छोर है, जो HTML, JS, jQuery, आदि से संबंधित है, और आपके पास पीछे का अंत है, जिसमें आपके नियंत्रक और मॉडल शामिल हैं।

हालांकि, जब मैं बड़ी कंपनियों के डेवलपर्स से बात करता हूं, तो वे अक्सर फ्रंटएंड टियर और बैकएंड टियर होने का उल्लेख करते हैं। इसलिए कभी-कभी, मैं सुन सकता हूं कि उनके पास सी # के साथ एक फ्रंटेंड और जावा के साथ बैकएंड है। कोई भी कंपनी विभिन्न भाषाओं में बैकएंड और फ्रंटएंड क्यों चाहेगी? क्या यह बड़ी वेबसाइट के पैमाने को बेहतर बनाने में मदद करता है?

जब लोग कहते हैं कि उनका फ़्रंट C # में बनाया गया है, तो क्या इसका मतलब यह है कि वे फ्रंटएंड के लिए एक फ्रेमवर्क का उपयोग कर रहे हैं (जैसे .NET) और बैकएंड पर एक अतिरिक्त फ्रेमवर्क (जैसे स्प्रिंग)? या इसका मतलब पूरी तरह से अलग है?


6
आप एक ही भाषा में कुछ भी क्यों करना चाहते हैं? भाषाएं अलग हैं, सभी अलग-अलग उद्देश्यों के लिए तैयार हैं। "सामान्य प्रयोजन की भाषा" जैसी कोई चीज नहीं है।
SK-तर्क

33
@ एसके-तर्क: आप गंभीरता से एक ही भाषा में एक आवेदन लिखने के किसी भी लाभ के बारे में नहीं सोच सकते हैं?
back2dos

10
@ back2dos, नहीं, मैं एक भी फायदा नहीं देख सकता। यह बहुत बेवकूफ है, किसी ऐसी भाषा के लिए उपयोग करने की कोशिश कर रहा है जिसे इसके लिए डिज़ाइन नहीं किया गया था। किसी क्षेत्र में एक भाषा का उपयोग करना बेवकूफी है, जहां एक और एक है, बहुत बेहतर फिट है।
SK-तर्क

25
@ एसके-तर्क: उस तर्क के साथ किसी भी लोकप्रिय भाषा का उपयोग शुरू करने के लिए बेवकूफी है, क्योंकि किसी भी डोमेन के लिए, एक मौजूदा डीएसएल है जो उस क्षेत्र के लिए डिज़ाइन किया गया था। लेकिन मेरा मानना ​​है कि आप जानते हैं, इसलिए मुझे संदेह है कि आप आज एक भड़कीले मूड में हैं, या फिर आप सामान्यीकरण और भावनात्मक असंतुलन के उस स्तर से बचेंगे।
back2dos 12

3
टीमें / प्रबंधक और प्लेटफ़ॉर्म किसी भी विशिष्ट कार्य से पहले भाषा चयन करेंगे। C # ASP.NET को जावा लीगेसी बैकएंड एप्लिकेशन के वेब फ्रंट एंड के रूप में चुना गया था, क्योंकि इस वेब ऐप के बारे में "इतना अनोखा" कुछ नहीं था कि इसे विंडोज स्टैक पर रखा जाना इतना सही था।
जेएफओ

जवाबों:


67

"फ्रंट-एंड" और "बैक-एंड" नेबुलास शब्द हो सकते हैं, खासकर उद्यम अनुप्रयोगों में। "फ्रंट-एंड" का अर्थ यूआई हो सकता है, या यह संपूर्ण एप्लिकेशन हो सकता है। "बैक-एंड" का उपयोग इंटर्न के अर्थ के लिए किया जा सकता है, या यह डेटाबेस या बाहरी सेवाओं का सेवन किया जा सकता है। शब्दों का अर्थ अक्सर पूरी तरह से निर्भर करता है कि आप किससे बात कर रहे हैं तो क्या आप शायद पूछते हैं "अरे, इससे आपका क्या मतलब है?"

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

मैं एक बड़े बैंक के लिए काम करता हूं। मेरी टीम C # में हमारे एप्लिकेशन को विकसित करती है। यह सब। लेकिन हम उन वेब सेवाओं का उपभोग करते हैं जो बड़े पैमाने पर जावा में लिखी जाती हैं, और वे सेवाएं अन्य सेवाओं से बात करती हैं जो अन्य सेवाओं से बात करती हैं जो उचित डेटा स्टोर से और उनके लिए खाता डेटा प्राप्त करती हैं, और कौन जानता है कि उन के साथ कौन सी भाषाएं उपयोग की जाती हैं।

लघु संस्करण: लोग उन उपकरणों का उपयोग करते हैं जो काम करवाते हैं।


1
अब मैं Malbolge में लिखी गई एक सार्वजनिक वेब सेवा बनाना चाहता हूं जो वास्तव में सरल / सामान्य कुछ करती है, बस कोई यह कह सकता है कि उनका फर्स्ट बैकेंड इसका उपयोग करता है।
इज़्काता

इस भाषा संयोजन प्रभाव को कैसे प्राप्त किया जा सकता है?
गर्भपात

17

मुझे लगता है कि आपको प्रश्न को थोड़ा चौड़ा करने की आवश्यकता है: बड़े सॉफ्टवेयर प्रोजेक्ट एक से अधिक प्रोग्रामिंग भाषा का उपयोग क्यों करते हैं?

कई संभावित उत्तर हैं, जिनमें से सबसे उल्लेखनीय हैं:

  • बड़े अनुप्रयोगों में कई अपेक्षाकृत स्वतंत्र हिस्से होते हैं; अक्सर, प्रत्येक भाग एक अलग टीम या एक अलग बाहरी ठेकेदार द्वारा बनाया जाता है। सर्वश्रेष्ठ बोली के साथ जाने का लाभ अक्सर एक ही भाषा में सब कुछ होने के लाभ से बड़ा होता है।
  • भाषाएँ आती हैं और जाती हैं, और कभी-कभी एक बड़ी प्रणाली का एक घटक पारिस्थितिकी तंत्र की रूपरेखा तैयार करता है। Microsoft दुनिया का एक उदाहरण है कि सभी नई परियोजनाओं के लिए अब कितनी कंपनियां C # का उपयोग करती हैं, लेकिन उनके पास अभी भी काफी VB कोडबेस है। नवीनतम प्रोग्रामिंग भाषा में इसे करने के लिए किसी परियोजना को फिर से लिखने की लागत व्यावहारिक रूप से कभी भी उचित नहीं है।
  • तीसरे पक्ष के घटकों के साथ हस्तक्षेप। यदि आपके C # इकोसिस्टम को एक विशिष्ट कार्य करने की आवश्यकता है जिसके लिए केवल जावा समाधान मौजूद है, तो आपके पास दो विकल्प हैं: स्वयं समाधान लागू करें, या जावा समाधान का उपयोग करें और इसे अपने सिस्टम में एकीकृत करने के लिए थोड़ा सा गोंद विकसित करें। उत्तरार्द्ध किसी भी गैर-तुच्छ कार्य के लिए लगभग हमेशा सस्ता है।

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


6

यह एक बड़े उद्यम में सापेक्ष है।
मेरी कंपनी में स्टैक मोटे तौर पर है

(html/javascript)--> (JSP on Tomcat and Java based WebCMS) -> (.Net SOA)  

इसलिए वेब डेवलपमेंट टीम के लिए फ्रंटएंड HTML / JS है और बैकएंड जावा है। एंटरप्राइज के लिए फ्रंटएंड जावा है और बैकएंड है। नेट।

वास्तव में .Net परत को बिलिंग और दावों के लिए एक COBOL / UNIX एप्लिकेशन के साथ काम करना पड़ता है और इसलिए इस परिप्रेक्ष्य में .Net फ्रंटएंड है और COBOL बैकएंड है।

और हाँ जैसा कि अन्य ने उल्लेख किया है कि हमारे पास यूएक्स डिजाइनरों, एचटीएमएल / जेएस देव, जावा देव, वेब मिडलवेयर, .नेट देव, एसक्यूएल देव, कोबोल देव के दल हैं जो स्टैक के प्रत्येक भाग में काम कर रहे हैं।

वास्तव में किसी भी पर्याप्त रूप से बड़े उद्यम में यह सभी तरह से नीचे है।


कछुओं के लिए +1। मुझे खुशी है कि मैं कछुआ नहीं हूं जिसका अगला छोर विधानसभा भाषा है।
17

5

भ्रामक शब्दार्थ

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

वास्तविक पृथक्करण सर्वर पर क्या होता है और क्लाइंट या ब्राउज़र पर क्या होता है। आप HTML को आसानी से बनाने के लिए "फ्रंट एंड डेवलपमेंट" के साथ फ्रंट एंड का प्रतिनिधित्व करने के लिए भेज सकते हैं, इसलिए मैं आम तौर पर जो भी करता हूं, उस पर चर्चा करते समय फ्रंट और बैक-एंड के बजाय टर्म्स क्लाइंट और सर्वर-साइड का उपयोग करके भ्रम से बचना पसंद करता हूं। (आमतौर पर क्लाइंट-साइड काम)।

क्लाइंट साइड भाषाएँ

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

सर्वर साइड भाषाएँ

कारण है कि आप सर्वर साइड वेब पर विकल्प के bazillions है क्योंकि आप कर सकते हैं। यह आपका सर्वर है। इसके लिए केवल http / ssl के माध्यम से संचार करना है और बाकी आप पर निर्भर है। जावास्क्रिप्ट अब एक विकल्प है, लेकिन यह एक दिलचस्प सवाल है। क्या आपको अभी भी एक वेब ऐप का इलाज करना चाहिए जैसे कि उस एचटीटीपी दीवार के दोनों ओर वास्तव में दो ऐप हैं। मैं सूचित-के माध्यम से दर्द की राय है कि हाँ, हाँ, आपको चाहिए और मुझे Node.js.


2

संक्षेप में, जहां आपके पास बड़ी परियोजनाएं हैं, आपके पास प्रोजेक्ट पर काम करने वाले डेवलपर्स की कई टीमें हैं, और वे टीमें एप्लिकेशन की विभिन्न परतों पर विशेषज्ञता हासिल करती हैं।

यदि आप वेब यूआई पर ध्यान केंद्रित कर रहे हैं, और आपके पास कार्यान्वयन की अपनी पसंद में लचीलापन है, तो आप C # के बजाय JScript या Flex जैसी वेब ui लक्षित भाषा का उपयोग करने की अधिक संभावना रखते हैं।

इसी तरह, यदि आप एप्लिकेशन के लेन-देन डेटा स्टोर के अंत में हैं, तो एक साथ कई समवर्ती कार्यों से निपटना, विशेष भाषाएं जैसे कि एरलैंग का उपयोग किया जाता है। (या तीसरे पक्ष के उत्पाद जो इन भाषाओं में भाग में लागू किए जाते हैं)


2

इसका कारण व्यावसायिक जोखिम-संतुलन है।

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

यदि आप एक तकनीक के लिए प्रतिबद्ध हैं, तो आप प्रतिभा पूल को सुखा सकते हैं। क्या आप सुनिश्चित हैं कि जब आप कोने के चारों ओर एक भाषा बी सितारा है, तो आप एक सभ्य लैन्गॉज एक व्यक्ति को किराए पर लेना चाहते हैं? क्या होगा अगर कल लैंग्वेज ए के ढांचे को मुख्य डेवलपर द्वारा समर्थित होने के लिए जब्त कर लिया जाए? क्या होगा अगर कल एक अद्भुत भाषा सी है, तो क्या आपको इसे अनदेखा करना चाहिए क्योंकि आपने पांच साल पहले भाषा के लिए प्रतिबद्ध किया था?

आदर्श रूप से आप जो चाहते हैं वह विभिन्न भाषाओं के साथ एक विषम प्रणाली है जो वर्तमान प्रतिभा पूल और प्रौद्योगिकी प्रवृत्तियों को दर्शाती है। आप चाहते हैं कि यह संतुलन धीरे-धीरे शिफ्ट हो जाए क्योंकि टैलेंट पूल और ट्रेंड बदल रहे हैं ताकि किसी भी समय आपके सभी सिस्टम काम करने योग्य हों और आप लोगों को इन्हें बनाए रखने के लिए हायर कर सकें।

... और यह है कि कंपनियां क्या करती हैं।


1

यह आपके फ्रंट एंड बैक बैक के अलग-अलग अनुप्रयोगों के रूप में सोचने में सहायक है जो दोनों एक ही डेटा स्रोत का उपयोग करते हैं।

यहां तक ​​कि छोटी साइटों के लिए, आप फ्रंट एंड के बारे में सोच सकते हैं कि ग्राहक किस चीज के साथ हस्तक्षेप करता है, और बैक एंड एक सीएमएस की तरह होता है। ये आसानी से MVC एप्लिकेशन अलग कर सकते हैं। सामने के छोर को चलाने के लिए अभी भी मॉडल और नियंत्रक की आवश्यकता है - आखिरकार, नियंत्रक आपकी साइट के आगंतुकों के लिए प्रवेश का बिंदु है और मॉडल आपके डेटाबेस से उपयोगकर्ता को डेटा प्राप्त करने का तरीका होने जा रहे हैं।

मैं पीछे के छोर पर एक सीएमएस के रूप में Django / पायथन का उपयोग करना पसंद करता हूं, और सामने के छोर पर रेल्स, कोडीनाइटर या स्प्रिंग एमवीसी का उपयोग कर रहा हूं। अक्सर कोई विकल्प नहीं होता है; क्लाइंट के पास पहले से ही कुछ लैंग्वेज साइट कुछ भाषा में सामने के छोर पर स्थापित हैं और वे सिर्फ एक सीएमएस समाधान चाहते हैं। अधिकांश ग्राहकों को यह भी नहीं पता होगा कि यदि वे नहीं बताए गए तो CMS एक अलग भाषा या रूपरेखा चला रहा था।

यह वास्तव में उस खोज के बारे में है जो उस साइट के लिए सबसे अच्छा काम करता है जिसे आप बनाना चाहते हैं। सामने और पीछे के छोरों को वास्तव में केवल डेटाबेस को साझा करने की आवश्यकता होती है, इसलिए जब तक वे दोनों उस के साथ काम कर सकते हैं, तब तक बेझिझक काम के लिए सबसे अच्छा विकल्प चुन सकते हैं।


0

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


आप फ्रंट एंड के साथ क्लाइंट साइड को मिला रहे हैं। एंटरप्राइज़ अनुप्रयोगों में, बैकएंड वह स्थान है जहां डेटा संग्रहीत किया जाता है और ऑर्डर संसाधित किए जाते हैं, जिसमें बड़े व्यावसायिक तर्क शामिल हैं। सामने का छोर सामान है जो इन बैकएंड सिस्टम को वेबसाइड (जो भी तकनीक के साथ), एक डेस्कटॉप ऐप, या एक मोबाइल ऐप चलाने के लिए कहता है। यह सब फ्रंट एंड कोडिंग माना जाता है। आगे ऊपर क्लाइंट साइड बनाम सर्वर साइड है, लेकिन मैं यहां कमरे से बाहर चल रहा हूं।
रोब वैन डेर वीर

मैं यह नहीं देखता कि आपके उत्तर के प्राथमिक प्रश्न का पता कैसे चलता है कि विभिन्न भाषाओं का उपयोग आगे और पीछे के लिए क्यों किया जाता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.