{"id":9423,"date":"2017-02-06T09:42:43","date_gmt":"2017-02-06T07:42:43","guid":{"rendered":"https:\/\/ihs.com.tr\/blog\/?p=9423"},"modified":"2019-01-18T12:38:05","modified_gmt":"2019-01-18T10:38:05","slug":"asp-net-5-mvc-6daki-en-onemli-5-yenilik","status":"publish","type":"post","link":"https:\/\/www.ihs.com.tr\/blog\/asp-net-5-mvc-6daki-en-onemli-5-yenilik\/","title":{"rendered":"Asp.Net 5 ve MVC 6\u2019daki En \u00d6nemli 5 Yenilik"},"content":{"rendered":"<p><span style=\"font-size: 14pt;\">Asp.Net 5 ve MVC 6\u2019da \u00e7ok say\u0131da yenilik yap\u0131ld\u0131. Asp.Net 5 modern hizmetleri ve web uygulamalar\u0131n\u0131 desteklemesi bak\u0131m\u0131ndan ba\u015ftan a\u015fa\u011f\u0131 yenilendi. Asp.Net \u00e7apraz platform, a\u00e7\u0131k kaynak ve hem bulutta hem kurum i\u00e7inde \u00e7ok verimli bir \u015fekilde \u00e7al\u0131\u015f\u0131yor. Asp.Net 5 bug\u00fcne kadarki .Net frameworkler aras\u0131nda en \u00f6nemli s\u00fcr\u00fcm olarak g\u00f6r\u00fcl\u00fcyor.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">A\u015fa\u011f\u0131da Asp.Net 5 ve MVC 6\u2019daki en \u00f6nemli be\u015f yenilik yer almakta.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">1- Linux ve OSX \u00fczerinde Asp.Net<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Asp.Net 5 uygulamalar\u0131 Windows\u2019un yan\u0131 s\u0131ra Linux ve OSX\u2019te de \u00e7al\u0131\u015ft\u0131r\u0131labiliyor. Bu \u00f6zelli\u011fiyle Asp.Net\u2019i tamamen yeni bir tasar\u0131mc\u0131 ve geli\u015ftirici kitlesine a\u00e7\u0131yor.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Geleneksel Asp.Net\u2019te Windows makineleri i\u00e7erisinde i\u015fbirli\u011fi i\u00e7inde \u00e7al\u0131\u015fan profesyonel geli\u015ftiriciler ve tasar\u0131mc\u0131lar vard\u0131. Startuplar ise Linux\/OSX kullan\u0131yordu.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Linux\/OSX \u00fczerinde uygulama geli\u015ftirebilme \u00f6zelli\u011finin gelmesi her \u015feyi de\u011fi\u015ftirecek. Tasar\u0131mc\u0131lar ve geli\u015ftiriciler uygulamalar\u0131n\u0131 WebStorm ve Sublime gibi en sevdikleri ortamlarda hi\u00e7bir zorluk ya\u015famadan geli\u015ftirebilecekler.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">2- Art\u0131k Web Forms ve Visual Basic Yok<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Asp.Net Web Forms art\u0131k Asp.Net 5\u2019in bir par\u00e7as\u0131 de\u011fil. .Net framework 4.6\u2019y\u0131 hedef alarak Visul Studio\u2019da Web Forms uygulamalar\u0131 yapmak ise m\u00fcmk\u00fcn. Ancak bu uygulamalar Asp.Net 5\u2019teki yeni \u00f6zelliklerden faydalanamayacak.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Asp.Net 5 yaln\u0131zca C# destekliyor. Visual Basic i\u00e7in bir destek bulunmamakta.<\/span><\/p>\n<p><a href=\"https:\/\/www.ihs.com.tr\/sunucu-kiralama\/bulut-sunucu.html\"><img decoding=\"async\" class=\"alignnone wp-image-9425 size-medium\" src=\"https:\/\/www.ihs.com.tr\/blog\/wp-content\/uploads\/2017\/02\/microsoft-asp.net-5-300x163.png\" alt=\"microsoft asp.net 5\" width=\"300\" height=\"163\" srcset=\"https:\/\/www.ihs.com.tr\/blog\/wp-content\/uploads\/2017\/02\/microsoft-asp.net-5-300x163.png 300w, https:\/\/www.ihs.com.tr\/blog\/wp-content\/uploads\/2017\/02\/microsoft-asp.net-5-585x319.png 585w, https:\/\/www.ihs.com.tr\/blog\/wp-content\/uploads\/2017\/02\/microsoft-asp.net-5.png 810w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong><span style=\"font-size: 14pt;\">3- \u0130stemci taraf\u0131 geli\u015ftirme i\u00e7in destek &#8211; AngularJS, Grunt, Bower, etiket yard\u0131mc\u0131lar\u0131<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">AngularJS tek sayfal\u0131k uygulama yapmak i\u00e7in en \u00f6nemli istemci taraf\u0131 framework olarak g\u00f6r\u00fcl\u00fcyor. Visual Studio\u2019nun 2015 s\u00fcr\u00fcm\u00fcnde AngularJS\u2019in uygulamalar\u0131, direktifleri ve mod\u00fclleri bulunmakta.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Asp.Net 5\u2019teki di\u011fer bir \u00f6nemli \u00f6zellik ise etiket yard\u0131mc\u0131lar\u0131. Bunlar Asp.Net MVC uygulamalar\u0131nda g\u00f6r\u00fc\u015f olu\u015fturmak bak\u0131m\u0131ndan \u00e7ok b\u00fcy\u00fck bir etkiye sahip. Etiket yard\u0131mc\u0131lar\u0131 MVC yard\u0131mc\u0131lar\u0131n\u0131n geleneksel kullan\u0131m\u0131na k\u0131yasla \u00e7ok daha iyi bir \u015fekilde kullan\u0131labiliyor.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Asp:net MVC 6\u2019daki yeni form eleman\u0131nda yaln\u0131zca HTML unsurlar\u0131 bulunmakta. \u00d6rne\u011fin, Html.TextBoxFor () etiket yard\u0131mc\u0131s\u0131 yerine INPUT unsurunu kullan\u0131yor. Asp.Net MVC 6\u2019ya yeni bir asp-for sembol\u00fc eklenmi\u015f. Bu unsurlar\u0131n ana kullan\u0131m amac\u0131 Asp.Net MVC\u2019nin sunucu taraf\u0131 i\u015flevselli\u011fi olan unsurlar\u0131n say\u0131s\u0131n\u0131 artt\u0131rmak.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Bunun yan\u0131 s\u0131ra, Asp.Net 5 front-end geli\u015ftiricileri taraf\u0131ndan da \u00e7ok \u00f6vg\u00fc al\u0131yor \u00e7\u00fcnk\u00fc Grunt\u2019\u0131 destekliyor. GruntJS geli\u015ftiricilerin CSS ve JavaScript dosyalar\u0131 gibi kaynaklar yaratmalar\u0131n\u0131 sa\u011flayan bir t\u00fcr g\u00f6rev \u00e7al\u0131\u015ft\u0131r\u0131c\u0131. \u00d6rne\u011fin, GruntJS JavaScript dosyalar\u0131n\u0131n birle\u015ftirilmesi ve k\u00fc\u00e7\u00fclt\u00fclmesi i\u00e7in kullan\u0131labilir. Farkl\u0131 i\u015fler i\u00e7in bir\u00e7ok GruntJS eklentisi bulunmakta. GruntJS\u2019i desteklemek i\u00e7in Nuget\u2019in yan\u0131 s\u0131ra iki paket y\u00f6neticisinin de desteklenmesi gerekiyor. GruntJS eklentileri NPM paketi formunda da\u011f\u0131t\u0131ld\u0131\u011f\u0131 i\u00e7in, Microsoft buna y\u00f6nelik de destek ekledi. Microsoft ayr\u0131ca Bower arac\u0131l\u0131\u011f\u0131yla da\u011f\u0131t\u0131lan istemci taraf\u0131 kaynaklar\u0131 i\u00e7in de destek sunuyor.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">4- Birle\u015fik Web API ve MVC Uygulamalar\u0131 ve G\u00f6r\u00fcnt\u00fcleme Bile\u015fenleri (View Components)<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Web API uygulamalar\u0131 MVC\u2019nin di\u011fer versiyonlar\u0131ndaki MVC uygulamalar\u0131ndan farkl\u0131yd\u0131. MVC uygulamas\u0131 System.Web.MVC.Controller s\u0131n\u0131f\u0131ndan faydalan\u0131rken, Web API uygulamas\u0131 System.Web.Http.ApiController s\u0131n\u0131f\u0131ndan faydalan\u0131yor.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">MVC 6 i\u00e7in hem Web API hem de MVC uygulamalar\u0131 i\u00e7in tek bir uygulamada s\u0131n\u0131f\u0131 kullan\u0131l\u0131yor. MVC 6 i\u00e7in mevcut tek s\u0131n\u0131f Microsoft.Asp.Net.MVC.Controller.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">MVC 6 uygulamalar\u0131 taraf\u0131ndan bir IActionResult g\u00f6nderiliyor. Bir MVC uygulamas\u0131 kullan\u0131ld\u0131\u011f\u0131nda bu bir g\u00f6r\u00fcnt\u00fcleme olarak kullan\u0131labiliyor. IActionResult bir Web API uygulamas\u0131 kullan\u0131ld\u0131\u011f\u0131nda veri olarak kullan\u0131labilir. Ayr\u0131ca, Hem Web API hem de MVC uygulamalar\u0131 MVC 6\u2019daki ayn\u0131 yolu kullan\u0131yor. Geli\u015ftiriciler her iki yoldan da faydalanabilir ve bu yollar\u0131 projelerindeki t\u00fcm uygulamalara uygulayabilirler.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">MVC 6\u2019da art\u0131k alt uygulamalar bulunmuyor. Onun yerine g\u00f6r\u00fcnt\u00fcleme bile\u015fenleri getirilmi\u015f durumda. Asp.Net MVC\u2019nin \u00f6nceki s\u00fcr\u00fcmleri alt uygulamalar\u0131 harekete ge\u00e7irmek i\u00e7in Html.Action () y\u00f6ntemini kullan\u0131yordu. Fakat Html.Action yard\u0131mc\u0131s\u0131 MVC 6 versiyonunda bulunmamakta.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Onun yerine View Components olarak adland\u0131r\u0131lan alternatif bir terminoloji kullan\u0131l\u0131yor. View Components yukar\u0131da bahsi ge\u00e7en alt uygulamalara benziyor. Uygulamalar\u0131n bir aksiyonu olarak tan\u0131mlanmalar\u0131na ra\u011fmen asl\u0131nda de\u011filler. View Components alt uygulamalara k\u0131yasla daha do\u011fallar.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">5- \u00a0Asp.Net Ba\u011f\u0131ml\u0131l\u0131k enjeksiyonu ve xUnit.net<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Asp.Net 5\u2019te Service Locator \u00f6r\u00fcnt\u00fcs\u00fc ve ba\u011f\u0131ml\u0131l\u0131k enjeksiyonu i\u00e7in de destek bulunmakta. Yani, art\u0131k AutoFac ve Ninject gibi \u00fc\u00e7\u00fcnc\u00fc taraf ba\u011f\u0131ml\u0131l\u0131k enjeksiyonu frameworklerine ba\u011f\u0131ml\u0131 olmaya gerek yok.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Ba\u011f\u0131ml\u0131l\u0131k enjeksiyonunun yard\u0131m\u0131yla, geli\u015ftiricilerin yapmas\u0131 gereken tek \u015fey kulland\u0131klar\u0131 platform i\u00e7erisinde talep edilen ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 bildirmek. Bunun \u00fczerine gerekli ba\u011f\u0131ml\u0131l\u0131k Asp.Net 5 framework\u00fc yard\u0131m\u0131yla sunulur. Fakat bu enjeksiyonun uygulanmas\u0131 i\u00e7in ekstra bir a\u015famadan ge\u00e7ilmesi gerekir. Ba\u015flang\u0131\u00e7 hedefindeki ba\u011f\u0131ml\u0131l\u0131klar Asp.Net\u2019e mutlaka bildirilmelidir. FooService, BazService ve BarService kaydedildikten sonra, framework FooService\u2019in kurulmas\u0131 i\u00e7in birer BazService ve BarService olu\u015fturulmas\u0131 gerekti\u011fini fark eder.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Ayr\u0131ca, Asp.Net 5\u2019te art\u0131k Visual Studio test framework\u00fc bulunmamakta. Onun yerine test ama\u00e7l\u0131 xUnit.net framwork\u00fc var. Birim testi framework\u00fcndeki bir birim testini tan\u0131mlamak i\u00e7in [TestMethod] ve [TestClass] olarak bilinen iki \u00f6zellik kullan\u0131l\u0131yordu.Asp.Net 5 i\u00e7erisindeki xUnit.net framework\u00fc ise [TestMethod] yerine [Fact] \u00f6zelli\u011fini kullan\u0131yor. Bu framworkte [TestClass] diye bir \u00f6zellik bulunmamakta.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">A\u015fa\u011f\u0131da xUnit.net framework\u00fc kullan\u0131larak haz\u0131rlanan bir kod par\u00e7as\u0131 \u00f6rne\u011fi bulunmakta.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">{<\/span><br \/>\n<span style=\"font-size: 14pt;\"> [Fact]<\/span><br \/>\n<span style=\"font-size: 14pt;\"> public void SumofNumbers ()<\/span><br \/>\n<span style=\"font-size: 14pt;\"> {<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \/\/ Arrange<\/span><br \/>\n<span style=\"font-size: 14pt;\"> var testcalculator = new Calculator ();<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \/\/ Act<\/span><br \/>\n<span style=\"font-size: 14pt;\"> var result = testcalculator. SumofNumbers (1, 1);<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \/\/ Assert<\/span><br \/>\n<span style=\"font-size: 14pt;\"> Assert. Equal (result, 13);<\/span><br \/>\n<span style=\"font-size: 14pt;\"> }<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Asp.Net 5 ve MVC 6\u2019da \u00e7ok say\u0131da yenilik yap\u0131ld\u0131. Asp.Net 5 modern hizmetleri ve web uygulamalar\u0131n\u0131 desteklemesi bak\u0131m\u0131ndan ba\u015ftan a\u015fa\u011f\u0131 yenilendi. Asp.Net&hellip;<\/p>\n","protected":false},"author":3,"featured_media":9424,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,401],"tags":[],"class_list":["post-9423","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-haberler","category-web-tasarim"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/9423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=9423"}],"version-history":[{"count":3,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/9423\/revisions"}],"predecessor-version":[{"id":9444,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/9423\/revisions\/9444"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media\/9424"}],"wp:attachment":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=9423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=9423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=9423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}