पुस्तकालय बनाम रूपरेखा बनाम एपीआई? [बन्द है]


33

लाइब्रेरी, फ्रेमवर्क और एपीआई के बीच अंतर क्या है? वे सभी मुझे एक जैसे लगते हैं। मैं इस बारे में लोगों को सुनना पसंद करूंगा।





2
@ जोर्ग: आपको इसे एक उत्तर के रूप में प्रस्तुत करना चाहिए। जैसा कि यह खड़ा है कि बॉर्डरलाइन स्पैम है और पेज को बंद कर देता है।

2
@ शेरगियो - जोर्ग डब्ल्यू मित्तग के पास SO पर 1171 विचारशील और अच्छी तरह से प्राप्त उत्तर हैं (42 विचारशील और अच्छी तरह से प्राप्त उत्तर यहां)। वह मुश्किल होने की कोशिश नहीं कर रहा है। वह यह दिखाते हुए कि यह प्रश्न कितना अनावश्यक है (यह उल्लेख नहीं करने के लिए कि यहां कोई भी उत्तर किसी फ्रेमवर्क की विशिष्ट विशेषता का उल्लेख नहीं करता है) पीएसई को बेहतर बनाने की कोशिश कर रहा है।
कॉर्बिन मार्च

जवाबों:


35

एक पुस्तकालय कार्यों / वस्तुओं का एक संग्रह है जो एक विशेष उद्देश्य को पूरा करता है। आप विभिन्न परियोजनाओं में एक पुस्तकालय का उपयोग कर सकते हैं।

एक ढांचा एक आवेदन के निर्माण में मदद करने के लिए पैटर्न और पुस्तकालयों का एक संग्रह है।

एक एपीआई अन्य कार्यक्रमों के लिए एक कार्यक्रम है जो सीधे पहुंच के बिना आपके कार्यक्रम के साथ बातचीत करने के लिए है।

इसे दूसरे तरीके से रखने के लिए, किसी लाइब्रेरी को एक एप्लीकेशन के ऐड-ऑन / पीस, एप्लीकेशन के कंकाल के रूप में एक फ्रेमवर्क और एक एपीआई को आउट-फेसिंग ऐप के रूप में देखें।


7
यह एक ढांचे की बहुत अच्छी परिभाषा नहीं है। मैं वास्तव में किसी भी ढांचे को "पैटर्न और पुस्तकालयों का संग्रह" नहीं
कहूंगा

एक ढांचे को बनाने के लिए एक वातावरण की तरह अधिक है। इसके अलावा अन्य +1
क्लेम

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

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

14

अब तक के अच्छे उत्तर लेकिन वे एक महत्वपूर्ण बिंदु को याद करते हैं - एक फ्रेम IoC का उपयोग करता है । आपका कोड एक ढांचे से घिरा हुआ है। इसके अंदर रहता है। इसके विपरीत, आपका कोड सिर्फ एक पुस्तकालय या एपीआई का उपयोग करता है। इसके बाहर रहता है। आईओसी अंतर है।


जरूरी नहीं कि सच हो। एक फ्रेमवर्क IoC का उपयोग कर सकता है, और आपका एप्लिकेशन एक फ्रेमवर्क के अंदर रह सकता है, लेकिन यह करने की आवश्यकता नहीं है। स्टुप्लीली रूप से फ्रेमवर्क पर विकिपीडिया प्रविष्टि इसे एक रूपरेखा की 'विशिष्ट विशेषता' के रूप में सूचीबद्ध करती है, और इस शोध प्रबंध का संदर्भ " dirkriehle.com/computer-science/research/dissertation/… " है, लेकिन शोध प्रबंध में केवल वाक्यांशों का उलटा शामिल नहीं है 'या' ioc ', और वास्तव में कहा गया है "आमतौर पर, अनुप्रयोग न केवल एक ढांचे का उपयोग करते हैं, बल्कि कई।" (p26, रेफ p9)
कर्क

11
@Kirk ब्रॉडहर्स्ट-वास्तव में मार्टिन फाउलर के बारे में सोच रहा था : "नियंत्रण का उलटा एक महत्वपूर्ण हिस्सा है जो एक पुस्तकालय के लिए अलग ढांचा बनाता है (...) एक फ्रेमवर्क कुछ अमूर्त डिजाइन का प्रतीक है, जिसमें अधिक व्यवहार का निर्माण किया गया है। उपयोग करने के लिए। यह आपको अपने व्यवहार को फ्रेमवर्क में विभिन्न स्थानों में या तो उप-वर्ग द्वारा या अपनी कक्षाओं में प्लग इन करके सम्मिलित करने की आवश्यकता है। फ्रेमवर्क का कोड तब आपके कोड को कॉल करता है ... "यदि हम निष्कर्ष निकालते हैं कि IoC एक विशिष्ट विशेषता नहीं है, तो नहीं है विशिष्ट विशेषता - वे सभी समान हैं और यह कोई मज़ेदार नहीं है।
स्कैंट रोजर

@ScantRoger, क्या जावा कलेक्शन फ्रेमवर्क IoC का उपयोग करता है? ऐसा नहीं लगता .......
Pacerier

3

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

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

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

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

जावा कलेक्शंस फ्रेमवर्क विभिन्न प्रकार की वस्तुओं के लिए एपीआई का एक संग्रह है जिसका उपयोग संग्रह को संभालने के लिए किया जा सकता है। यह विभिन्न संग्रह के लिए एपीआई की पदानुक्रम प्रदान करता है। Java कलेक्शंस फ्रेमवर्क में SortedSet इंटरफ़ेस सेट इंटरफ़ेस को बढ़ाता है जो बदले में Collection इंटरफ़ेस को बढ़ाता है। ये API अमूर्त इंटरफेस हैं, और वास्तविक कार्यान्वयन के अलग-अलग नाम हैं। संग्रह फ्रेमवर्क कार्यान्वयन को सरल बनाता है, और विकास के दौरान कार्यान्वयन को सरल बनाता है।

फ्रेमवर्क छोटे फ्रेमवर्क से बनाया जा सकता है जैसा कि J2EE विकास में लक्षित जावा स्प्रिंग फ्रेमवर्क में देखा गया है। वसंत में एक दर्जन से अधिक चौखटे होते हैं, जिनमें से कई का उपयोग अपने दम पर किया जा सकता है या अन्य रूपरेखाओं द्वारा प्रतिस्थापित किया जा सकता है।

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


2

एक ढांचा पुस्तकालय से एक कदम ऊपर है। यदि आपका टूलबॉक्स एक पुस्तकालय है तो आपकी कार्यशाला एक रूपरेखा होगी।

विकिपीडिया कहता है

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

एक एपीआई और एक यूजर इंटरफेस के बीच महत्वपूर्ण अंतर यह है कि एक एपीआई अन्य सॉफ्टवेयर / सेवाओं को आपके समाधान के साथ प्रोग्राम करने की सुविधा देता है।

API को एप्लिकेशन (dll या प्लग इन के माध्यम से) या वेबसाइटों और सेवाओं (REST और webservices के माध्यम से) के लिए बनाया जा सकता है


अच्छा सादृश्य ...
सनवुकंग

1

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

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

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


1

किसी लाइब्रेरी में जाएं और किताबें पढ़ना शुरू करें। यदि आप आवेदन कर रहे हैं तो पुस्तकों का संग्रह पुस्तकालय है। अलमारियों, अलमारी और परिसर जिसमें यह सब होता है वह ढांचा बनाता है। पुस्तकों को पढ़ने का कार्य निष्पादित करते समय आप जो कुछ भी संपर्क में आते हैं वह एपीआई है।


यह एक अद्भुत उत्तर है।
मगस

0

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

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

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


0

एप्लिकेशन को एक रूपरेखा के आधार पर पुस्तकालयों का उपयोग करके विकसित किया गया है और एक एपीआई के माध्यम से संचार किया गया है।

यदि आप कोई ऐप बनाते हैं तो ऑनलाइन इमेज प्रोसेसिंग एप्लिकेशन कहते हैं,

  • आप कुछ पूर्व लिखित छवि प्रसंस्करण पुस्तकालयों का उपयोग कर सकते हैं।
  • किसी भी ढांचे पर आप जानते हैं जो आपको आवेदन के निर्माण के लिए मार्गदर्शन करेगा।
  • आप बाहरी दुनिया के साथ बातचीत करने के लिए किसी न किसी तरह से एप्लिकेशन प्रदान कर रहे होंगे..तब आपके आवेदन दुनिया के बाकी हिस्सों के लिए एपीआई होंगे।

जब आपके आवेदन पर कॉल आता है

  • यह एक तरह से संभाला जाएगा कि आपने रूपरेखा के मार्गदर्शन के साथ कैसे डिजाइन किया
  • पुस्तकालय द्वारा किए गए कॉल को संसाधित करना
  • इन कार्यों को बाहरी दुनिया से आपके एपीआई के माध्यम से एक्सेस किया जाएगा

बुलाने वाले को

इन कारणों से मौजूद हैं:

  • पुस्तकालय: आपको पहिया को फिर से लगाने से बचाता है
  • फ्रेमवर्क: आपको सिस्टम डिज़ाइन और हैंडलिंग के अनपेक्षित जाल से बचाता है जब तक कि फ्रेमवर्क में दोष न हो
  • एपीआई: वास्तविक दुनिया पहुंच से कोर को इंटरफेयर करके आवेदन की सुरक्षा सुनिश्चित करता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.