Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

ASP.NET MVC – An item with the same key has already been added

ASP.NET MVC modellerimizi yani data sınıflarımızı bind edebilmemiz için güçlü bir mekanizma sunuyor. ASP.NET MVC model deki bütün keyleri alıp bind ediyor. Eğer modeldeki property’lerde bir duplike olursa bu hatayı almanız muhtemel.
1- Modelinizde birden fazla aynı isimli property olabilir.
2- Modelinizi türettiğiniz base bir sınıf var ise ondan gelen bir property sizin alanlarınızı duplike ediyor olabilir.

Reklamlar

Ocak 25, 2013 Posted by | MVC | , | Yorum bırakın

MVC sunumum

Şirket içerisinde yaptığım MVC sunumunu aşağıda paylaşıyorum.
ASP_NET_MVC

Kasım 7, 2012 Posted by | MVC | , , , | Yorum bırakın

MVC – Avantajları (3)

MVC mimari deseni Microsoft’un  çıkardığı yeni bir anlayış değil, kökleri taa 1978 lere dayanıyor.( Smalltalk project Xerox PARC) . Bu kadar popüler olmasının sebebi ise ; doğal akıştaki gibi hareket etmesi ; http request ve response yapısı.
1-) MVC Viewstate kullanmadığı için giden-gelen mesajların boyutu küçülüyor.
2-)Uygulama Model-View-Controller şeklinde bölündüğü için kod karmaşasanın önüne geçilir.
3-)FrontController tasarım deseni sayesinde bütün istekler merkezi bir controller tarafından yönlendirilebilir.
4-)Test Driven Development desteği hat safhadadır.
5-)Takım çalışması için ideal bir yapı sunar. Ayrıca tasarımcı ve developer’ın ayrı çalışabilmesine olanak sağlar.
6-)Güçlü routing yapısı sayesinde arama motorları tarafından kolayca indekslenebilir ayrıca daha anlaşılır bir url çıktısı elde edilir.
7-)ASP.NET’in güçlü taraflarını kullanmaya devam ediyor. Örneğin .NET platformunun kod yazmadaki kolaylığı ,master page,authentication mekanizması, server kontrolleri vs.
8-)Open Source olması. Kodunu http://aspnet.codeplex.com linkinden indirebilirsiniz.
9-)Browser uyumluluğu daha iyi.

Ekim 5, 2012 Posted by | MVC | , , | Yorum bırakın

MVC – Günümüzde Web Yazılım Geliştirme (2)

Web forms release olduğu günden bu yana web geliştirme teknolojileri Microsoft dışında da hızla ilerlemeye devam etti. Son yıllarda web standartları uyumu için  web browser ,HTML,CSS ve javascripte birçok gelişmeler oldu.
İşte bu arada da Representational State Transfer (REST) uygulama uyumluluğu anlamında baskın mimarilerden biri olmaya başladı. REST uygulamayı bir kaynak(URI) olarak tanımlar ve bu yapı arama motorları tarafından indekslenebilmeyi sağlar.
Bugünün web uygulamaları sadece HTML olarak servis edilmiyor , bunun yanında JSON veya XML data olarak da servis ediliyor.(AJAX,Silverlight,smartphone uygulamaları). Bu REST tarafından doğal olarak yapılabiliyor.
Son zamanlardaki çevik yazılım geliştirme (Agile ) metodolojileri bir çok yeni kavram hayatımıza soktu. TDD : Test-Driven Development, BDD: Behavior-Driven Development vs. Buradaki konseptimi asp.net web formlarda unit test yapmak neredeyse imkansızdı ancak MVC birim testler kolaylıkla yapılabiliyor. Bunun dışında UI test araçları içinde MVC oldukça kullanışlı çünkü page layout u değiştirince bütün html id leri değişmiyor. Web forms da ise page layout da bir değişiklik yapıldığında id ler değiştiği için test aracını tekrar düzenlemek gerekiyor.
Open source ve Independent Software Vendor (ISV) community’si  ALT.NET çatısı altında bir çok araç üretiyor ve hemen hemen hepsi MVC’ye destek veriyor.
ALT.NET : Nisan 2007’de David Laribee ‘nin ortaya atılmış bir terimdir. Java dünyasından esinlenilerek oluşturulan .net platformunun özgür topluluğudur denilebilir. “Basitlik”, “Birlikte çalışma” ve “Hizmet” kavramları üzerinde durulur. Detaylı bilgiyi : http://analystdeveloper.com/blogs/gurkan/archive/2008/09/26/3551.aspx sitesinden elde edebilirsiniz.
Örneğin ;
–  Unit testing frameworks (NUnit and xUnit)
– Mocking frameworks (Moq and Rhino Mocks)
– Inversion-of-control containers (Ninject and AutoFac)
– Continuous integration servers (Cruise Control and TeamCity)
– Object-relational mappers (NHibernate and Subsonic)

Japonya’da geliştirilen Ruby isimli bir programlama dili MVC’nin altyapısına ilham kaynağı oldu . Ruby platform bağımsız her yerde çalışabildiği için bir çok web programcısı bu dili projelerinde kullanılır oldu ve bir anda çok popüler hale geldi.

Sinatra isimli bir kütüphane ile Ruby ile kod yazmak kolaylaştırılmış.

Bir diğer konu ise Node.js(Javascriptin server tarafında çalışan versiyonu). Bunun sayesinde sistem kaynakları verimli çalışabiliyor. Client’dan istek alınıyor ve gönderiliyor. Server tarafında iş bittiği anda cevap dönüyor böylece thread beklemiyor. (Javascript callback)

Ekim 4, 2012 Posted by | MVC | , , , , , , | Yorum bırakın

ASP.NET Web Forms’dan MVC’ye Geçiş (1)

Arkadaşlar merhaba, MVC hakkında bir kaç makale serisi yazma niyetindeyim fırsat buldukça.  Bu yazıda öncelikle MVC’ye kısa bir giriş yapacağız. Öncelikle .net web geliştiricileri için MVC’nin radikal bir geçiş olduğunu belirtmek isterim. Öncelikle MVC temiz mimari, tasarım desenleri ve test edilebilirlik üzerinde duruyor. ASP.NET MVC ,asp.net web sayfalarının tam olarak bir alternatifi diyebiliriz, MVC çevik programlamanın ve asp.net in iyi taraflarını harmanlamış bir yapıdır. ASP.NET ilk çıktığında amacı kullanıcıyı HTML ve state’less yapısından kurtararak windows programlama mantığına yakın bir kodlama rahatlığına kavuşturmaktı. Bunun için server-side kontrolleri hazırladı ve VIEWSTATE ile state’leri yönetebilir hale geldi. Örneğin butonun click eventini .cs uzantılı dosyada yani server tarafında handle edilebilir hale geldi.
Peki Microsoft neden böyle bir yapı kurmaya kendini mecbur hissetti dersiniz. Öncelikle 2002 yılında piyasaya sürülen Web Forms 1.0’ın eksilerine şöyle bir göz atalım.
1- ViewState’in ağır olması : Her ne kadar bir avantaj gibi olsa da veri büyüdükçe client ile server arasında gidip gelen verinin boyutu 100lerce kilobyte’ı bulabiliyor.

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTc1MDU0Nzg9Tkt2Gz2HkU/i" />

2-Karmaşık Page LifeCycle : Bir çok yazılımcı tam olarak bu yaşam döngüsünü kavrayamadığı için yazdıkları kodlarda beklemedikleri hatalarla karşılabiliyorlar.(bkz:page life cycle)
3- Kavramların mantıksal olarak doğru ayrılmamış olması, yani kod ile html’i birbirinden tamamen ayırmaya çalışması ancak bunun pratikte zor olması.
4- HTML üzerinde hakimiyet kurulamaması : En basitinden javascript ile kontrollere saçma ek isimler eklenerek ulaşılabilmesi.
5-Zayıf abstraction
6- Zor test edilebilirlik.

Tabi Microsoft durmadı çalıştı 2005 yılında 2.0 ‘ı çıkardı, 2007 de zeygin user interface Web 2.0/AJAX  akımına kapılarak AJAX’ı piyasaya sürdü. Daha sonra da 4.0 ile developerların hayatını kolaylaştırmaya devam etti. Ancak hala web form ların limitleri vardı.
Devam edecek ….

Ekim 4, 2012 Posted by | MVC | , , , , , | Yorum bırakın