2008-11-23 23 views
166

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

इससे मुझे पूछता है कि एन-टियर आर्किटेक्चर क्या है? इसके साथ कोई अनुभव कैसे प्राप्त करता है?

+2

दिलचस्प है कि यह अन्य पोस्ट यह भी पूछ रही है कि एन-टियर आर्किटेक्चर क्या है, लेकिन उत्तर पूरी तरह से अलग हैं। http://stackoverflow.com/questions/7271165/what-does-n-tier-architecture-mean-nowadays। ऐसा लगता है कि सॉफ्टवेयर के लिए एन-टियर आर्किटेक्चर और हार्डवेयर के लिए एन-टियर आर्किटेक्चर है। – Noremac

उत्तर

228

Wikipedia:

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

यह "टियर" के रूप में मायने रखता है, लेकिन मेरी राय में इसे कम से कम प्रक्रिया सीमा पार करने की आवश्यकता है। अन्यथा इसे परत कहा जाता है। लेकिन, इसे शारीरिक रूप से अलग मशीनों में होने की आवश्यकता नहीं है। हालांकि मैं इसकी अनुशंसा नहीं करता हूं, आप उसी बॉक्स पर होस्ट लॉजिकल स्तर और डेटाबेस कर सकते हैं।

alt text

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

एन-स्तरीय प्रोग्रामिंग के लिए, आपको "डेटासेट" नामक किसी भी प्रकार के परिवहन योग्य रूप में डेटा को पैकेज करने और तार पर उड़ाने की आवश्यकता है। .NET के DataSet कक्षा या वेब सेवा प्रोटोकॉल जैसे SOAP तारों पर वस्तुओं को उड़ाने के कुछ प्रयास हैं।

+5

"3-स्तर" और "एन-टियर" क्या कोई अंतर है? – chakrit

+5

यह इस बात पर निर्भर करता है कि आप "टायर" (तार्किक, भौतिक, आदि) कैसे गिनते हैं, लेकिन आप आसानी से ऐप लिखने के लिए 3 से अधिक प्रक्रियाएं शामिल कर सकते हैं। यूआई, यूआई प्लेटफ़ॉर्म (जैसे ग्रहण आरसीपी), वेब सेवाएं, बीएलएल, डीएएल, डाटाबेस, प्रमाणीकरण सेवाएं, रिपोर्टिंग सेवाएं, विश्लेषणात्मक सेवाएं ... –

+6

@chakrit: मेरे समय में (मैं बूढ़ा हूं) और 2-स्तर (क्लाइंट) -सेवर) स्वचालित रूप से एन-स्तरीय का जिक्र कर रहा था। –

2

यह मेरी समझ है कि एन-टियर अलग-अलग भौतिक मशीनों का उपयोग करके व्यापार तर्क, ग्राहक पहुंच और डेटा को एक-दूसरे से अलग करता है। सिद्धांत यह है कि उनमें से एक को दूसरों के स्वतंत्र रूप से अद्यतन किया जा सकता है।

+3

अलग मशीनों की आवश्यकता नहीं है ... – alchemical

15

यह एक गूढ़ शब्द है जो सामान्य वेब आर्किटेक्चर जैसी चीजों को संदर्भित करता है जैसे जावास्क्रिप्ट - एएसपी.नेट - मिडलवेयर - डेटाबेस परत। इनमें से प्रत्येक चीज एक "स्तरीय" है।

19

यह कैसे आप मुख्य व्यवसाय तर्क और डेटा का उपयोग से प्रस्तुति परत को अलग पर आधारित है (Wikipedia)

3-tier प्रस्तुति परत + घटक परत + डाटा एक्सेस परत का मतलब है। एन-स्तरीय तब होता है जब इन तीनों से परे अपर्याप्त परतों को जोड़ा जाता है और इसे एक buzzword के साथ लेबल किया जाता है, इसलिए ऐसा लगता है कि आपके आर्किटेक्ट क्रैक बंदरों का एक समूह हैं। मैं यह एन-स्तरीय वास्तुकला के आधार पर कहता हूं जिसके साथ मुझे काम करना है।

+10

वास्तव में यदि उन स्तरों में से एक को रिमोट पार्टी द्वारा होस्ट किया जाता है, उदाहरण के लिए एक भुगतान प्रोसेसर, वह स्तर इतना "अनावश्यक" नहीं हो सकता है – Zak

+0

हम्म। 'परतें' और 'सेवाओं' के बीच एक बड़ा अंतर है। एन-टियर आमतौर पर यह इंगित करने के लिए प्रयोग किया जाता है कि दिए गए स्तर के लिए, उपरोक्त कुछ भी इसे निम्न स्तर की सेवाओं तक पहुंचने के लिए पारित करना होगा। यदि वे समानांतर हैं, तो मैं उन्हें स्तरों की बजाय सेवाएं कहूंगा। – Dak

+0

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

1

जब हम टायर की बात करते हैं, तो हम आम तौर पर शारीरिक प्रक्रियाओं (विभिन्न मेमोरी स्पेस रखने) के बारे में बात करते हैं।

इस प्रकार, यदि विभिन्न प्रक्रियाओं में किसी एप्लिकेशन की परतें तैनात की जाती हैं, तो वे अलग-अलग प्रक्रियाएं अलग-अलग स्तर होंगी।

ईजी, 3-स्तरीय एप्लिकेशन में, बिजनेस स्तरीय मेनफ्रेम (अलग प्रक्रिया) से बात करता है और रिपोर्टिंग सेवा (अलग प्रक्रिया) से बात करता है, तो वह एप्लिकेशन 5 स्तर होगा।

इसलिए, सामान्य नाम एन-टियर है।

3

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

और इसी तरह http://msdn.microsoft.com/en-us/library/bb384398.aspx

3

एन स्तरीय डेटा अनुप्रयोगों में है कि कई स्तरों में विभाजित हैं डेटा अनुप्रयोग हैं। "वितरित अनुप्रयोग" और "multitier अनुप्रयोग" भी कहा जाता है, एन-स्तरीय अनुप्रयोग अलग-अलग क्लाइंट और सर्वर के बीच वितरित किए गए स्तरों में अलग-अलग प्रोसेसिंग करते हैं। जब आप डेटा तक पहुंचने वाले अनुप्रयोगों को विकसित करते हैं, तो आपके पास आवेदन करने वाले विभिन्न स्तरों के बीच स्पष्ट पृथक्करण होना चाहिए।

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

माइक्रोसॉफ्ट website से लिया गया।

4

यदि मैं प्रश्न समझता हूं, तो मुझे ऐसा लगता है कि प्रश्नकर्ता वास्तव में पूछ रहा है "ठीक है, इसलिए 3-स्तर अच्छी तरह से समझा जाता है, लेकिन ऐसा लगता है कि प्रचार, भ्रम और अनिश्चितता का मिश्रण 4- स्तरीय, या सामान्यीकृत करने के लिए, एन-स्तरीय आर्किटेक्चर का मतलब है। तो ... एन-टियर की परिभाषा क्या है जिसे व्यापक रूप से समझा जाता है और सहमत हो जाता है? "

यह वास्तव में एक काफी गहरा सवाल है, और यह बताने के लिए कि मुझे थोड़ा गहराई क्यों जाना है। धैर्य रखने के लिए अनुरोध।

क्लासिक 3-स्तरीय आर्किटेक्चर: डेटाबेस, "व्यापार तर्क" और प्रस्तुति, चिंताओं को अलग करने के सिद्धांत को सम्मानित करने के तरीके को स्पष्ट करने का एक अच्छा तरीका है।जो कहना है, अगर मैं बदलना चाहता हूं कि कैसे "व्यवसाय" ग्राहकों की सेवा करना चाहता है, तो मुझे यह समझने के लिए पूरे सिस्टम को देखना नहीं चाहिए कि यह कैसे करना है, और विशेष रूप से, निर्णय व्यवसाय के मुद्दों को बिखरा नहीं जाना चाहिए कोड के माध्यम से willy-nilly।

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

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

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

2

जब कोड की एक भी लाइन को संशोधित करने के बिना सामान्य MCV (एक 3-स्तरीय संरचना) एक डबल डेक इंटरफेस के साथ MCV लागू करने के लिए, इस तरह के हैं कि एक वास्तव में एक विशेष स्तर की जगह ले सकता तय कर सकते हैं का निर्माण ।

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

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

कुछ के रूप में 4 स्तरीय या 5 स्तरीय वास्तुकला 1 या 2 डबल इंटरफेस के साथ इस तरह के 3-स्तरीय संरचना का वर्णन है, परोक्ष डबल इंटरफेस जिसका अर्थ है।

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

मोबाइल उदाहरण

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^