سؤال

ما هو الفرق بين أ نطاق و أ مكتبة?

لقد فكرت دائمًا في المكتبة باعتبارها مجموعة من الكائنات والوظائف التي تركز على حل مشكلة معينة أو مجال معين من تطوير التطبيقات (أي.الوصول إلى قاعدة البيانات)؛وإطار من ناحية أخرى كمجموعة من المكتبات تتمحور حول منهجية معينة (أي.MVC) والتي تغطي جميع مجالات تطوير التطبيقات.

هل كانت مفيدة؟

المحلول

في الواقع، يمكن أن تعني هذه المصطلحات الكثير من الأشياء المختلفة اعتمادًا على السياق الذي يتم استخدامه فيه.

على سبيل المثال، في نظام التشغيل Mac OS X، تكون أطر العمل مجرد مكتبات مجمعة في حزمة.ستجد ضمن الحزمة مكتبة ديناميكية فعلية (libWhatever.dylib).الفرق بين المكتبة المجردة وإطار العمل على نظام Mac هو أن إطار العمل يمكن أن يحتوي على عدة إصدارات مختلفة من المكتبة.يمكن أن يحتوي على موارد إضافية (صور، سلاسل مترجمة، ملفات بيانات XML، كائنات واجهة المستخدم، وما إلى ذلك) وما لم يتم إصدار إطار العمل للعامة، فإنه عادةً ما يحتوي على ملفات .h الضرورية التي تحتاجها لاستخدام المكتبة.

وبالتالي، لديك كل شيء ضمن حزمة واحدة تحتاج إلى استخدام المكتبة في تطبيقك (مكتبة C/C++/Objective-C بدون ملفات .h عديمة الفائدة إلى حد كبير، إلا إذا قمت بكتابتها بنفسك وفقًا لبعض وثائق المكتبة)، بدلاً من مجموعة من الملفات للتنقل (حزمة Mac هي مجرد دليل على مستوى Unix، لكن واجهة المستخدم تتعامل معها كملف واحد، تمامًا كما لو كان لديك ملفات JAR في Java وعندما تنقر عليها، عادةً لا ترى ما بداخله، ما لم تحدد صراحةً إظهار المحتوى).

تطلق ويكيبيديا على إطار العمل اسم "الكلمة الطنانة".وهو يحدد إطار البرمجيات كما

إطار البرمجيات هو تصميم قابل للاستخدام لنظام البرمجيات (أو النظام الفرعي).قد يتضمن إطار البرمجيات برامج الدعم أو مكتبات الرموز أو لغة البرمجة النصية أو البرامج الأخرى للمساعدة في تطوير وتلصق المكونات المختلفة لمشروع البرمجيات.قد تتعرض أجزاء مختلفة من الإطار من خلال واجهة برمجة التطبيقات ..

لذلك أود أن أقول أن المكتبة هي مجرد "مكتبة".إنها مجموعة من الكائنات/الوظائف/الأساليب (حسب لغتك) و"روابط" تطبيقك ضدها، وبالتالي يمكنها استخدام الكائنات/الوظائف/الأساليب.إنه في الأساس ملف يحتوي على تعليمات برمجية قابلة لإعادة الاستخدام والتي يمكن عادةً مشاركتها بين تطبيقات متعددة (ليس عليك كتابة نفس التعليمات البرمجية مرارًا وتكرارًا).

يمكن أن يكون الإطار هو كل ما تستخدمه في تطوير التطبيقات.يمكن أن تكون مكتبة، أو مجموعة من المكتبات المتعددة، أو مجموعة من البرامج النصية، أو أي برنامج تحتاجه لإنشاء التطبيق الخاص بك.الإطار هو مجرد مصطلح غامض للغاية.

إليك مقالة عن شخص ما فيما يتعلق بالموضوع "المكتبة مقابل.نطاق".أنا شخصياً أعتقد أن هذه المقالة قابلة للنقاش إلى حد كبير.ليس من الخطأ ما يقوله هناك، ومع ذلك، فهو فقط يختار أحد التعريفات المتعددة لإطار العمل ويقارنه بالتعريف الكلاسيكي للمكتبة.على سبيل المثاليقول أنك بحاجة إلى إطار عمل للتصنيف الفرعي.حقًا؟يمكنني الحصول على كائن محدد في مكتبة، ويمكنني الارتباط به وتصنيفه إلى فئة فرعية في الكود الخاص بي.لا أرى كيف أحتاج إلى "إطار" لذلك.بطريقة ما يشرح كيفية استخدام مصطلح إطار العمل في الوقت الحاضر.إنها مجرد كلمة مبالغ فيها، كما قلت من قبل.تقوم بعض الشركات بإصدار مكتبة عادية فقط (بكل معنى الكلمة مكتبة كلاسيكية) وتطلق عليها اسم "إطار العمل" لأنها تبدو أكثر روعة.

نصائح أخرى

أ مكتبة ينفذ عمليات محددة ومحددة بشكل جيد.

أ نطاق هو هيكل عظمي حيث يقوم التطبيق بتعريف "لحمة" العملية عن طريق ملء الهيكل العظمي.لا يزال الهيكل العظمي يحتوي على رمز لربط الأجزاء ولكن العمل الأكثر أهمية يتم من خلال التطبيق.

أمثلة على المكتبات: بروتوكولات الشبكة، الضغط، معالجة الصور، أدوات السلسلة، تقييم التعبير العادي، الرياضيات.العمليات قائمة بذاتها.

أمثلة على الأطر: نظام تطبيقات الويب، مدير المكونات الإضافية، نظام واجهة المستخدم الرسومية.يحدد إطار العمل المفهوم ولكن التطبيق يحدد الوظيفة الأساسية التي يهتم بها المستخدمون النهائيون.

أعتقد أن الاختلاف الرئيسي هو أن الأطر تتبع "مبدأ هوليوود"، أي."لا تتصل بنا، سوف نتصل بك."

وفق مارتن فاولر:

أ مكتبة هي في الأساس مجموعة من الوظائف التي يمكنك الاتصال بها ، وفي هذه الأيام عادة ما يتم تنظيمها في فصول.تقوم كل مكالمة ببعض العمل وإرجاع التحكم إلى العميل.

أ نطاق يجسد بعض التصميم التجريدي ، مع مزيد من السلوك المدمج في.من أجل استخدامه ، تحتاج إلى إدراج سلوكك في أماكن مختلفة في الإطار إما عن طريق التصنيف الفرعي أو عن طريق توصيل الفصول الدراسية الخاصة بك.رمز الإطار ثم يستدعي رمزك في هذه النقاط.

مكتبة:

إنها مجرد أ مجموعة ل إجراءات (البرمجة الوظيفية) أو تعريفات الطبقة(البرمجة الشيئية).السبب وراء ذلك هو ببساطة إعادة استخدام الكود, ، أي.احصل على الكود الذي كتبه مطورون آخرون بالفعل.تحدد الفئات أو الإجراءات عادة عمليات محددة في منطقة محددة المجال.على سبيل المثال، هناك بعض مكتبات الرياضيات التي يمكنها السماح للمطور باستدعاء الوظيفة فقط دون إعادة تنفيذ كيفية عمل الخوارزمية.

نطاق:

في إطار كل تدفق التحكم هو بالفعل هناك، و هناك مجموعة من البقع البيضاء المحددة مسبقًا التي يجب علينا املأ الكود الخاص بنا.عادة ما يكون الإطار أكثر تعقيدًا.هو - هي يحدد الهيكل العظمي حيث يحدد التطبيق ميزاته الخاصة لملء الهيكل العظمي.بهذه الطريقة، سيتم استدعاء التعليمات البرمجية الخاصة بك بواسطة إطار العمل عندما يكون ذلك مناسبًا.الفائدة هي أن المطورين لا يحتاجون إلى القلق بشأن ما إذا كان التصميم جيدًا أم لا، ولكن فقط بشأن تنفيذ وظائف محددة للمجال.

المكتبة والإطار وتمثيل صورة التعليمات البرمجية الخاصة بك:

Library,Framework and your Code image relation

الفرق الرئيسي:

الفرق الرئيسي بين المكتبة والإطار هو "قلب السيطرة".عند استدعاء أسلوب من مكتبة، أنت المسيطر.ولكن مع الإطار، يتم عكس التحكم: الإطار يدعوك. مصدر.

علاقة:

كلاهما يعرف واجهة برمجة التطبيقات (API) التي يستخدمها المبرمجون.لتجميع هذه الأشياء معًا، يمكننا التفكير في المكتبة كوظيفة معينة للتطبيق، وإطار العمل باعتباره الهيكل العظمي للتطبيق، وواجهة برمجة التطبيقات (API) هي الرابط لتجميع كل ذلك معًا.تبدأ عملية التطوير النموذجية عادةً بإطار عمل، وتملأ الوظائف المحددة في المكتبات من خلال واجهة برمجة التطبيقات (API).

يمكنك الاتصال بالمكتبة.

الإطار يدعوك.


図書館 助け
شكرا جزيلا
شكرا جزيلا

كما كنت أصفها دائمًا:

المكتبة هي أداة.

الإطار هو أسلوب حياة.

مكتبة يمكنك استخدام أي جزء صغير يساعدك.إطار عمل يجب أن تلتزم به مشروعك بالكامل.

تعجبني إجابة كوهين، لكن التعريف الأكثر تقنية هو:يستدعي الكود الخاص بك مكتبة. إطار يستدعي التعليمات البرمجية الخاصة بك.على سبيل المثال، يستدعي إطار عمل واجهة المستخدم الرسومية التعليمات البرمجية الخاصة بك من خلال معالجات الأحداث.يستدعي إطار عمل الويب التعليمات البرمجية الخاصة بك من خلال بعض نماذج الاستجابة للطلب.

ويسمى هذا أيضا قلب السيطرة - فجأة يقرر إطار العمل متى وكيف يتم تنفيذ التعليمات البرمجية الخاصة بك وليس العكس كما هو الحال مع المكتبات.هذا يعني أن إطار العمل أيضًا له تأثير أكبر بكثير على كيفية هيكلة التعليمات البرمجية الخاصة بك.

من وجهة نظر مطور الويب:

  1. يمكن استبدال المكتبة بسهولة بمكتبة أخرى.لكن الإطار لا يستطيع ذلك.

    إذا كنت لا تحب مكتبة منتقي التاريخ jquery، فيمكنك استبداله بمنتقي تاريخ آخر مثل منتقي التاريخ bootstrap أو Pickadate.

    إذا كنت لا تحب AngularJS الذي بنيت عليه منتجك، فلا يمكنك استبداله بأي أطر عمل أخرى.يجب عليك إعادة كتابة قاعدة التعليمات البرمجية بأكملها.

  2. تأخذ المكتبة في الغالب منحنى تعليميًا أقل مقارنةً بإطارات العمل.على سبيل المثال:underscore.js هي مكتبة، Ember.js هي إطار عمل.

لقد نسيت أين رأيت هذا التعريف، ولكن أعتقد أنه لطيف جدًا.

المكتبة عبارة عن وحدة تستدعيها من التعليمات البرمجية الخاصة بك، والإطار عبارة عن وحدة تستدعي التعليمات البرمجية الخاصة بك.

يمكن إنشاء إطار عمل من مكتبات مختلفة.لنأخذ مثالا.

لنفترض أنك تريد طهي كاري السمك.ثم تحتاج إلى مكونات مثل زيت, بهارات وغيرها خدمات.ستحتاج أيضا سمكة وهي قاعدتك لتحضير طبقك عليها (هذه بيانات تطبيقك).جميع المكونات معا تسمى أ نطاق.الآن ستستخدمها واحدة تلو الأخرى أو مجتمعة لتحضير السمك بالكاري الذي تفضله المنتج النهائي.قارن ذلك مع أ إطار الويب الذي مصنوع من تسطير أسفل السطر.js, bootstrap.css, bootstrap.js, com.fontawesome, AngularJS إلخ.على سبيل المثال، تويتر بوتستراب v.35.

الآن، إذا كنت تفكر في مكون واحد فقط، على سبيل المثال زيت.لا يمكنك استخدام أي زيت تريده لأنه سيؤدي إلى إتلاف (بيانات) الأسماك الخاصة بك.يمكنك استخدام فقط زيت الزيتون.قارن ذلك ب تسطير أسفل السطر.js.الآن ما هي ماركة الزيت التي تريد استخدامها متروك لك.تم صنع بعض الأطباق باستخدام زيت الزيتون الامريكي (تسطير أسفل السطر.js) أو زيت زيتون هندي (lodash.js).سيؤدي هذا إلى تغيير طعم التطبيق الخاص بك فقط.نظرًا لأنها تخدم نفس الغرض تقريبًا، فإن استخدامها يعتمد على تفضيلات المطور ويمكن استبدالها بسهولة.

enter image description here


نطاق :مجموعة من المكتبات التي توفر خصائص وسلوكًا فريدًا لتطبيقك.(جميع المكونات)

مكتبة :مجموعة محددة جيدًا من التعليمات التي توفر خصائص وسلوكًا فريدًا لبياناتك.(زيت على سمك)

توصيل في :إنشاء أداة مساعدة لمكتبة (ui-router -> AngularJS) أو العديد من المكتبات مجتمعة (منتقي التاريخ -> bootstrap.css + jQuery) والتي بدونها قد يعمل المكون الإضافي الخاص بك الآن كما هو متوقع.


ملاحظة.AngularJS هو إطار عمل MVC ولكنه مكتبة JavaScript.لأنني أعتقد أن المكتبة تعمل على توسيع السلوك الافتراضي للتكنولوجيا الأصلية (JavaScript في هذه الحالة).

هذه هي الطريقة التي أفكر بها (وقد رأيت تبريرًا من قبل الآخرين):

المكتبة هي شيء موجود في التعليمات البرمجية الخاصة بك.والإطار عبارة عن حاوية لتطبيقك.

هنا يرتبط أ مقال مرير لجويل سبولسكي, ، ولكنه يحتوي على تمييز جيد بين صناديق الأدوات والمكتبات والأطر وما شابه

تنفذ المكتبة وظائف لغرض ضيق النطاق بينما يميل إطار العمل إلى أن يكون عبارة عن مجموعة من المكتبات التي توفر الدعم لمجموعة واسعة من الميزات.على سبيل المثال، تتعامل المكتبة System.Drawing.dll مع وظيفة الرسم، ولكنها جزء واحد فقط من إطار عمل .NET الشامل.

المكتبة - أي مجموعة من الفئات أو المكونات التي يمكن استخدامها كما يراها العميل مناسبة لإنجاز مهمة معينة.
الإطار - يفرض عليك إرشادات معينة "للتوصيل" بشيء أكبر منك.كل ما عليك فعله هو تقديم الأجزاء الخاصة بطلبك/متطلباتك بطريقة منشورة مطلوبة، بحيث "يمكن لإطار العمل أن يجعل حياتك سهلة"

المكتبات مخصصة لسهولة الاستخدام والكفاءة. يمكنك القول على سبيل المثال أن مكتبة Zend تساعدنا على إنجاز مهام مختلفة من خلال فئاتها ووظائفها المحددة جيدًا. في حين أن إطار العمل هو شيء يفرض عادةً طريقة معينة لتنفيذ الحل، مثل MVC (نموذج -عرض وحدة التحكم)(مرجع).إنه نظام محدد جيدًا لتوزيع المهام كما هو الحال في MVC. يحتوي النموذج على جانب قاعدة البيانات، وطرق العرض لواجهة واجهة المستخدم، ووحدات التحكم لمنطق الأعمال.

أعتقد أنك حددت الفرق جيدًا:يوفر الإطار الإطار الذي نقوم فيه بعملنا...بطريقة ما، فهي أكثر "تقييدًا" من المكتبة البسيطة.
من المفترض أيضًا أن يضيف الإطار الاتساق إلى مجموعة من المكتبات.

أعتقد أن المكتبة عبارة عن مجموعة من الأدوات المساعدة للوصول إلى هدف ما (على سبيل المثال، المقابس، والتشفير، وما إلى ذلك).الإطار عبارة عن مكتبة + RUNTIME EINVIRONNEMENT.على سبيل المثال، ASP.NET هو إطار عمل:فهو يقبل طلبات HTTP، وإنشاء كائن صفحة، واستدعاء أحداث lyfe cicle، وما إلى ذلك.يقوم Framework بكل هذا، حيث تكتب القليل من التعليمات البرمجية التي سيتم تشغيلها في وقت محدد من دورة حياة الطلب الحالي!

على أية حال، سؤال مثير للاهتمام للغاية!

لا أتذكر مصدر هذه الإجابة (أعتقد أنني وجدتها في ملف .ppt على الإنترنت)، لكن الإجابة بسيطة للغاية.

المكتبة وإطار العمل عبارة عن مجموعة من الفئات والوحدات النمطية و/أو التعليمات البرمجية (حسب لغة البرمجة) التي يمكن استخدامها في تطبيقاتك وتساعدك على حل "مشكلة" معينة.

يمكن أن تتمثل هذه المشكلة في تسجيل المعلومات أو تصحيح الأخطاء في تطبيق ما، أو رسم المخططات، أو إنشاء تنسيق ملف محدد (html، pdf، xls)، أو الاتصال بقاعدة بيانات، أو إنشاء جزء من تطبيق أو تطبيق كامل أو رمز مطبق على نمط التصميم.

يمكن أن يكون لديك إطار عمل أو مكتبة لحل كل هذه المشكلات وغيرها الكثير، وعادة ما تساعدك الأطر على حل المشكلات الأكثر تعقيدًا أو الأكبر، ولكن ذلك نتيجة للاختلاف الرئيسي بينهما، وليس تعريفًا رئيسيًا لكليهما.

الفرق الرئيسي بين المكتبة والإطار هو أن التبعية تتبني رمزها الخاص ، في كلمات ODER لاستخدام إطار عمل تحتاجه لاستخدام جميع الفئات أو الوحدات النمطية أو التعليمات البرمجية تقريبًا في FW ، ولكن لاستخدام مكتبة يمكنك استخدامها واحدة أو عدد قليل من الفئات أو الوحدات النمطية أو الكود في LIB في التطبيق الخاص بك

هذا يعني أنه إذا كان إطار العمل، على سبيل المثال، يحتوي على 50 فئة لاستخدام إطار العمل في تطبيق تحتاج إلى استخدامه، دعنا نقول، 10-15 فئة أو أكثر في التعليمات البرمجية الخاصة بك، لأن هذه هي الطريقة التي تم بها تصميم إطار العمل، بعض الفئات (كائنات تلك الفئات) هي مدخلات/معلمات للطرق الموجودة في الفئات الأخرى في إطار العمل.راجع إطار عمل .NET أو Spring أو أي إطار عمل MVC.

ولكن على سبيل المثال، مكتبة السجل، يمكنك فقط استخدام فئة السجل في التعليمات البرمجية الخاصة بك، وتساعدك على حل "مشكلة التسجيل"، وهذا لا يعني أن مكتبة السجل لا تحتوي على المزيد من الفئات في التعليمات البرمجية الخاصة به، مثل الفئات للتعامل مع الملفات، أو التعامل مع مخرجات الشاشة، أو حتى قواعد البيانات، لكنك لا تلمس/تستخدم هذه الفئات مطلقًا في التعليمات البرمجية الخاصة بك، وهذا هو السبب في كونها مكتبة وليست إطار عمل.

وهناك أيضًا فئات أكثر من الأطر والمكتبات، ولكن هذا خارج الموضوع.

تفسيرك يبدو جميلا بالنسبة لي...أ مكتبة يمكن أن يكون أي شيء يتم تجميعه واحتواؤه ذاتيًا لإعادة استخدامه في تعليمات برمجية أخرى، ولا يوجد أي قيود على محتواه.

أ نطاق من ناحية أخرى، من المتوقع أن يكون لديك مجموعة من المرافق لاستخدامها في بعض المجالات المحددة لتطوير التطبيقات، تمامًا مثل مثالك، MVC.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top