2009-08-08 20 views
47

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

साक्षात्कारकर्ता का क्या मतलब है और किसकी तुलना की जानी चाहिए?

संबंध है, avajurug

उत्तर

78

वे सबसे अधिक संभावना वेब चौखटे के उदाहरण देख रहे थे - उदाहरण के लिए, JSF एक घटक आधारित रूपरेखा है, और Struts एक अनुरोध आधारित रूपरेखा है।

अनुरोध आधारित चौखटे आम ​​तौर पर यह उनकी एपीआई है कि वे एक HTML अनुरोध को पार्स/एक HTML प्रतिक्रिया पैदा करने के साथ काम कर रहे हैं के माध्यम से स्पष्ट कर दूं, जबकि घटक आधारित चौखटे इस दूर सार करने का प्रयास और साथ घटकों के संग्रह के रूप में आवेदन का इलाज चीजें करने के लिए renderers और कार्यों।

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

+0

धन्यवाद नाट। मुझे लगता है कि आप सही हैं कि शायद वे वेब ढांचे का मतलब है। मैं जेएसएफ से परिचित नहीं हूं, इसलिए समझा नहीं जा सका। जवाब के लिए धन्यवाद। महान उत्तर के लिए – user150014

+4

+1। कुछ सालों से स्ट्रूट्स और जेएसएफ का इस्तेमाल करने के बाद, मैं इसी तरह के निष्कर्षों पर आया। – javashlook

+0

इतना अच्छा जवाब, धन्यवाद! – quento

24

अनुरोध आधारित ढांचा एक वेब ढांचा है जो उपयोगकर्ता के अनुरोध को प्राप्त करता है और फिर यह निर्धारित करता है कि सिस्टम को क्या करना चाहिए और उपयोगकर्ता को प्रतिक्रिया वापस देनी चाहिए। तो प्रवाह बहुत अधिक रैखिक है। आप कार्यों में सोच रहे हैं: उपयोगकर्ता क्या चाहता है (अनुरोध) -> कौन सा उपयोगकर्ता वापस आएगा (प्रतिक्रिया)। अनुरोध आधारित ढांचे का एक उदाहरण Struts है। आधुनिक Grails बहुत अधिक अनुरोध आधारित फ्रेमवर्क भी है।

घटक आधारित ढांचे ऐसा नहीं है। वास्तव में सामने से पीछे प्रवाह का कोई स्पष्ट अर्थ नहीं है। इसका एक उदाहरण जेएसएफ नहीं है, क्योंकि किसी भी तरह से जेएसएफ स्ट्रैट्स के साथ काफी समान है (क्योंकि creator of Struts and JSF वही है)। घटक आधारित ढांचे का एक अच्छा उदाहरण Tapestry और Wicket। इन दो ढांचे में प्रतिमान अलग है। आप कार्यों या अनुरोध-प्रतिक्रिया में नहीं सोचते हैं, लेकिन घटकों और घटकों। आप अपने आवेदन में एक घटक परिभाषित करते हैं, और आप बताते हैं कि घटक क्या करता है। लेकिन प्रवाह आधारित अनुरोध के रूप में प्रवाह रैखिक होना आवश्यक नहीं है।

+0

धन्यवाद jpartogi ... तो आपको लगता है कि इन ढांचे के पेशेवरों और विपक्ष क्या हैं ... – user150014

+0

हम्म, यह वास्तव में व्यक्तिपरक होगा। यह वेबपैप बनाने में आपके वर्कफ़्लो पर निर्भर करता है। घटक आधारित ढांचा वास्तव में अच्छा है यदि आप कई अलग-अलग परियोजनाओं द्वारा उपयोग किए जाने वाले पुन: प्रयोज्य घटकों का उपयोग करना चाहते हैं, तो कार्रवाइयां आधारित फ्रेमवर्क वास्तव में अच्छा है यदि आपको केवल एचटीपी अनुरोध और http प्रतिक्रिया (अजाक्स ऐप में वास्तव में उपयोगी) भेजने और प्राप्त करने की आवश्यकता है। –

+1

जेएसएफ को गैर घटक आधारित ढांचे के रूप में वर्गीकृत नहीं किया जा सकता है। कृपया जेएसएफ विनिर्देश देखें। जेएसएफ 2.एक्स प्राइमफेस ने यूआई घटकों के समृद्ध भेजा है। –

5

जेएसएफ घटक आधारित जावा एपीआई है, जैसा कि नेट ने कहा है, स्ट्रेट्स एक एक्शन आधारित फ्रेमवर्क है, एचटीपी अनुरोधों को पार्स किया जाता है, जबकि अंत में क्रियाओं को संसाधित करते समय नियंत्रक सर्वलेट जेएसपी को अनुरोध को आगे बढ़ाता है जो उत्पन्न करने के लिए जिम्मेदार होगा प्रतिक्रिया। जेएसएफ में जो घटक आधारित वेब ढांचे के लिए मानक बन गया है, वास्तव में अनुरोधों को संसाधित करने की कोई आवश्यकता नहीं है और प्रतिक्रियाओं को हमें जेएसपी या एक्सएचटीएमएल पृष्ठों को लिखना है, पृष्ठ में इस्तेमाल किए गए घटकों को बांधना या उन्हें प्रस्तुत करना चाहिए बैकिंग बीन्स या प्रबंधित सेम में गुणों के लिए और FacesServlet (नियंत्रक) जेएसपी को पार्सिंग और रीडायरेक्ट करने के अनुरोध के बारे में सभी नौकरी करता है जो चेहरे-config.xml में निर्दिष्ट नेविगेशन नियमों के आधार पर प्रतिक्रिया प्रदान करेगा।इसलिए आप देख सकते हैं कि स्ट्रूट्स और जेएसएफ के बीच एक बड़ा अंतर है क्योंकि जेएसएफ एक घटक-घटना आधारित दृष्टिकोण लाता है जबकि स्ट्रूट क्लासिक जेएसपी/सर्वलेट मॉडल के करीब है। एक और बात jpartogi ने कहा है कि जेएसएफ और स्ट्रैट्स के निर्माता वही हैं, मैं बस उल्लेख करना चाहता हूं कि स्ट्रूट्स अपाचे समुदाय के स्वामित्व वाली एक फ्रैमवर्क है जबकि जेएसएफ जेएसपी द्वारा जेएसपी द्वारा संस्करण 1.1 और जेएसआर -252 के लिए निर्दिष्ट एक एपीआई है संस्करण 1.2 के लिए और विभिन्न कार्यान्वयन (एसयूएन-आरआई, अपाचे माईफेसेस ...)

2

बस, यदि ढांचे में प्रत्येक वेब तत्व के लिए जावा पक्ष में ऑब्जेक्ट्स हैं तो आप इसके गुण बदल सकते हैं या कुछ कार्यक्षमता जोड़ सकते हैं, यह घटक आधारित ढांचा है लेकिन यदि ढांचा ऑब्जेक्ट प्रदान नहीं करता है और आपको अपने टैग के बीच वेब तत्व का प्रतिक्रिया मान रखना होगा, तो यह एक अनुरोध आधारित ढांचा है।

+0

यह घटक क्या है? –

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