Jaka jest różnica między frameworkiem a biblioteką? [zamknięte]

Jaka jest różnica między a ramy i a biblioteka?

Zawsze myślałem o bibliotece jako o zbiorze obiektów i funkcji, które skupiają się na rozwiązywaniu konkretnego problemu lub wokół określonego obszaru rozwoju aplikacji (tj. dostępu do bazy danych); framework z drugiej strony jest zbiorem bibliotek skupionych wokół określonej metodologii (tj. MVC) i obejmuje wszystkie obszary rozwoju aplikacji.

Author: Robert Columbia, 2008-09-29

20 answers

W rzeczywistości terminy te mogą oznaczać wiele różnych rzeczy w zależności od kontekstu, w którym są używane.

Na przykład w systemie Mac OS X frameworki są tylko bibliotekami, spakowanymi w pakiet. W pakiecie znajdziesz aktualną bibliotekę dynamiczną (libWhatever.dylib). Różnica między pustą biblioteką a frameworkiem na Macu polega na tym, że framework może zawierać wiele różnych wersji biblioteki. Może zawierać dodatkowe zasoby (obrazy, zlokalizowane ciągi znaków, pliki danych XML, obiekty interfejsu użytkownika, itd.) i o ile ramy nie zostaną upublicznione, zazwyczaj zawierają niezbędne .pliki h musisz korzystać z biblioteki.

Tak więc masz wszystko w jednym pakiecie, którego potrzebujesz, aby użyć biblioteki w swojej aplikacji (biblioteka C/C++/Objective-C bez .pliki h są dość bezużyteczne, chyba że piszesz je samodzielnie zgodnie z dokumentacją biblioteki), zamiast kilku plików do poruszania się (pakiet Mac to tylko katalog na poziomie Unix, ale interfejs traktuje to jak pojedynczy plik, prawie tak jak masz pliki JAR w Javie i po kliknięciu go zwykle nie widzisz, co jest w środku, chyba że wyraźnie wybierzesz, aby pokazać zawartość).

Wikipedia nazywa framework "buzzword". Definiuje Framework oprogramowania jako

Framework oprogramowania jest re-usable projektowanie systemu oprogramowania (lub podsystem). Framework oprogramowania może Dołącz programy wspomagające, kod bibliotek, języka skryptowego lub inne oprogramowanie wspomagające rozwój i klej razem różne komponenty projektu oprogramowania. Różne części ramy mogą być narażone poprzez API..

Więc powiedziałbym, że biblioteka to po prostu "biblioteka". Jest to zbiór obiektów / funkcji / metod (w zależności od Twojego języka) i Twoja aplikacja "łączy" się z nim i dzięki temu może korzystać z obiektów / funkcji / metod. Jest to w zasadzie plik zawierający kod nadający się do ponownego użycia, który zwykle może być współdzielony między wieloma aplikacjami (nie musisz pisać tego samego kod w kółko).

Framework może być wszystkim, czego używasz w tworzeniu aplikacji. Może to być Biblioteka, zbiór wielu bibliotek, zbiór skryptów lub dowolne oprogramowanie potrzebne do utworzenia aplikacji. Ramy to po prostu bardzo niejasne określenie.

Oto artykuł o jakimś facecie dotyczący tematu "Biblioteka vs. Framework". Osobiście uważam, że ten artykuł jest wysoce wątpliwy. Nie jest złe, co tam mówi, jednak jest po prostu wybierając jedną z wielu definicji frameworka i porównując ją do klasycznej definicji biblioteki. Np. mówi, że potrzebujesz RAM do podklasowania. Naprawdę? Mogę mieć zdefiniowany obiekt w bibliotece, mogę się z nim połączyć i podklasować go w kodzie. Nie rozumiem, jak potrzebuję do tego" RAM". W jakiś sposób wyjaśnia raczej, w jaki sposób termin framework jest obecnie używany. Jak już mówiłem, to tylko szumiące słowo. Niektóre firmy wydają tylko normalną bibliotekę (w każdym sensie klasyczna biblioteka) i nazwać ją "frameworkiem", bo brzmi bardziej fantazyjnie.

 302
Author: Mecki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-06 16:25:49

Biblioteka wykonuje określone, dobrze zdefiniowane operacje.

A framework to szkielet, w którym aplikacja definiuje "mięso" operacji poprzez wypełnienie szkielet. Szkielet nadal ma kod do łączenia części, ale najważniejszą pracę wykonuje aplikacja.

Przykłady bibliotek: protokoły sieciowe, kompresja, manipulacja obrazami, narzędzia łańcuchowe, ocena wyrażeń regularnych, matematyka. Operacje są samodzielne.

Przykłady frameworków: Web application system, Plug-In manager, GUI system. Framework definiuje pojęcie, ale aplikacja definiuje podstawową funkcjonalność, na której dbają użytkownicy końcowi.

 443
Author: Jason Cohen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 13:58:40

Myślę, że główną różnicą jest to, że frameworki kierują się zasadą "Hollywood principle", czyli " nie dzwoń do nas, my zadzwonimy do ciebie."

Według Martin Fowler :

A biblioteka jest zasadniczo zbiorem funkcje, które można wywołać, te dni zwykle organizowane w klasach. Każde wywołanie wykonuje jakąś pracę i zwraca Kontrola do klienta.

A framework uosabia pewien abstrakcyjny design, z wbudowanym więcej zachowań. Aby go użyć należy wstawić twoje zachowanie w różnych miejscach w framework poprzez podklasę lub poprzez podłączenie własnych zajęć. Na kod frameworka następnie wywołuje kod w tych miejscach.

 249
Author: Panos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 14:12:08

Dzwonisz do biblioteki.

Framework wzywa cię.


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

 198
Author: Ian Boyd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-19 23:18:50

Biblioteka:

Jest to po prostu zbiór z procedur (Programowanie funkcyjne) lub definicji klas (programowanie obiektowe). Powodem jest po prostu ponowne użycie kodu , tzn. pobranie kodu, który został już napisany przez innych programistów. Klasy lub procedury zwykle definiują określone operacje w obszarze specyficznym dla danej domeny . Na przykład, istnieją pewne biblioteki matematyki, które mogą pozwolić programiście po prostu wywołać funkcję bez ponownego implementacja działania algorytmu.

Framework:

W ramach, cały przepływ sterowania jest już tam, i Istnieje kilka predefiniowanych białych plam , które powinniśmy wypełnić naszym kodem . Ramy są zwykle bardziej złożone. To definiuje szkielet, gdzie aplikacja definiuje własne funkcje, aby wypełnić szkielet. W ten sposób Twój kod zostanie wywołany przez framework, gdy będzie to właściwe. Korzyścią jest to, że programiści nie muszą się martwić o to, czy projekt jest dobry, czy nie, ale po prostu o implementację funkcji specyficznych dla domeny.

Biblioteka,Framework i twoja Reprezentacja obrazu kodu:

Biblioteka, Framework i relacja obrazu kodu

KeyDifference:

Kluczową różnicą między biblioteką a frameworkiem jest "Inwersja Sterowania". Gdy wywołujesz metodę z biblioteki, masz kontrolę. Ale w przypadku frameworka kontrolka jest odwrócona: framework wywołuje Cię . źródło.

Relacja:

Oba zdefiniowane API, które jest używane przez programistów do korzystania. Aby je połączyć, możemy myśleć o bibliotece jako o określonej funkcji aplikacji, o frameworku jako szkielecie aplikacji, a API jest złączem do łączenia tych funkcji. Typowy proces rozwoju zwykle rozpoczyna się od frameworka i wypełnia funkcje zdefiniowane w bibliotekach za pomocą API.

 197
Author: Durai Amuthan.H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:24

Jak zawsze to opisywałem:

Biblioteka jest narzędziem.

Ramy to sposób na życie.

Biblioteka, z której możesz korzystać niezależnie od tego, co pomoże Ci mała część. Framework, do którego musisz zaangażować cały projekt.

 94
Author: James Curran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 14:04:04

Lubię Cohens answer, ale bardziej techniczna definicja brzmi: Twój kod nazywa bibliotekę. framework wywołuje twój kod . Na przykład framework GUI wywołuje kod za pomocą programów obsługi zdarzeń. Framework internetowy wywołuje kod za pomocą modelu odpowiedzi na żądanie.

Nazywa się to również inwersją sterowania - nagle Framework decyduje kiedy i jak wykonać kod, a nie odwrotnie jak w przypadku bibliotek. Oznacza to, że ramy mają również wiele większy wpływ na strukturę kodu.

 38
Author: JacquesB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-30 00:48:40

Z perspektywy Web Developera:

  1. Biblioteka może być łatwo zastąpiona przez inną bibliotekę. Ale ramy nie mogą.

    Jeśli nie podoba Ci się biblioteka jQuery date picker, możesz zastąpić ją innym selektorem dat, takim jak bootstrap date picker lub pickadate.

    Jeśli nie podoba Ci się AngularJS, na którym zbudowałeś swój produkt, nie możesz zastąpić go innymi frameworkami. Musisz przepisać całą bazę kodu.

  2. Przeważnie biblioteka zajmuje bardzo mniej krzywa uczenia się w porównaniu do frameworków. Np: podkreślenie.js to biblioteka, Ember.js to framework.

 35
Author: Fizer Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-23 07:45:53

Zapomniałem, gdzie widziałem tę definicję, ale myślę, że jest całkiem niezła.

Biblioteka jest modułem, który wywołujesz z kodu, A framework jest modułem, który wywołuje twój kod.

 27
Author: Moe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-24 09:51:29

Tak o tym mysle (i widzialem to przez innych):

Biblioteka jest czymś zawartym w Twoim kodzie. A framework to kontener dla Twojej aplikacji.

 11
Author: Kon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 14:08:21

Tutaj jest linkowany gorzki artykuł Joela Spolsky ' ego, ale zawiera dobre rozróżnienie między toolboxami, bibliotekami, frameworkami i takimi

 10
Author: Lorenzo Boccaccia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-27 14:35:43

Framework może być zbudowany z różnych bibliotek. Weźmy przykład.

Powiedzmy, że chcesz ugotować rybie curry. Następnie potrzebujesz składników, takich jak Olej, przyprawy i inne Narzędzia . Potrzebujesz również ryby , która jest twoją bazą do przygotowania potrawy (są to dane twojej aplikacji). wszystkie składniki razem zwane ramy. Teraz użyjesz ich jeden po drugim lub w połączeniu, aby Twoje curry rybne, które jest Twoim produkt końcowy. Porównaj to z Web framework , który jest wykonany z podkreślenia.js, bootstrap.css, bootstrap.js, fontawesome, AngularJS itd. Na przykład, Twitter Bootstrap V. 35 .

Teraz, jeśli wziąć pod uwagę tylko jeden składnik, jak powiedzmy Olej . Nie możesz użyć żadnego oleju, który chcesz, ponieważ wtedy zrujnuje twoje ryby (dane). Możesz używać tylko oliwy z oliwek . Porównaj to z podkreślenie.js . Teraz to, jakiej marki oleju chcesz użyć, zależy od Ciebie. Niektóre danie zostało wykonane z amerykańskiej oliwy z oliwek (podkreślono.js) lub Indyjska oliwa z oliwek (lodash.js). Zmieni to tylko smak Twojej aplikacji. Ponieważ służą one prawie do tego samego celu, ich użycie zależy od preferencji dewelopera i są łatwo wymienne.

Tutaj wpisz opis obrazka


Framework : zbiór bibliotek, które zapewniają unikalne właściwości i zachowanie do aplikacji. (Wszystkie składniki)

Biblioteka : dobrze zdefiniowany zestaw instrukcji, które zapewniają unikalne właściwości i zachowanie danych. (Olej na rybach)

Wtyczka : Narzędzie do budowania biblioteki (ui-router -> AngularJS) lub wielu bibliotek w połączeniu (date-picker -> bootstrap.css + jQuery) bez których wtyczka może teraz działać zgodnie z oczekiwaniami.


P. S. AngularJS jest frameworkiem MVC, ale biblioteką JavaScript. Ponieważ uważam, że Biblioteka rozszerza domyślne zachowanie natywnej technologii (w tym przypadku JavaScript).

 10
Author: Uday Hiwarale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-28 12:14:36

Biblioteka implementuje funkcjonalność w wąskim zakresie, podczas gdy framework jest zbiorem bibliotek zapewniających wsparcie dla szerszego zakresu funkcji. Na przykład system biblioteczny.Rysunek.dll obsługuje funkcje rysowania, ale jest tylko jedną z części ogólnego. NET framework.

 6
Author: Jeff Yates,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 14:00:01

Library-dowolny zestaw klas lub komponentów, które mogą być użyte według uznania klienta do wykonania określonego zadania.
Framework-nakazuje pewne wytyczne, aby "podłączyć" do czegoś większego niż ty. Możesz jedynie dostarczyć elementy specyficzne dla Twojego zastosowania/wymagań w publikowany-wymagany sposób, tak aby "framwework może ułatwić Ci życie"

 6
Author: Gishu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 14:03:43

Biblioteki są dla łatwości użycia i wydajności.Można powiedzieć na przykład, że biblioteka Zend pomaga nam wykonywać różne zadania dzięki dobrze zdefiniowanym klasom i funkcjom.Podczas gdy framework jest czymś, co zwykle wymusza określony sposób implementacji rozwiązania, jak MVC(Model-view-controller) (reference) . Jest to dobrze zdefiniowany system do dystrybucji zadań, jak w MVC.Model zawiera stronę bazy danych, widoki są dla interfejsu użytkownika, a kontrolery są dla logiki biznesowej.

 6
Author: Ravi shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:36

Odwrócenie sterowania jest kluczową częścią tego, co odróżnia framework od biblioteki. Biblioteka jest zasadniczo zestawem funkcji, które można wywołać, te dni zwykle zorganizowane w klasach. Każde połączenie wykonuje pewną pracę i zwraca kontrolę do klienta.

Framework uosabia pewien abstrakcyjny projekt, z wbudowanym więcej zachowań. Aby go użyć, musisz wstawić swoje zachowanie do różnych miejsc w frameworku poprzez podklasowanie lub podłączenie własnych klas. Na kod frameworka następnie wywołuje twój kod w tych punktach.

 6
Author: Debaprasad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-25 04:26:13

Myślę, że dość dobrze przypiąłeś różnicę: framework zapewnia ramę, w której wykonujemy naszą pracę... W jakiś sposób jest to bardziej "ograniczające" niż prosta biblioteka.
Framework ma również dodawać spójność do zestawu bibliotek.

 5
Author: PhiLho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 14:00:32

Myślę, że Biblioteka jest zestawem narzędzi do osiągnięcia celu (na przykład gniazda, kryptografia, itp.). Framework is library + RUNTIME EINVIRONNEMENT. Na przykład, ASP.NET jest frameworkiem: akceptuje żądania HTTP, tworzy obiekt strony, wywołuje zdarzenia, itp. Framework robi to wszystko, piszesz trochę kodu, który zostanie uruchomiony w określonym czasie cyklu życia bieżącego żądania!

W każdym razie, bardzo interesujące pytanie!

 5
Author: stefano m,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-13 16:15:01

Nie pamiętam źródła tej odpowiedzi (chyba znalazłem ją wppt w Internecie), ale odpowiedź jest dość prosta.

Biblioteka i Framework to zestaw klas, modułów i / lub kodu (w zależności od języka programowania), które mogą być używane w twoich aplikacjach i pomagają rozwiązać konkretny "problem".

Tym problemem może być logowanie lub debugowanie informacji w aplikacji, rysowanie wykresów, tworzenie określonego formatu pliku (html, pdf, xls), łączenie się z bazą danych, tworzenie część wniosku lub kompletny wniosek lub kod zastosowany do wzoru projektowego .

możesz mieć Framework lub bibliotekę, aby rozwiązać wszystkie te problemy i wiele więcej, Zwykle Framework pomaga rozwiązać bardziej złożone lub większe problemy, ale to konsonans ich głównej różnicy, a nie Główna definicja dla obu.

Główną różnicą pomiędzy biblioteką A frameworkiem jest zależność pomiędzy ich własnym kodem, w słowach do użycia a Framework you trzeba użyć prawie wszystkich klas, modułów lub kodu w FW, ale do użyj biblioteki możesz użyć jednej lub kilku klas, modułów lub kodu w lib we własnej aplikacji

Oznacza to, że jeśli Framework ma np. 50 klas aby móc korzystać z frameworku w aplikacji, musisz użyć, powiedzmy, 10-15 lub więcej klas w kodzie, ponieważ tak jest zaprojektowany Framework, niektóre klasy (obiekty tych klas) są wejściami / parametrami dla metod w innych klasach w ramach. Zobacz. NET framework, Spring lub dowolny framework MVC.

Ale na przykład Biblioteka dziennika, możesz po prostu użyć klasy dziennika w kodzie, i pomaga rozwiązać "problem logowania", to nie znaczy, że biblioteka dziennika nie ma więcej klas w swoim kodzie, jak Klasy do obsługi plików, obsługi wyjść ekranu, a nawet baz danych, ale nigdy nie dotykać/używać tych klas w kodzie, i to jest powód, dlaczego jest biblioteka, a nie baza danych. ramy.

Poza tym jest więcej kategorii niż frameworków i bibliotek, ale to nie temat.

 5
Author: Junior Garza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-22 16:07:20

Twoja interpretacja brzmi dla mnie całkiem nieźle... Biblioteka może być wszystkim, co jest skompilowane i samodzielne do ponownego użycia w innym kodzie, nie ma dosłownie żadnych ograniczeń co do jego zawartości.

A framework z drugiej strony oczekuje się, że będzie miał szereg udogodnień do wykorzystania w jakiejś konkretnej dziedzinie rozwoju aplikacji, tak jak w twoim przykładzie, MVC.

 4
Author: Adam Bellaire,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 13:59:36