Najczęściej pracuję z aplikacjami internetowymi i chociaż staram się być ogólny, moja odpowiedź może nie dotyczyć twojego obszaru programowania.
Zamierzam również używać „frameworka” jako synonimu „biblioteki”.
Przed wdrożeniem frameworka należy wziąć pod uwagę kilka rzeczy, oto kilka ogólnych przykładów.
# 1. Czy ramy pozwolą zaoszczędzić czas i wysiłek?
Odpowiedź na to pytanie jest prawie zawsze tak . Ramy są zwykle budowane w celu rozwiązywania konkretnych problemów i rozwiązywania ich bardzo dobrze. Na przykład frameworki takie jak EntityFramework mogą całkowicie uratować Cię przed pisaniem kodu SQL. Co może być fantastyczne, jeśli Twój zespół programistów nie mówi płynnie po SQL.
Szkielety są budowane w celu: a) dodania przyjaznego dla programisty interfejsu do innych złożonych komponentów lub b) dodania abstrakcji do już dobrze znanych (lub ustalonych) komponentów.
Ta ostatnia (lub nawet pierwsza w niektórych przypadkach) może faktycznie przeszkadzać w rozwoju. Dotyczy to zwłaszcza sytuacji, gdy Ty lub Twój zespół programistów zamierzacie wdrożyć nową platformę, w której nigdy wcześniej nie pracowali.
Może to potencjalnie spowolnić proces programowania, co może być kosztowne.
# 2 Skala Twojej aplikacji
Mówi się, że „wszystko, co warto zrobić, jest warte przesadzenia” , ale zwykle tak nie jest. Prawdopodobnie nie ma dobrego powodu, aby zaimplementować szkielet o dużych rozmiarach, jeśli celem twojej aplikacji jest wydrukowanie „ziemniaka” .
Gdy opracowujesz aplikację (internetową, stacjonarną, mobilną lub inną możliwą do wyobrażenia) - jeśli uważasz, że rozmiar twojej struktury „krasnoluduje” twoją (być może w przyszłości) jej implementację, może to być duża znak ostrzegawczy, że twoja platforma może po prostu nadąć twoją aplikację. Dobrą anegdotą byłoby dołączenie jQuery, aby dodać „załadowaną” klasę do tagu body, gdy dokument będzie gotowy. Robienie tego przy użyciu tylko natywnego JavaScript może być nieco trudniejsze , ale nie powoduje wzdęcia Twojej aplikacji.
Z drugiej strony, jeśli framework wykonuje wiele brudnych zadań wewnątrz (tj. Frameworki baz danych), wdrożenie go może być opłacalne, nawet jeśli używa się go tylko „częściowo”. Dobrą anegdotą byłoby nie budowanie własnego sterownika ADO.NET lub MongoDB tylko dlatego, że nie trzeba wykorzystywać całej biblioteki.
Czasami frameworki są dostępne jako oprogramowanie typu open source (z licencjami typu „rób, co chcesz”). Otwiera to nową możliwość, w której zespół programistów może wybrać tylko części frameworka.
To ostatecznie wiąże się z pytaniem nr 1 i nr 3.
# 3 Wpływ.
Czasami wdrożenie frameworka może bezpośrednio wpłynąć na użytkownika końcowego. Jest to szczególnie prawdziwe w przypadku aplikacji internetowych, ponieważ posiadanie dużych struktur po stronie klienta może negatywnie wpłynąć na wrażenia użytkownika końcowego. Użytkownicy wolniejszych komputerów mogą napotkać powolne renderowanie, problemy z wydajnością javascript lub podobne problemy spowodowane przez maszyny słabszej jakości. Użytkownik z powolnymi połączeniami może mieć wolne (przynajmniej początkowe) czasy ładowania.
Nawet w aplikacjach innych typów zależność od aplikacji może negatywnie wpłynąć na użytkowników końcowych. Ramy przynajmniej zawsze zajmują trochę miejsca na dysku, a jeśli tworzysz aplikację mobilną (lub nawet aplikację komputerową), może to być konieczne do wzięcia pod uwagę.
Struktury po stronie serwera (nawet bardziej specyficzne dla sieci) najprawdopodobniej nie wpłyną na użytkowników końcowych, ale wpłyną na twoją infrastrukturę . Niektóre frameworki mają same zależności , które mogą wymagać ponownego uruchomienia serwera WWW, albo tylko usługi, albo serwera całkowicie.
Niektóre frameworki mogą być również bardzo obciążające zasoby.
To oczywiście wiąże się z punktami 1 i 2.
To wszystko jest po prostu dużym „kręgiem rozważań” i nie ma prawdziwej naukowej metody decydowania o tym, czy powinieneś wdrożyć ramy, czy nie.
Corbin March bardzo dobrze to podsumował:
Grupy, z którymi współpracowałem, robią to samo - zgadnij koszty i korzyści, wybierz najbardziej produktywną trasę i miej nadzieję, że mają rację. To nie jest strasznie naukowe - jedna część intuicji, trzy części doświadczenia, jedna część podatności na marketing, jedna część sprytu i pięć części rangi opinii.
Ważne jest również, aby nie być elitarnym . Ramy są narzędziami, które mają być używane. Znam ludzi obu skrajności; z jednej strony masz faceta, który bardzo utrudnia życie, z drugiej strony masz faceta, który tworzy powolne, rozdęte aplikacje.
Wszystkie frameworki mają przypadki użycia, to tylko kwestia ich wdrożenia we właściwych celach.