{"id":31810,"date":"2020-02-25T09:07:15","date_gmt":"2020-02-25T08:07:15","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/frameworkowe-wojny\/"},"modified":"2024-11-07T15:36:53","modified_gmt":"2024-11-07T14:36:53","slug":"frameworkowe-wojny","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/frameworkowe-wojny\/","title":{"rendered":"Frameworkowe wojny"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\">Przejd\u017a do:<\/p>\n    <ol>\n                    <li><a href=\"#Frameworki-zalety-i-wady\">1.  Frameworki \u2013 zalety i wady<\/a><\/li>\n                    <li><a href=\"#Jak-prawidlowo-korzystac-z-frameworkow\">2.  Jak prawid\u0142owo korzysta\u0107 z framework\u00f3w?<\/a><\/li>\n                    <li><a href=\"#Podejscie-multi-framework\">3.  Podej\u015bcie multi-framework<\/a><\/li>\n                    <li><a href=\"#Podsumowanie\">4.  Podsumowanie<\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<p>Na rynku dost\u0119pnych jest wiele rozwi\u0105za\u0144 dla wykorzystywanej przeze mnie technologii, nie jest wi\u0119c trudno wybra\u0107 najbardziej odpowiedni dla konkretnego projektu lub odpowiednio do osobistych preferencji. Przyjrzyjmy si\u0119 wszystkim obszarom programowania, w kt\u00f3rych mo\u017cna u\u017cywa\u0107 framework\u00f3w.<\/p>\n\n\n\n<p>Mo\u017cna je zastosowa\u0107 w takich obszarach, jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kompilatory r\u00f3\u017cnych j\u0119zyk\u00f3w programowania<\/strong> \u2013 chodzi o programy do automatycznego t\u0142umaczenia kodu napisanego w jednym j\u0119zyku na odpowiadaj\u0105cy mu kod w drugim j\u0119zyku,<\/li>\n\n\n\n<li><strong>Aplikacje do modelowania finansowego,<\/strong><\/li>\n\n\n\n<li><strong>Aplikacje do modelowania <\/strong>typu Earth Science Applications (ESA),<\/li>\n\n\n\n<li><strong>Systemy wspomagaj\u0105ce podejmowanie decyzji<\/strong> \u2013 systemy dostarczaj\u0105ce informacje i wiedz\u0119,<\/li>\n\n\n\n<li><strong>Aplikacje webowe<\/strong> \u2013 programy komputerowe, kt\u00f3re dzia\u0142aj\u0105 na serwerach za po\u015brednictwem sieci komputerowych i \u0142\u0105cz\u0105 si\u0119 z komputerami u\u017cytkownik\u00f3w za pomoc\u0105 przegl\u0105darki internetowej,<\/li>\n\n\n\n<li><strong>Middleware<\/strong> \u2013 oprogramowanie po\u015brednicz\u0105ce pomi\u0119dzy r\u00f3\u017cnymi aplikacjami, us\u0142ugami lub systemami.<\/li>\n<\/ul>\n\n\n\n<p>Na rynku oprogramowania mamy obecnie wiele rozwi\u0105za\u0144 gotowych do u\u017cycia, a wi\u0119kszo\u015b\u0107 z nich oparta jest na frameworkach. Zapewniaj\u0105 one bardzo przejrzyst\u0105 i sformalizowan\u0105 architektur\u0119, aby umo\u017cliwi\u0107 programistom dokonywanie dalszych modyfikacji oraz zorganizowan\u0105 prac\u0119 w grupie. Taka budowa oprogramowania charakteryzuje si\u0119 wysokim poziomem z\u0142o\u017cono\u015bci. Warto jest jednak si\u0119 uczy\u0107 tych technologii i rozwi\u0105za\u0144, poniewa\u017c mog\u0105 one przyspieszy\u0107 zar\u00f3wno twoj\u0105 prac\u0119, jak i prac\u0119 ca\u0142ego zespo\u0142u. Przyjrzyjmy si\u0119 temu jeszcze bardziej szczeg\u00f3\u0142owo i sp\u00f3jrzmy na list\u0119 zalet i wad framework\u00f3w.<\/p>\n\n\n\n<p><strong>Czytaj tak\u017ce:<a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/clean-architecture\"> Clean Architecture<\/a><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Frameworki-zalety-i-wady\">Frameworki \u2013 zalety i wady<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Zalety:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Wydajno\u015b\u0107<\/strong> \u2013 dzi\u0119ki budowaniu aplikacji przy u\u017cyciu frameworka programista pisze mniej kodu,<\/li>\n\n\n\n<li><strong>Lepsza jako\u015b\u0107 kodu<\/strong> \u2013 poniewa\u017c frameworki s\u0105 zaprojektowane w taki spos\u00f3b, by zapewni\u0107 elastyczno\u015b\u0107, maj\u0105 dobr\u0105 logik\u0119 wewn\u0119trzn\u0105 i narzucaj\u0105 t\u0119 sam\u0105 logik\u0119 stworzonej aplikacji,<\/li>\n\n\n\n<li><strong>Niezawodno\u015b\u0107<\/strong> \u2013 frameworki takie jak szkielety aplikacji s\u0105 dobrze zaprojektowane i przetestowane.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Wady<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Z\u0142o\u017cono\u015b\u0107<\/strong> \u2013 frameworki s\u0105 trudniejsze do nauki ze wzgl\u0119du na szerokie i zaawansowane u\u017cycie,<\/li>\n\n\n\n<li><strong>Wydajno\u015b\u0107<\/strong> \u2013 elastyczna konstrukcja utworzonego oprogramowania cz\u0119sto uzyskiwana jest kosztem ni\u017cszej wydajno\u015bci (w tym miejscu musz\u0119 wspomnie\u0107 o systemach pami\u0119ci podr\u0119cznej, kt\u00f3re w du\u017cym stopniu mog\u0105 przy\u015bpieszy\u0107 odpowiedzi serwera i zr\u00f3wna\u0107 je lub zbli\u017cy\u0107 do odpowiedzi \u201eczystego\u201d kodu).<\/li>\n<\/ul>\n\n\n\n<p>Jak wida\u0107, plus\u00f3w jest wi\u0119cej ni\u017c minus\u00f3w, co moim zdaniem jest najwi\u0119ksz\u0105 zalet\u0105 framework\u00f3w. Musimy jednak pami\u0119ta\u0107, \u017ce frameworki nie s\u0105 zawsze najlepszym rozwi\u0105zaniem. Na przyk\u0142ad, je\u015bli potrzebujemy stworzy\u0107 aplikacj\u0119 do wy\u015bwietlania na ekranie pojedynczej wiadomo\u015bci jako odpowiedzi serwera, u\u017cycie dodatkowych narz\u0119dzi bez zaawansowanego systemu pami\u0119ci podr\u0119cznej spowolni odpowied\u017a serwera i dzia\u0142anie aplikacji. Taka aplikacja wymaga tylko jednego polecenia do wykonania i nie s\u0105 potrzebne \u017cadne dodatkowe narz\u0119dzia, aby otrzyma\u0107 wymagany rezultat.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Jak-prawidlowo-korzystac-z-frameworkow\"><strong>Jak prawid\u0142owo korzysta\u0107 z framework\u00f3w?<\/strong><\/h2>\n\n\n\n<p>Nie mo\u017cna powiedzie\u0107, \u017ce frameworki mog\u0105 rozwi\u0105za\u0107 wszystkie problemy zwi\u0105zane z programowaniem, ale z pewno\u015bci\u0105 mog\u0105 pom\u00f3c w codziennych zadaniach. Z drugiej strony \u2013 trzeba by\u0107 ostro\u017cnym. Wiele razy obserwowa\u0142em konwersacje na forach po\u015bwi\u0119conych danemu frameworkowi, w kt\u00f3rych dyskutuj\u0105cy pr\u00f3buj\u0105 udowodni\u0107, \u017ce wybrany przez nich framework jest najlepszy \u2013 czego nie da si\u0119 jednoznacznie stwierdzi\u0107 bez dok\u0142adnej analizy problemu.<\/p>\n\n\n\n<p>Moim zdaniem frameworki s\u0105 jak narz\u0119dzia \u2013 im wi\u0119cej posiadasz narz\u0119dzi, tym wi\u0119cej problem\u00f3w jeste\u015b w stanie rozwi\u0105za\u0107. Je\u015bli masz tylko m\u0142otek, b\u0119dziesz m\u00f3g\u0142 jedynie wbi\u0107 gw\u00f3\u017ad\u017a. Je\u015bli masz natomiast ca\u0142y gara\u017c pe\u0142en narz\u0119dzi, mo\u017cesz stworzy\u0107 du\u017co wi\u0119cej rzeczy.<\/p>\n\n\n\n<p><strong>Czytaj tak\u017ce: <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/artykuly-eksperckie\/szalenstwo-mikroserwisow\">Szale\u0144stwo mikroserwis\u00f3w<\/a><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Podejscie-multi-framework\"><strong>Podej\u015bcie multi-framework<\/strong><\/h2>\n\n\n\n<p>Takie podej\u015bcie jest rezultatem architektury obecnych aplikacji, budowanych z bibliotek \u2013 oddzielnych modu\u0142\u00f3w z w\u0142asnymi wymaganiami, kt\u00f3re mo\u017cna wykorzysta\u0107, aby stworzy\u0107 dowolny rodzaj aplikacji. W ten spos\u00f3b aplikacj\u0119 mo\u017cna podzieli\u0107 na mniejsze cz\u0119\u015bci i dzi\u0119ki temu b\u0119dzie bardziej zrozumia\u0142a dla wi\u0119kszej liczby os\u00f3b. Biblioteki organizuj\u0105 r\u00f3wnie\u017c struktur\u0119 aplikacji i pomagaj\u0105 rozwija\u0107 wi\u0119ksze projekty.<\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/Framework_graphic_1.png\" alt=\"Frameworki\" class=\"wp-image-25759\" title=\"\"><\/figure>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W my\u015bl tego podej\u015bcia mo\u017cemy u\u017cywa\u0107 bibliotek jako niezale\u017cnego oprogramowania i instalowa\u0107 je w celu zbudowania wi\u0119kszych aplikacji. Nie ma przeszk\u00f3d w korzystaniu w taki sam spos\u00f3b z framework\u00f3w \u2013 ka\u017cda cz\u0119\u015b\u0107 aplikacji mo\u017ce by\u0107 zbudowana przy u\u017cyciu innego. Dlaczego tak jest? Kiedy korzystamy z bibliotek utworzonych tylko dla jednego frameworka, nie jeste\u015bmy w stanie korzysta\u0107 z oprogramowania stworzonego dla innych, kt\u00f3re mo\u017ce znacz\u0105co ulepszy\u0107 i przy\u015bpieszy\u0107 prac\u0119&nbsp;nad projektem.<\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/Framework_graphic_2.png\" alt=\" class=\" class=\"wp-image-25760\" title=\"\"><\/figure>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Podsumowanie\">Podsumowanie<\/h2>\n\n\n\n<p>Podsumowuj\u0105c \u2013 powinni\u015bmy stosowa\u0107 podej\u015bcie, kt\u00f3re pozwoli nam pozosta\u0107 otwartym na stosowanie r\u00f3\u017cnych bibliotek, a w tym przypadku nazwa frameworka jest tylko \u017ar\u00f3d\u0142em pochodzenia danej biblioteki.&nbsp;Przyk\u0142adem takiego podej\u015bcia s\u0105 <strong>popularne rozwi\u0105zania<\/strong>, jak platformy e-commerce <strong>Magento<\/strong> i <strong>Sylius<\/strong> czy te\u017c sklep e-commerce nowej generacji o nazwie <strong>Shopware<\/strong>. Zastosowanie podej\u015bcia multi-framework to nie tylko e-commerce \u2013 zaobserwujemy je r\u00f3wnie\u017c w popularnych i bardzo elastycznych rozwi\u0105zaniach CMF takich jak <strong>Sulu<\/strong>. Gdy sprawdzamy kod \u017ar\u00f3d\u0142owy tych aplikacji na GitHubie, mo\u017cna zobaczy\u0107, \u017ce autorzy korzystali z bibliotek pochodz\u0105cych z framework\u00f3w Zend i Symfony \u2013 bibliotekami tymi mo\u017cna zarz\u0105dza\u0107 w technologii PHP za po\u015brednictwem composera. Na pierwszy rzut oka proporcje nie s\u0105 du\u017ce, jednak mo\u017cemy zacz\u0105\u0107 uwa\u017ca\u0107 to za wykorzystanie podej\u015bcia multi-framework i traktowa\u0107 jako \u015bwiadom\u0105 decyzj\u0119 w kontek\u015bcie realizacji architektury projektu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>W mojej codziennej pracy <a href=\"https:\/\/www.jcommerce.pl\/uslugi-it\/rozwoj-oprogramowania\/php\">programisty PHP<\/a> lubi\u0119 u\u017cywa\u0107 framework\u00f3w, poniewa\u017c s\u0105 one rezultatem wsp\u00f3\u0142pracy spo\u0142eczno\u015bci. Dzi\u0119ki nim programi\u015bci nie musz\u0105 zastanawia\u0107 si\u0119 nad rozwi\u0105zaniem powtarzalnych problem\u00f3w, kt\u00f3re zosta\u0142y ju\u017c kiedy\u015b rozwi\u0105zane, i koncentruj\u0105 si\u0119 na wy\u017cszej warstwie aplikacji. Ale jednocze\u015bnie ka\u017cdy z nich mo\u017ce wnie\u015b\u0107 sw\u00f3j wk\u0142ad w\u00a0 rozw\u00f3j frameworka, w kt\u00f3rym pracuje.<\/p>\n","protected":false},"author":35,"featured_media":25346,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":19,"footnotes":""},"categories":[1,582],"tags":[573],"offering":[522],"class_list":["post-31810","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-php-pl","offering-tech-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=31810"}],"version-history":[{"count":3,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31810\/revisions"}],"predecessor-version":[{"id":33963,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31810\/revisions\/33963"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/25346"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=31810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=31810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=31810"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=31810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}