{"id":31413,"date":"2021-08-16T17:55:00","date_gmt":"2021-08-16T14:55:00","guid":{"rendered":"https:\/\/www.natro.com\/blog\/?p=31413"},"modified":"2021-10-18T16:27:39","modified_gmt":"2021-10-18T13:27:39","slug":"framework-nedir","status":"publish","type":"post","link":"https:\/\/www.natro.com\/blog\/framework-nedir\/","title":{"rendered":"Framework Nedir?"},"content":{"rendered":"\n<p>\u0130stenilen \u00e7o\u011fu \u015feye \u00e7abuk bir \u015fekilde ula\u015f\u0131lan ve g\u00fcnl\u00fck i\u015flerin g\u00f6rece daha pratik bi\u00e7imde neticelendi\u011fi bir dijital \u00e7a\u011f\u0131n i\u00e7erisindeyiz. \u0130\u015flerin b\u00f6ylesine k\u0131sa bir zaman zarf\u0131nda halloluyor olu\u015funda, bilgisayar programlar\u0131 ve yaz\u0131l\u0131mlar\u0131n\u0131n yads\u0131namaz bir rol\u00fc bulunur. Hayat\u0131m\u0131z\u0131n her alan\u0131na bir \u015fekilde dokunan bu yaz\u0131l\u0131m ve programlar, proje s\u00fcre\u00e7lerini \u00e7ok daha k\u0131sa bir s\u00fcrede bitirmek ad\u0131na \u00e7e\u015fitli y\u00f6ntemlere ba\u015fvurur. Bu y\u00f6ntemler aras\u0131nda framework, fark yarat\u0131r ve hemen bir ad\u0131m \u00f6ne \u00e7\u0131kar.<\/p>\n\n\n\n<p>\u201cFramework nedir?\u201d sorusuna bu anlamda daha sa\u011fl\u0131kl\u0131 bir yan\u0131t verebiliriz. Framework, yaz\u0131l\u0131m geli\u015ftiricilerin kullanm\u0131\u015f oldu\u011fu, evvelce haz\u0131rlanm\u0131\u015f olan k\u00fct\u00fcphanelerin mevcut oldu\u011fu ve bu k\u00fct\u00fcphanelere yenilerinin eklenebilece\u011fi yap\u0131lar\u0131n ad\u0131d\u0131r. \u00c7er\u00e7eve ve \u00e7at\u0131 gibi anlamlara gelen framework kelimesi, yaz\u0131l\u0131m geli\u015ftiricilere adeta k\u0131lavuzluk eder.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-framework-ne-i-e-yarar\"><span id=\"framework-ne-ise-yarar\">Framework Ne \u0130\u015fe Yarar?<\/span><\/h2>\n\n\n\n<p>G\u00fcn\u00fcm\u00fczde pek \u00e7ok alanda kullan\u0131lmakta olan framework kavram\u0131; kullan\u0131c\u0131 giri\u015f \u00e7\u0131k\u0131\u015f, veri taban\u0131 ba\u011flant\u0131s\u0131, mail atma, tema motoru gibi durumlarda s\u0131kl\u0131kla kullan\u0131l\u0131r. Ortaya konulan yeni projelerin k\u0131sa s\u00fcrede bitirilmesi ve i\u015flerde zaman y\u00f6n\u00fcnden tasarruf sa\u011flanmas\u0131, framework \u00f6gesinin en m\u00fchim kullan\u0131m amac\u0131d\u0131r. Yaz\u0131m\u0131 uzun zaman alan ve \u00f6nemli oranda emek isteyen kompleks olarak nitelendirilebilecek kodlar\u0131n, birka\u00e7 kelimeden olu\u015fan kod sat\u0131r\u0131yla k\u0131sa bir hale getirilmesi bu yap\u0131 sayesinde m\u00fcmk\u00fcnd\u00fcr. Bu yap\u0131n\u0131n kullan\u0131lmas\u0131ndaki bir di\u011fer ama\u00e7, yaz\u0131l\u0131mlar vas\u0131tas\u0131yla yap\u0131lan t\u00fcm i\u015f ve i\u015flemlerin daha basit bir hale getirilmesinin sa\u011flanmas\u0131d\u0131r.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-framework-nas-l-al-r\"><span id=\"framework-nasil-calisir\">Framework Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/span><\/h2>\n\n\n\n<p>Framework arac\u0131l\u0131\u011f\u0131yla yaz\u0131l\u0131m geli\u015ftiriciler iskeleti tekrardan olu\u015fturmak yerine uygulamalar\u0131 in\u015fa etmeye giri\u015febilirler. \u00d6rne\u011fin Java veya PHP kullanan geli\u015ftiriciler, s\u0131f\u0131rdan i\u015flem yapmadan kolayl\u0131kla haz\u0131r \u015fablonlar \u00fczerinden \u00e7e\u015fitli i\u015flemler ger\u00e7ekle\u015ftirebilir. Framework \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 i\u00e7in API (Uygulama Programlama Aray\u00fcz\u00fc) olmas\u0131 gerekir. Teknik olarak framework de bir API i\u00e7erir. Framework b\u00fcnyesinde kullan\u0131lmakta olan en yayg\u0131n yaz\u0131l\u0131m dili PHP\u2019dir. PHP kanal\u0131yla eri\u015filebilecek framework unsurlar\u0131, sisteme entegre edilerek belirlenen \u00e7al\u0131\u015fma programlar\u0131 s\u00fcrd\u00fcr\u00fclebilir. Belirli bir uygulama olu\u015fturulmas\u0131 maksad\u0131yla de\u011fi\u015ftirilen ve geni\u015fletilen frameworkler, yaz\u0131l\u0131m\u0131n temelini olu\u015fturmak i\u00e7in soyutlama denilen y\u00fcksek seviye kodunu kullan\u0131r.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-framework-kullanman-n-avantajlar-nelerdir\"><span id=\"framework-kullanmanin-avantajlari-nelerdir\">Framework Kullanman\u0131n Avantajlar\u0131 Nelerdir?<\/span><\/h2>\n\n\n\n<p>Yaz\u0131l\u0131m geli\u015ftirme a\u015famas\u0131n\u0131n bir hayli karma\u015f\u0131k oldu\u011fu d\u00fc\u015f\u00fcn\u00fclecek olursa framework fakt\u00f6r\u00fc, yaz\u0131l\u0131m geli\u015ftirme s\u00fcrecini epeyce h\u0131zland\u0131rarak yaz\u0131l\u0131m geli\u015ftiricilerin i\u015fini bir hayli kolayla\u015ft\u0131r\u0131r. Framework kullanman\u0131n avantajlar\u0131 \u015fu \u015fekildedir:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Kaliteli d\u00fczeyde uygulama programlar\u0131 olu\u015fturmaya arac\u0131l\u0131k eder.<\/li><li>Gereksiz ve yinelenen kod \u00f6nlenebilir; kod daha g\u00fcvenli haldedir.<\/li><li>Minimum hatayla tutarl\u0131 \u015fekilde kod geli\u015ftirmeye katk\u0131 sa\u011flar.<\/li><li>Fonksiyonel olarak s\u00fcrekli geli\u015fme sa\u011flan\u0131r.<\/li><li>Kod t\u00fcrleri daha \u00f6nce meydana getirilmi\u015f ve test edilmi\u015ftir. Uygulamalar bu \u015fekilde daha g\u00fcvenlidir.<\/li><li>Kodun test edilmesi ve hatan\u0131n ay\u0131klanmas\u0131 kolay bir \u015fekilde yap\u0131l\u0131r. Kod sahibi olmayan geli\u015ftiricilerin bile yapmas\u0131 m\u00fcmk\u00fcnd\u00fcr.<\/li><li>Bir uygulama geli\u015ftirilmesi i\u00e7in gerekli olan s\u00fcre, hat\u0131r\u0131 say\u0131l\u0131r derecede azal\u0131r.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-library-ve-framework-aras-ndaki-farklar-nelerdir\"><span id=\"library-ve-framework-arasindaki-farklar-nelerdir\">Library ve Framework Aras\u0131ndaki Farklar Nelerdir?<\/span><\/h2>\n\n\n\n<p>Library ve Framework genel anlamda, kolayla\u015ft\u0131r\u0131c\u0131 kod yap\u0131lar\u0131n\u0131n derlemeleridir. Birbirlerinden ayr\u0131\u015ft\u0131klar\u0131 nokta, teknik olan k\u0131s\u0131md\u0131r. \u0130kisini birbirinden ay\u0131ran temel \u00f6zellik, kodun nas\u0131l \u00e7a\u011fr\u0131ld\u0131\u011f\u0131na y\u00f6neliktir. Library baz\u0131 \u00f6zellikleri beraberinde getirirken kodun nerede ve nas\u0131l kullan\u0131laca\u011f\u0131na kar\u0131\u015fmaz. Framework ise kodun nerede ve nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 belirtir. E\u011fer Framework\u2019te belirtilen usulde kod kullan\u0131m\u0131 yap\u0131lmazsa i\u015flev kullan\u0131lamaz hale gelir.<\/p>\n\n\n\n<p>Yaz\u0131l\u0131m geli\u015ftiriciler, Library kullan\u0131rken son derece \u00f6zg\u00fcrd\u00fcr. Kodu, i\u00e7erisinde bulunulan uygulaman\u0131n herhangi bir yerinde rahatl\u0131kla kullanabilirler. Framework\u2019te ise kullan\u0131m belli kurallara tabidir. K\u0131sacas\u0131 yaz\u0131l\u0131m geli\u015ftiriciler taraf\u0131ndan olu\u015fturulan kod ile Library \u00e7a\u011fr\u0131lm\u0131\u015f olur, Framework ise kod arac\u0131l\u0131\u011f\u0131yla geli\u015ftiricileri \u00e7a\u011f\u0131r\u0131r.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-yayg-n-kullan-lan-frameworkler\"><span id=\"yaygin-kullanilan-frameworkler\">Yayg\u0131n Kullan\u0131lan Frameworkler<\/span><\/h2>\n\n\n\n<p>Frameworkler pek \u00e7ok yaz\u0131l\u0131m dilinde kullan\u0131ld\u0131\u011f\u0131ndan her yaz\u0131l\u0131m dilinin kendine ait Framework t\u00fcr\u00fc bulunur. Do\u011fru olan Framework unsurunun se\u00e7ilmesi, ihtiya\u00e7lara g\u00f6re belirlenmesi gereken bir husustur. Tercih edilmesi muhtemel Framework yap\u0131lar\u0131 i\u00e7erisinde, yaz\u0131l\u0131m diline uygun \u00e7e\u015fitli alternatifler mevcuttur. Framework b\u00fcnyesinde en \u00e7ok tercih edilen yaz\u0131l\u0131m dilleri PHP, Java, Python, Javascript\u2019tir. Bunlar\u0131 a\u015fa\u011f\u0131da biraz daha kapsaml\u0131 \u015fekilde inceleyece\u011fiz.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-javascript-frameworkleri\"><span id=\"javascript-frameworkleri\">JavaScript Frameworkleri<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Angular<\/strong>: \u0130nternet \u00fczerinde uygulama olu\u015fturmay\u0131 kolayla\u015ft\u0131ran; yaz\u0131 tabanl\u0131 ve a\u00e7\u0131k kaynakl\u0131 bir JS Framework\u2019\u00fcd\u00fcr.\u00a0Bu Framework kullan\u0131larak geli\u015ftirilen uygulamalara \u00f6rnek olarak Netflix, Paypal ve YouTube g\u00f6sterilebilir.<\/li><li><strong>React<\/strong>: Facebook taraf\u0131ndan olu\u015fturulmu\u015f olan React, k\u0131sa bir s\u00fcrede pop\u00fclerlik kazanm\u0131\u015ft\u0131r. Gelen y\u00fcksek trafi\u011fe sahip sayfalar\u0131n dinamik kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc \u00e7al\u0131\u015ft\u0131rmak ve geli\u015ftirmek i\u00e7in kullan\u0131l\u0131r. Reaktif bir yakla\u015f\u0131ma sahiptir. \u00c7ok say\u0131da ek ara\u00e7 kullanmay\u0131 \u00f6\u011frenmeyi gerektirebilir.<\/li><li><strong>jQuery<\/strong>: Bu dilin \u00fcst\u00fcne di\u011fer .js Framework\u2019ler olu\u015fturulur. Bir mobil uygulama alternatifidir.<\/li><li><strong>Vue<\/strong>: 2016 y\u0131l\u0131nda ortaya \u00e7\u0131kan Vue, sahip oldu\u011fu \u00f6zelliklerle de\u011ferini kan\u0131tlar. Sayfa uygulamas\u0131n\u0131n bu \u00f6zellikler aras\u0131nda en dikkat \u00e7ekici oldu\u011fu de\u011ferlendirilebilir. Bu Framework kanal\u0131, \u00e7apraz platform geli\u015ftirmek a\u00e7\u0131s\u0131ndan son derece g\u00fcvenilirdir.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-php-frameworkleri\"><span id=\"php-frameworkleri\">PHP Frameworkleri<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Symfony<\/strong>: \u0130htiya\u00e7 hissedilen PHP i\u015flevlerini se\u00e7meye ve t\u00fcm Framework\u2019u kullanmaya imkan tan\u0131yan bir paket sistemi b\u00fcnyesinde bar\u0131nd\u0131r\u0131r ve son derece esnektir. Uygulamalar\u0131n optimum bir \u015fekilde \u00e7al\u0131\u015fmas\u0131 i\u00e7in yerle\u015fik test i\u015flevselli\u011fi i\u00e7erir.<\/li><li><strong>Laravel<\/strong>: Y\u00fcksek performans\u0131yla PHP web uygulamas\u0131 geli\u015ftirme i\u00e7in standart ve \u00e7ok g\u00fc\u00e7l\u00fc \u00f6zelliklerle dolu en g\u00fc\u00e7l\u00fc PHP framework\u2019\u00fcd\u00fcr. Harikulade entegre test tekni\u011fiyle uygulamalar\u0131 h\u0131zla d\u0131\u015far\u0131 \u00e7\u0131karmaya yarar. Laravel kullan\u0131larak olu\u015fturulmu\u015f bir\u00e7ok me\u015fhur site mevcuttur. Laravel sayesinde, en karma\u015f\u0131k web uygulamalar\u0131 \u00e7ok kolay bir \u015fekilde \u00f6zelle\u015ftirilebilir ve y\u00f6netilebilir.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/li><li><strong>Codelgniter<\/strong>: Zengin bir k\u00fct\u00fcphane setiyle olu\u015fturulmu\u015f olup al\u0131\u015fveri\u015f, i\u015f ve seyahat siteleri i\u00e7in en pop\u00fcler uyarlanm\u0131\u015f MVC (Model View Controller) tarz\u0131 framework\u2019d\u00fcr.<\/li><li><strong>Zend<\/strong>: \u0130\u015f ve al\u0131\u015fveri\u015f i\u00e7in bir MVC framework\u2019u olarak kullan\u0131l\u0131r.<\/li><li><strong>CakePHP<\/strong>: A\u00e7\u0131k kaynak kodlu ve MVC mant\u0131\u011f\u0131yla i\u015fleyen al\u0131\u015fveri\u015f, i\u015f ve e\u011flence sekt\u00f6rleri i\u00e7in tasarlanm\u0131\u015f di\u011fer pop\u00fcler PHP framework\u2019\u00fcd\u00fcr.\u00a0<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-java-frameworkleri\"><span id=\"java-frameworkleri\">Java Frameworkleri<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Spring<\/strong>: Sahip oldu\u011fu ekosistem ve aktif bir toplulukla, en iyi bilinen Java framework\u2019\u00fcd\u00fcr. Kurumsal \u015fekilde Java uygulamalar\u0131, mikro ve web hizmetleri olu\u015fturmaya imkan tan\u0131r. Her t\u00fcrden Java projesi i\u00e7in kullan\u0131labilir. Bir projenin herhangi bir a\u015famas\u0131 ya da seviyesi i\u00e7in kullan\u0131labilecek mod\u00fcler bir framework\u2019t\u00fcr. Projenin yaln\u0131zca bir a\u015famas\u0131nda de\u011fil t\u00fcm a\u015famalar\u0131 i\u00e7in Spring kullan\u0131labilir.<\/li><li><strong>Oracle ADF<\/strong>: Kurumsal uygulamalara y\u00f6nelik organizasyonlarda kullan\u0131lan bir framework\u2019t\u00fcr.<\/li><li><strong>Apache Click<\/strong>: Bile\u015fen eksenli web uygulama framework\u2019\u00fc olarak bilinir.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-python-frameworkleri\"><span id=\"python-frameworkleri\">Python Frameworkleri<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Django<\/strong>: A\u00e7\u0131k kaynakl\u0131 ve tam y\u0131\u011f\u0131n kullan\u0131labilen bir framework\u2019t\u00fcr. Web uygulamas\u0131n\u0131 s\u0131f\u0131rdan meydana getirmek i\u00e7in son derece kullan\u0131\u015fl\u0131d\u0131r. Ayr\u0131 ayr\u0131 k\u00fct\u00fcphaneler sunman\u0131n yerine gereken t\u00fcm \u00f6zellikleri varsay\u0131lan olarak sa\u011flayan bir \u00e7al\u0131\u015fma prensibine sahiptir. Modern web uygulamalar\u0131n\u0131 ideal bir \u015fekle getiren, g\u00fcvenli, h\u0131zl\u0131 ve \u00f6l\u00e7eklenebilen bir framework\u2019t\u00fcr.<\/li><li><strong>Web2py<\/strong>: Bir ba\u015fka pop\u00fcler, \u00f6l\u00e7eklenebilir ve a\u00e7\u0131k kaynakl\u0131 Phyton Framework\u2019\u00fcd\u00fcr. Kod d\u00fczenleyici, hata ay\u0131klay\u0131c\u0131 ve tek t\u0131klamayla da\u011f\u0131t\u0131m i\u00e7ermekte olan internet tabanl\u0131 IDE\u2019siyle gelen bir framework\u2019t\u00fcr.<\/li><li><strong>Flask<\/strong>: Sa\u011flam bir web uygulamas\u0131 temeli olu\u015fturmaya yarar ve bunun i\u00e7in uzant\u0131lar kullan\u0131labilir.\u00a0<\/li><li><strong>Pyramid<\/strong>: A\u00e7\u0131k kaynakl\u0131 bir Python framework\u2019\u00fcd\u00fcr. Bu framework sayesinde, minimum karma\u015f\u0131kl\u0131k ile olabildi\u011fince fazla i\u015f yapmak ama\u00e7lanm\u0131\u015ft\u0131r. Hem k\u00fc\u00e7\u00fck hem de b\u00fcy\u00fck uygulamalarla iyi bir \u015fekilde \u00e7al\u0131\u015fabilir.<\/li><li><strong>Bottle<\/strong>: API olu\u015fturulmas\u0131 i\u00e7in en ba\u015f\u0131nda her \u015feyi tek bir kaynak dosyaya uygular. Python standart k\u00fct\u00fcphane d\u0131\u015f\u0131nda hi\u00e7bir ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 bulunmaz.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"\u0130stenilen \u00e7o\u011fu \u015feye \u00e7abuk bir \u015fekilde ula\u015f\u0131lan ve g\u00fcnl\u00fck i\u015flerin g\u00f6rece daha pratik bi\u00e7imde neticelendi\u011fi bir dijital \u00e7a\u011f\u0131n&hellip;\n","protected":false},"author":7,"featured_media":12412,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[192],"tags":[1368],"class_list":{"0":"post-31413","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-web-tasarimi","8":"tag-framework"},"_links":{"self":[{"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/posts\/31413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/comments?post=31413"}],"version-history":[{"count":0,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/posts\/31413\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/media\/12412"}],"wp:attachment":[{"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/media?parent=31413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/categories?post=31413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/tags?post=31413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}