एक ढांचे और एक पुस्तकालय के बीच अंतर क्या है? [बन्द है]


865

एक ढांचे और एक पुस्तकालय के बीच अंतर क्या है ?

मैंने हमेशा एक पुस्तकालय को वस्तुओं और कार्यों के एक सेट के रूप में सोचा था जो किसी विशेष समस्या को सुलझाने या अनुप्रयोग विकास के एक विशिष्ट क्षेत्र (यानी डेटाबेस एक्सेस) पर केंद्रित है; और एक विशेष कार्यप्रणाली (यानी MVC) पर केंद्रित पुस्तकालयों के संग्रह के रूप में दूसरी ओर एक रूपरेखा और जो अनुप्रयोग विकास के सभी क्षेत्रों को कवर करता है।


18
@ vba4all: जब यह पहली बार पूछा गया तो यह एक डुप्लिकेट कैसे हो सकता है?
नोब साईबोट

5
सिर्फ इसलिए कि यह पहली बार बनाया गया था इसका मतलब यह नहीं है कि यह एक डुप्लिकेट नहीं है;) यह केवल डुप्लिकेट / अत्यधिक समान प्रश्नों की पहचान करने के बारे में है, और यह सुनिश्चित करने के लिए संसाधन / उत्तर साझा किए जाते हैं (और सबसे सक्रिय / सबसे अच्छा उत्तर दिया गया प्रश्न खुला)
ग्रेडफ़ॉक्स


3
@tuple_cat वास्तव में आपका लिंक डुप्लिकेट प्रतीत होता है: यह इस एक के बाद पूछा गया था
छारवे

1
हमें कुछ कार्यक्षमता की आवश्यकता है, हम लाइब्रेरी कहते हैं। हमें कुछ कार्यक्षमता की आवश्यकता है, हम फ्रेमवर्क और फ्रेमवर्क कॉल की मदद लेंगे जो हमारे कोड (जैसे UIKit) को कहते हैं।
कमलेश्वर

जवाबों:


350

वास्तव में इन शर्तों का अर्थ उन भिन्न भिन्न चीजों से हो सकता है जो उनके उपयोग किए गए संदर्भ के आधार पर हैं।

उदाहरण के लिए, Mac OS X चौखटे पर सिर्फ एक पुस्तकालय है, जिसे एक बंडल में पैक किया गया है। बंडल के भीतर आपको एक वास्तविक गतिशील पुस्तकालय (libWhatever.dylib) मिलेगा। एक नंगे पुस्तकालय और मैक पर रूपरेखा के बीच का अंतर यह है कि एक ढांचे में पुस्तकालय के कई अलग-अलग संस्करण हो सकते हैं। इसमें अतिरिक्त संसाधन (चित्र, स्थानीयकृत तार, XML डेटा फ़ाइलें, UI ऑब्जेक्ट्स, आदि) हो सकते हैं और जब तक कि यह फ्रेमवर्क सार्वजनिक रूप से जारी नहीं किया जाता है, तब तक इसमें आमतौर पर आवश्यक .h फ़ाइलें होती हैं जिनका आपको लाइब्रेरी का उपयोग करने की आवश्यकता होती है।

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

विकिपीडिया फ्रेमवर्क को "बज़वर्ड" कहता है। यह एक सॉफ्टवेयर ढांचे को परिभाषित करता है

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

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

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

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


2
यह दिलचस्प है कि 2008 में वापस विकिपीडिया के लेख ने "रूपरेखा" को "चर्चा" के रूप में वर्णित किया।
Zebrafish

2
IMO, एक ढांचा "रिक्त" परियोजना प्रवर्तन है।
कुलवार

514

एक पुस्तकालय विशिष्ट, अच्छी तरह से परिभाषित संचालन करता है।

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

पुस्तकालयों के उदाहरण: नेटवर्क प्रोटोकॉल, संपीड़न, छवि हेरफेर, स्ट्रिंग उपयोगिताओं, नियमित अभिव्यक्ति मूल्यांकन, गणित। संचालन स्व-निहित हैं।

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


10
वास्तविक उदाहरणों के लिए +1। Btw, क्या आप स्पष्ट करते हैं कि आपको "वेब एप्लिकेशन सिस्टम" से क्या मतलब है?
पचेरियर

3
@Pacerier शायद कुछ ऐसा है जो आपको एक पूर्ण वेब एप्लिकेशन बनाने देता है, जैसे रूबी के लिए रेल या नोड के लिए पाल।
gustavohenke

अच्छा उत्तर। क्या आप iOS फ्रेमवर्क और लाइब्रेरी से संबंधित कुछ और उदाहरण दे सकते हैं?
NSPratik

या Django, समय सीमा के साथ पूर्णतावादियों के लिए वेब फ्रेमवर्क।
हवाई

2
मैं कंकाल को 'मांस' के बजाय 'मांसपेशियों' से भरने के बारे में सोचूंगा। मुझे लगता है कि यह अधिक सटीक सादृश्य है क्योंकि 'मांसपेशियां' कंकाल को गति में स्थापित कर रही हैं।
altgov3en

290

मुझे लगता है कि मुख्य अंतर यह है कि फ्रेमवर्क " हॉलीवुड सिद्धांत " का पालन करते हैं , अर्थात "हमें कॉल न करें, हम आपको कॉल करेंगे।"

मार्टिन फाउलर के अनुसार :

एक पुस्तकालय अनिवार्य रूप से कार्यों का एक सेट है जिसे आप कॉल कर सकते हैं, इन दिनों आमतौर पर कक्षाओं में आयोजित किया जाता है। प्रत्येक कॉल कुछ काम करता है और ग्राहक को नियंत्रण लौटाता है।

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


2
@Panos स्पष्टीकरण के लिए धन्यवाद, लेकिन क्या आप विस्तृत कर सकते हैं। उदाहरण के लिए, मैं फेसबुकएसडीके फ्रेमवर्क का उपयोग कर रहा हूं, और मैं इस ढांचे से क्लास के तरीकों को बुला रहा हूं। फेसबुक कोड फ्रेमवर्क मेरे कोड में कुछ भी नहीं कह रहा है, जो आपकी परिभाषा के विपरीत है "अर्थात हमें कॉल न करें, हम आपको कॉल करेंगे।"
चार्ल्स रॉबर्टसन

4
@CharlesRobertson AFAIK FacebookSDK एक क्लाइंट लाइब्रेरी है। इसे एक फ्रेमवर्क के रूप में वर्गीकृत नहीं किया जा सकता है और इसका कारण स्पष्ट है (जैसा कि आपने पहले ही देखा है): क्लाइंट कोड में FacebookSDK कुछ भी नहीं कह रहा है। इसके अलावा फेसबुक एसडीके को इस प्रकार परिभाषित करता है: "सामाजिक प्लगइन्स, फेसबुक लॉगिन और ग्राफ़ कॉल को जोड़ने के लिए क्लाइंट-साइड कार्यक्षमता का एक समृद्ध सेट।" फ्रेमवर्क के लिए कोई संकेत नहीं ...
पैनोस

1
@Panos धन्यवाद मुझे लगता है कि फेसबुकोक का प्रतिनिधित्व करने वाले सूटकेस आइकन थोड़ा भ्रामक है। और नाम 'FacebookSDK.framework'। फेसबुक को इसका नाम बदलकर 'FacebookSDK.dylib' जैसा करना चाहिए? लेकिन इसे स्पष्ट करने के लिए धन्यवाद। यह जानना अच्छा है कि सही परिभाषा क्या है ...
चार्ल्स रॉबर्टसन

यह एक दिलचस्प परिभाषा है। मैंने हाल ही में d3.js का उपयोग करना शुरू किया है, और देखा कि इसे आमतौर पर एक रूपरेखा के रूप में माना जाता है। लेकिन मैंने जो भी d3 कोड लिखा है वह एक सामान्य जावास्क्रिप्ट कोड के भीतर है, इसलिए मैं इस परिभाषा को d3 तक विस्तारित करने में असमर्थ हूं।
दिलीप कुमार पचीगुल्ला

1
@ Dileep पहला वाक्य में d3.js मुखपृष्ठ बताता है: "D3.js डेटा पर आधारित दस्तावेज़ों में हेरफेर करने के लिए जावास्क्रिप्ट लाइब्रेरी है"। मुझे लगता है कि इसे एक रूपरेखा के रूप में माना जाना गलत है।
पैनोस

243

आप लाइब्रेरी कहते हैं।

फ्रेमवर्क आपको कॉल करता है।


書館助け図
足場が痛い
多くの涙


12
क्या आप इसे हाइकु के रूप में दर्शा सकते हैं?
डेरेक टॉम्स

18
@ डेरेकॉम्स बीटीडब्ल्यू: मैंने हाइकु फॉर्म जोड़ा ।
इयान बॉयड

56
आपके जवाब की चर्चा META में हो रही है । क्या आप हाइकु का अनुवाद करना पसंद करेंगे? मुझे लगता है कि हम में से बहुत से लोग सोच रहे हैं कि क्या इसका वास्तव में मतलब है कि पुस्तकालय में मदद करें, मचान दर्द होता है, Google अनुवादक के रूप में कई आँसू इसे बहुत प्यार से डालते हैं :)
कीड़े

27
यह देखकर अच्छा लगा कि एक मॉड ने पहले दो टिप्पणियों को हटा दिया। अब यह समझ में आता है कि जापानी पाठ क्यों जोड़ा गया था (यह एक मजाक के रूप में अनुरोध किया गया था) और यह केवल अनुवाद करने का एक प्रयास था, और एक वास्तविक लोकप्रिय जापानी कविता नहीं थी।
ज़ानोन

9
सोवियत रूस में, फ्रेमवर्क आपको कॉल करता है।
रॉबर्ट मूर

242

लाइब्रेरी:

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

फ्रेमवर्क:

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

लाइब्रेरी, फ्रेमवर्क और आपकी कोड छवि प्रतिनिधित्व:

लाइब्रेरी, फ्रेमवर्क और आपका कोड छवि संबंध

KeyDifference:

एक पुस्तकालय और एक रूपरेखा के बीच मुख्य अंतर "नियंत्रण का व्युत्क्रम" है । जब आप किसी लाइब्रेरी से कोई विधि कहते हैं, तो आप नियंत्रण में होते हैं। लेकिन एक रूपरेखा के साथ, नियंत्रण उलटा होता है: ढांचा आपको बुलाता हैस्रोत।

रिश्ता:

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


14
नियंत्रण का उलटा महान गहराई में व्याख्या!
पेट्रीसिया

3
चित्र की तरह, यह निकली को समेटता है, और यह भी दिखाता है कि कुछ समय में लोग भ्रमित क्यों हो जाते हैं, क्योंकि फ्रेमवर्क अक्सर पुस्तकालयों को भी बंडल करते हैं।
डिडियर ए।

1
@ डिडिबस अगर आपको लगता है कि उत्तर अच्छी व्याख्या देता है, तो आप उत्तर को बढ़ा सकते हैं ताकि पोस्ट देखने वाले आसानी से फलदायक उत्तर पा सकें।
दुरई अमुथान।

तो FFmpeg (कार्यक्रम से नहीं, लेकिन मुख्य रूप से परियोजना से LibAVUtil) एक रूपरेखा है, और libavcodec, आदि पुस्तकालय हैं?
मार्कस जे।

1
@ मारकस जे - लीबवुतिल और लीबावाकोडे दोनों पुस्तकालय हैं
दुरई अमुथन

110

जैसा कि मैंने हमेशा इसका वर्णन किया है:

एक पुस्तकालय एक उपकरण है।

एक फ्रेमवर्क जीवन का एक तरीका है।

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


9
यह उत्तर पूरी तरह से दोनों शब्दों को समझने के बाद और अधिक समझ में आता है।
एक और

45

वेब डेवलपर के दृष्टिकोण से:

  1. लाइब्रेरी आसानी से किसी अन्य लाइब्रेरी द्वारा बदली जा सकती है। लेकिन ढांचा नहीं बन सकता।

    यदि आपको jquery date picker Library पसंद नहीं है, तो आप अन्य तिथि पिकर जैसे बूटस्ट्रैप दिनांक पिकर या पिकेटेट से प्रतिस्थापित कर सकते हैं।

    यदि आपको AngularJS पसंद नहीं है, जिस पर आपने अपना उत्पाद बनाया है, तो आप किसी अन्य ढांचे के साथ प्रतिस्थापित नहीं कर सकते। आपको अपना पूरा कोड आधार फिर से लिखना होगा।

  2. अधिकतर लाइब्रेरी फ्रेमवर्क की तुलना में बहुत कम सीखने की अवस्था लेती है। जैसे: underscore.js एक लाइब्रेरी है, Ember.js एक फ्रेमवर्क है।


सबसे बढ़िया उत्तर। सरल, प्रत्यक्ष और स्पष्ट।
फेलिप सेंटियागो

41

मुझे कोहेन जवाब पसंद है, लेकिन एक अधिक तकनीकी परिभाषा है: आपका कोड एक पुस्तकालय कहता है। एक फ्रेमवर्क आपके कोड को कॉल करता है । उदाहरण के लिए एक GUI फ्रेमवर्क आपके कोड को इवेंट-हैंडलर के माध्यम से कॉल करता है। एक वेब फ्रेमवर्क कुछ अनुरोध-प्रतिक्रिया मॉडल के माध्यम से आपके कोड को कॉल करता है।

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


30

मैं भूल जाता हूं कि मैंने यह परिभाषा कहां देखी है, लेकिन मुझे लगता है कि यह बहुत अच्छा है।

एक पुस्तकालय एक मॉड्यूल है जिसे आप अपने कोड से कॉल करते हैं, और एक फ्रेमवर्क एक मॉड्यूल है जो आपके कोड को कॉल करता है।


6
लेकिन libc में qsort () शामिल है, जो आपके कोड को कॉल करता है। मुझे नहीं लगता है कि libc को एक ढांचा बनाता है।
मार्क बेकर

मॉड्यूल से क्या मतलब है?
नैटसी

18

विभिन्न पुस्तकालयों के बाहर एक ढांचा बनाया जा सकता है। एक उदाहरण लेते हैं।

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

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

यहां छवि विवरण दर्ज करें


फ्रेमवर्क : पुस्तकालयों का एक संग्रह जो आपके आवेदन के लिए अद्वितीय गुण और व्यवहार प्रदान करता है। (सभी वीडियो)

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

प्लगइन : लाइब्रेरी (ui-router -> AngularJS) या संयोजन में कई पुस्तकालयों के लिए एक उपयोगिता बिल्ड (दिनांक-पिकर -> bootstrap.css + jQuery) जिसके बिना आपका प्लगइन अब अपेक्षित रूप से काम कर सकता है।


PS AngularJS एक MVC फ्रेमवर्क लेकिन एक जावास्क्रिप्ट लाइब्रेरी है। क्योंकि मेरा मानना ​​है कि लाइब्रेरी मूल प्रौद्योगिकी (इस मामले में जावास्क्रिप्ट) के डिफ़ॉल्ट व्यवहार का विस्तार करती है।


अच्छी व्याख्या :)
मनो

14

इस तरह से मैं इसके बारे में सोचता हूं (और दूसरों द्वारा तर्कसंगत रूप से देखा है):

एक पुस्तकालय आपके कोड के भीतर निहित कुछ है। और एक फ्रेमवर्क आपके आवेदन के लिए एक कंटेनर है।



8

एक पुस्तकालय एक संकीर्ण रूप से स्कोप किए गए उद्देश्य के लिए कार्यक्षमता को लागू करता है, जबकि एक ढांचे में पुस्तकालयों का एक संग्रह होता है जो कि व्यापक सुविधाओं के लिए समर्थन प्रदान करता है। उदाहरण के लिए, लाइब्रेरी System.Drawing.dll ड्राइंग कार्यक्षमता को संभालता है, लेकिन समग्र .NET फ्रेमवर्क का केवल एक हिस्सा है।


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

मेरा मानना ​​है कि .NET एक बहुत बड़ी लाइब्रेरी है। एक लाइब्रेरी जिसे लाइब्रेरी कहा जाता है, लेकिन अभी भी एक लाइब्रेरी है। चौखटे एक निश्चित डिजाइन को लागू करते हैं, टिंकर के लिए छोटे कमरे के साथ नियंत्रण प्रवाह आदि का निर्णय लेते हैं। .NET ऐसा नहीं करता है। मेरा मानना ​​है कि .NET एक लाइब्रेरी है जबकि ASP.NET MVC एक फ्रेमवर्क है। लेकिन बाजार में एमएस को अच्छे शब्दों की जरूरत है।
नवफाल

6

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


6

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


5

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

दूसरी ओर एक फ्रेमवर्क में आपके उदाहरण, एमवीसी की तरह ही एप्लिकेशन डेवलपमेंट के कुछ विशिष्ट क्षेत्र में उपयोग के लिए कई तरह की सुविधाएं होने की उम्मीद है।


5

मुझे लगता है कि आपने अंतर को काफी कम कर दिया है: फ्रेमवर्क एक फ्रेम प्रदान करता है जिसमें हम अपना काम करते हैं ... किसी भी तरह, यह एक साधारण पुस्तकालय की तुलना में अधिक "विवश" है।
पुस्तकालयों के एक सेट में स्थिरता को जोड़ने के लिए रूपरेखा भी माना जाता है।


5

मुझे लगता है कि पुस्तकालय लक्ष्य तक पहुंचने के लिए उपयोगिताओं का एक सेट है (उदाहरण के लिए, सॉकेट्स, क्रिप्टोग्राफी, आदि)। फ्रेमवर्क लाइब्रेरी + RUNTIME EINVIRONNEMENT है। उदाहरण के लिए, ASP.NET एक ढांचा है: यह HTTP अनुरोधों को स्वीकार करता है, पेज ऑब्जेक्ट बनाता है, लाइक कोल घटनाओं को लागू करता है, आदि। फ्रेमवर्क यह सब करता है, आप थोड़ा सा कोड लिखते हैं जो जीवन चक्र के एक विशिष्ट समय पर चलाया जाएगा वर्तमान अनुरोध!

वैसे भी, बहुत रुचि सवाल!


5

मुझे इस उत्तर का स्रोत याद नहीं है (मुझे लगता है कि मैंने इसे इंटरनेट में .ppt में पाया था), लेकिन इसका उत्तर काफी सरल है।

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

यह समस्या किसी एप्लिकेशन में लॉग या डीबगिंग जानकारी हो सकती है, चार्ट बना सकती है, एक विशिष्ट फ़ाइल प्रारूप (एचटीएमएल, पीडीएफ़, xls) बना सकती है, डेटा बेस से कनेक्ट कर सकती है, एप्लिकेशन का एक हिस्सा या पूर्ण एप्लिकेशन या किसी कोड को लागू कर सकती है। डिजाइन पैटर्न

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

मुख्य अंतर एक पुस्तकालय और एक फ्रेमवर्क पर निर्भर करता है एक निर्भरता उनके स्वयं के कोड को धोखा देती है, सामान्य शब्दों में फ्रेमवर्क का उपयोग करने के लिए आपको एफडब्ल्यू में लगभग सभी वर्गों, मॉड्यूल या कोड का उपयोग करने की आवश्यकता होती है, लेकिन एक पुस्तकालय का उपयोग करने के लिए आप एक या एक का उपयोग कर सकते हैं अपने स्वयं के अनुप्रयोग में कुछ कक्षाएं, मॉड्यूल या लिब में कोड

इसका मतलब यह है कि अगर किसी फ्रेमवर्क में उदाहरण है, तो किसी ऐप में फ्रेमवर्क का उपयोग करने के लिए आपके पास 50 कक्षाएं हैं, जिन्हें आपको अपने कोड में 10-15 या अधिक कक्षाओं के लिए उपयोग करने की आवश्यकता है, क्योंकि यह एक फ्रेमवर्क डिज़ाइन किया गया है, कुछ कक्षाएं (उस कक्षाओं की वस्तुएं) रूपरेखा में अन्य कक्षाओं में विधियों के लिए इनपुट / पैरामीटर हैं। .NET फ्रेमवर्क, स्प्रिंग या कोई MVC फ्रेमवर्क देखें।

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

और वहाँ भी चौखटे और पुस्तकालयों से अधिक श्रेणियां हैं, लेकिन यह बंद विषय है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.