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

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

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

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

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

सॉफ्टवेयर परिभाषाएँ
सामग्री प्रबंधन प्रणालियों में, फ्रंटएंड और बैकएंड शब्द क्रमशः सीएमएस के अंतिम उपयोगकर्ता के सामने आने वाले विचारों और प्रशासनिक विचारों को संदर्भित कर सकते हैं।

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

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

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

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

दोनों

 * संस्करण नियंत्रण उपकरण जैसे गिट, मर्क्यूरियल, या अपाचे सबवर्जन
 * फ़ाइल स्थानांतरण उपकरण और प्रोटोकॉल जैसे एफटीपी या आरएसवाईएनसी

फ्रंटएंड केंद्रित

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

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

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

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

सामान्यतः प्रोसेसर डिजाइन में, फ़्रंटएंड डिज़ाइन वेरिलॉग जैसी हार्डवेयर विवरण भाषा में परिपथ के व्यवहार का प्रारंभिक विवरण होता है, जबकि बैकएंड डिज़ाइन डाई पर भौतिक ट्रांजिस्टर के लिए व्यवहार को मानचित्र करने की प्रक्रिया होती है।

यह भी देखें
• फ्रंट-एंड वेब विकास

• ग्राहक परिसेवक मॉडल

• आउट-ऑफ़-बॉक्स अनुभव

• मॉड्यूलर प्रोग्रामिंग

• प्रेक्षक पैटर्न

• प्रकाशित-सदस्यता पैटर्न

• प्रौद्योगिकी खींच

• पुश तकनीक

• सुदूर प्रणाली संदेश

• अनुप्रयोग प्रोग्राम अंतराफलक (एपीआई)