फ्रंटएंड और बैकएंड

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

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

दूरसंचार में, सामने को एक उपकरण या सेवा माना जा सकता है, जबकि पीछे बुनियादी ढांचा है जो सेवा के प्रावधान का समर्थन करता है।

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

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

एक उदाहरण के रूप में वेब विकास
दोनों के बीच के अंतर को समझने का एक और तरीका है, फ्रंटएंड बनाम बैकएंड सॉफ्टवेयर डेवलपर के लिए आवश्यक ज्ञान को समझना। नीचे दी गई सूची एक उदाहरण के रूप में वेब विकास पर केंद्रित है।

दोनों

 * संस्करण नियंत्रण उपकरण जैसे Git, Mercurial, या Apache Subversion
 * फ़ाइल स्थानांतरण उपकरण और प्रोटोकॉल जैसे FTP या rsync

दृश्यपटल केंद्रित

 * मार्कअप और वेब भाषाएँ जैसे कि HTML, CSS, जावास्क्रिप्ट, और सहायक पुस्तकालय जो आमतौर पर उन भाषाओं में उपयोग किए जाते हैं जैसे Sass (स्टाइलशीट भाषा) या jQuery
 * अतुल्यकालिक I/O अनुरोध हैंडलिंग और अजाक्स (प्रोग्रामिंग)
 * एक पेज का आवेदन ( प्रतिक्रिया (जावास्क्रिप्ट पुस्तकालय), एंगुलर (वेब ​​​​फ्रेमवर्क) या Vue.js जैसे फ्रेमवर्क के साथ)
 * वेब प्रदर्शन (सबसे बड़ा कंटेंटफुल पेंट, इंटरेक्टिव के लिए समय, 60 फ्रेम रेट एनिमेशन और इंटरैक्शन, मेमोरी उपयोग, आदि)
 * प्रतिक्रियात्मक वेब डिज़ाइन
 * क्रॉस ब्राउज़र संगतता समस्याएँ और समाधान
 * सॉफ़्टवेयर परीक्षण |  नेतृत्वहीन ब्राउज़र  के साथ एंड-टू-एंड टेस्टिंग
 * वेबपैक और गुल.जेएस जैसे टूल का उपयोग करके जावास्क्रिप्ट फ़ाइलों को बदलने और बंडल करने के लिए स्वचालन बनाएं, छवि आकार और अन्य प्रक्रियाओं को कम करें
 * सर्च इंजन अनुकूलन
 * वेब पहुंच संबंधी चिंताएं
 * GIMP या Adobe Photoshop जैसे छवि संपादन टूल का मूल उपयोग
 * प्रयोक्ता इंटरफ़ेस

बैकएंड केंद्रित
ध्यान दें कि संभवतः एक उत्पाद पर काम करने के बावजूद दोनों स्थितियों में कौशल का एक बहुत अलग सेट है।
 * PHP, Python (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), Perl, Node.js जैसी स्क्रिप्टिंग भाषाएँ, या C Sharp (प्रोग्रामिंग भाषा)|C#, Java (प्रोग्रामिंग भाषा) या Go (प्रोग्रामिंग भाषा) जैसी संकलित भाषाएँ।
 * इस्तेमाल की जा रही भाषा के लिए स्वचालित परीक्षण ढांचा
 * एप्लिकेशन डेटा एक्सेस
 * आवेदन व्यापार तर्क
 * डेटाबेस प्रशासक
 * मापनीयता
 * उच्च उपलब्धता
 * सुरक्षा चिंताओं, प्रमाणीकरण और प्राधिकरण
 * सॉफ़्टवेयर वास्तुशिल्प
 * डेटा परिवर्तन
 * बैकअप तरीके और सॉफ्टवेयर

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

हार्डवेयर परिभाषाएँ
संगणक संजाल में, फ्रंटएंड किसी भी नेटवर्किंग हार्डवेयर को संदर्भित कर सकता है जो प्रसार यातायात का अनुकूलन या सुरक्षा करता है। इसे एप्लिकेशन फ्रंट-एंड हार्डवेयर कहा जाता है क्योंकि इसे नेटवर्क के DMZ (कंप्यूटिंग) | आउटवर्ड-फेसिंग फ्रंटएंड या सीमा पर रखा जाता है। नेटवर्क ट्रैफ़िक नेटवर्क में प्रवेश करने से पहले फ्रंट-एंड हार्डवेयर से होकर गुजरता है।

प्रोसेसर डिजाइन में, फ़्रंटएंड डिज़ाइन Verilog जैसी हार्डवेयर विवरण भाषा में एक सर्किट के व्यवहार का प्रारंभिक विवरण होगा, जबकि बैकएंड डिज़ाइन एक पर भौतिक ट्रांजिस्टर के व्यवहार को मैप करने की प्रक्रिया होगी। डाई (इंटीग्रेटेड सर्किट)|डाई।

यह भी देखें
• Front-end web development

• Client–server model

• Out-of-box experience

• Modular programming

• Observer pattern

• Publish–subscribe pattern

• Pull technology

• Push technology

• Remote procedure call

• Application program interface (API)