Angularjs konusunda birkaç makale okudum, nedir ve ya ne değildir konusunda biraz fikrim oluştu gibi. Ama asp.net mvc ile kullanırken ne gibi bir kullanım kolaylığı sağlayacağını tam olarak anlayamadım. Ya da angularjs 'yi yanlış anladım.

Angularjs nin yaptığı herşeyi zaten razor içersinde, hemde strongly-typed olarak yapabiliyorken bunu neden bir js framework 'ü ile yapmalıyım?

Mesela BURADAKİ MVC örneği çok saçma bir örnek, saçma çünkü aynı şeyi strongly-typed ve visual studionun intellisense özelliklerini kullanarak, daha rahat ve okunabilir bir C# koduyla yapabiliyorum.

SinglePageApp ve MobileApp projelerinde kullanılması gerektiğini kısmen anlayabiliyorum (SinglePageApp 'de hala anlamadığım kısımlar var).

AngularJS 'yi, Asp.net mvc ile neden kullanmalıyım? Avantajı ve dezavantajı nedir? (Kullanım kolaylığı, yetenek ve zaman kazancı açısından)

GÜNCELLEME

Sitede java uzmanı daha çok (özellikle de angularJS ile ilgilenen). Bu yüzden soruya ekleme yapayım. Tam bilmiyorum ama bu soru Spring MVC içinde geçerli olabilir sanırım. Spring mvc içinde cevap alabiliriz.

soruldu: 01 Eyl '14, 07:38

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

değiştirildi: 02 Eyl '14, 02:22


AngularJs aciklamasi yapmadan once AngularJs'yi Java (Spring MVC) ve Python (Pyramid framework) ile kullandigimi belirteyim.

AngularJs client tarafinda 3 lu(html, css, js) ile calisan bir framework ve bu yuzden backend'de kullanilan teknolojilerden ve dillerden bagimsiz bir framework. Ister Node.js ile ister diger diller/platformlarla calisabilir.

AngularJs hakkinca cok uzun aciklamalar ve ornekler var. Ama baslarken herkesin sordugu sorulari ben de sormustum, neden uzman oldugum server tarafinda calisan dillerle calismak varken type zorunlulugu olmayan bir script dilinde proje yazmaliyim? Bu sorunun cevabi web ve mobil projelerin evrilmesi ile ilgili. Herseyden once ASP.Net veya JSF gibi frameworklerde componentler server tarafinda calisir, hersey server tarafinda render edilip, validate yapilip client'a gonderilir. Spring MVC veya .Net'de daha hafif html tabanli template sistemleri ile client tarafli teknolojiler kullanilabilir. Ama bu durumda client rendering ve ajax call islemlerini server tarafli yonetmeniz gerekecektir. Ornegin Spring MVC (sanirim .Net MVC'de de benzer yapi var) server tarafinda data islemleri yapar datayi verilen template'e rendering yapar ve client a response gonderir. Iste burda AngularJs farkli calisiyor.

Oncelikle Stateless (durumsuz) Single Page Application olarak server rendering islemlerinden kurtuluyorsunuz, bunu AngularJs kendisi yapiyor, isterseniz data binding ile su data degisirsen su islemleri yap gibi sartlar da kullanabiliyorsunuz. Bu tur ozellikler AngularJs projesinin her alette ve platformda calismasini sagliyor (mobile, tablet, tv, desktop vb.) Bu durumda server tarafinda haberlesme rest web servicelerle JSON ile oluyor.

Ikinci onemli ozellik ise web components: AngularJs ile cok kolay web componentleri yazip kullanabiliyorsunuz. Degisik bircok dilde component yazdim (Java Swing, JavaFX, Gwt, JSF, Vaadin, .Net 2.0) ama hicbirisinde AngularJs deki gibi hizli ve hafif calisan component yazilmiyor. AngularJs Directives ve filters hem sizi jQuery ve DOM manupulasyonlarindan kurtariyor hem de takim olarak calisiyorsaniz herkesin ayni component tag'larini kullanarak gelistirme yapmasini sagliyor. DI, TDD, moduler yapi ve daha bircok AngularJs arti ozellikleri sayilabilir.

Negatif yanlarindan birisi ise JavaScript ile dinamic script dili zorluklari ve Single Page Application security yonetimi, session, timeout kontrolu gibi seyler sayilabilir.

permanent link

cevaplandı: 03 Eyl '14, 14:30

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

Web üzerinde, masaüstü gibi çalışan yazılımlar için angular neden kullanılır bunu anlıyorum. Kesinlikle avantajlı, benim merak ettiğim gelişmiş web projelerinde (çok fazla ajax işlemlerinin olmadıgı) kullanmak mantıklı mı? Özellikle business projelerde dökümantasyonu çok iyi olmayan projelerde js kodlarını yönetmek zorlaşmıyor mu? Dediğiniz gibi template 'e render ediyor. Yani ajax işlemlerinde fazladan bu desen kadar bir data trafigi oluyor. Ama kodun kullanışı ve temizliği açısından çok birşey katmıyor. Hatta template ile çalışmak daha yönetilebilir ve modüler geliyor sanki bana ++

(03 Eyl '14, 15:13) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

++ özellikle asp.net mvc de view sayfaları bile test edilebilir modüler bir yapıda. Angular her zaman kullanılmalı mı? yoksa projeye göre mi tercih edilmeli? Yük oldugu zamanlar var mı? Umarım anlatmak istedigimi anlatabildim.

(03 Eyl '14, 15:16) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

@alirza-adyahsi oncelikle AngularJs user interactions yogunluklu uygulamalar icin iyi. Ozellikle hashbang url (!#) kullanimindan dolayi direk SEO uyumlu degil, ornegin bir e-commerce store kismi icin AngularJs uygun degil diye dusunuyorum, ama e-commerce admin bolumunde cok kullanisli. Ozellikce CRM, ERP benzeri projelerde kullaniciya rahat kullanim sagliyor.

(03 Eyl '14, 15:23) CemIkta ♦ CemIkta's gravatar image
1

Hayir tam tersine JS projeleri server side calisan frameworklerden daha karmasik olabiliyor, js, html, css, layout dosyalari, js testleri, hatta herseyin tam calistigindan emin olmak icin selenium testleri projeyi komplex hale getiriyor. Bu yuzden cogunlukla proje backend application, frontend application gibi ayri projeler olarak yaziliyor. Testlerde hem backend app/web server i calistirmaniz, hem de local AngularJs yi deploy(Grunt serve) etmeniz gerekiyor. Node.js, Grunt, Bower package manager gibi yapilar bazen karmasik olabiliyor!

(03 Eyl '14, 15:28) CemIkta ♦ CemIkta's gravatar image

Fakat soyle bir rahatligi var, projenin yuzde 60'i native html tabanli oluyor, backend cok hafifliyor, boylece backend de business logic de yogunlasma sansiniz oluyor, aslinda business logic rest api'ye donusuyor. Native html olunca projenin view kisimlarini programci olmayan web degisner'lar yapiyor, programci renklerle, css'lerle ugrasmiyor. Bu bir ekip isi, maalesef Türkiye'de firmalar bu tur calisma tarzina pek alisik degil, cogunlukla Türkiye'de icon, grafik, renk islerini de programci mecburen yapiyor!

(03 Eyl '14, 15:33) CemIkta ♦ CemIkta's gravatar image

Teşekkürler hocam...

(03 Eyl '14, 15:33) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
6 yorumdan 5 tanesi gösteriliyor hepsini göster

en basitinden spa(single page application)'ların kullanıcı(musteri) tarafındaki avantajlarını gormek gerek: desktop/native app deneyimi yasatmasi. server tarafina sadece veri icin gitmesi dolaysıyla azalan yanıt suresi, bandwidth artan performans, interaktivite ve offline çalışabilme. ki artık moden web'den kasıt spa'lar, web app'ler. misal google kendi servis dashboard'larını(gmail, analytics, admob, adsense hatta google play) spa'ya taşıdı, taşıyor.

bence artık aspnet mvc, spring mvc vs gibi server-side web çatılarının kullanımı azalacak angular, backbone, knockout vs gibi mv* temelli client-side javascript framework'lerinin kullanımı artacak. tabii eldeki takımın background'u, projenin isterleri vs kosullara gore server-side cozumler halen kullanıyor, kullanıcak da, hibrit cozumlere de gidilebilir.

ben sahsen client-side teknolojileriyle ugrasmayı daha cok seviyorum. web'de iki tarafı da(js+html ve controller) dusunmek, yonetmek(ajax cagrilari, routing, validations, view models vs) durumunda kalmak benim hosuma gitmiyor. angular ile server tarafını rest ile kesin cizgilerle ayırıp consume ediyorsun. bunun yanında sundugu mvvm yapısı ile wpf'deki gelistirme ortamına yakın bir ortam sunuyor bu da benim için çok cazip bir durum.

permanent link

cevaplandı: 02 Eyl '14, 05:51

gturedi's gravatar image

gturedi
2.8k41538
cevap kabul oranı: 26%

Kusura bakmayın ama açıklama webte ki makaleler ile aynı:) böyle iyi, şöyle kolay falanda bunların neye göre oldugunu anlamıyorum. Aslında sorun da bu. Bunların kullanım kolaylığı açısından asp.net mvc ye hiçbir üstünlüğü veya kolaylığı yok. Örnek vererek açıklarsanız belki daha iyi anlarım. Web projesi zaten sadece veri için server 'a gider :) başka neden server 'a gitsin ki? Angularjs nin yaptığı işi asp.net mvc de daha kolay yapabiliyorum ve dediğim gibi strongly-typed ve intellisense de çabası. Bu arada microsoft mvc mimarisine geçtikten sonra knockoutjs yi varsayılan projeden kaldırdı.

(02 Eyl '14, 06:19) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Belkide sorumu yanlış anlamış olabilirsiniz. Angularjs her zaman için iyi bir çözüm mü? Bir mvc projesinde, bir işi kolayca yapabiliyorken, ekstradan bir framework kullanmanın mantıgı ne?

(02 Eyl '14, 06:20) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Mobil uygulamalar için neden kullanmalıyım sorusunun cevabını bulabiliyorum, ama asp.net mvc için neden kullanmam gerektigini bulamıyorum. Bu soyledigim sadece mvc için gecerli, yani otomatik model binding yapabilme yetenegi, web api 2 gibi bir sunucu tarafı destegi olan, herseyin zaten otomatik oldugu, razorun içerisinde C# modelinin her özelligine sahip olunan bir sistemden bahsediyorum.

(02 Eyl '14, 06:22) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Yani sorum bir teknolojiye özel, genel anlamdaki web projelerini kapsamıyor.

(02 Eyl '14, 06:23) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
2

"Web projesi zaten sadece veri için server 'a gider :) başka neden server 'a gitsin ki?" gider ama nasıl gider? callback'lerle boğuşursun, dom manipulasyonuna girersin, view'in icini koda bogarsın bunun yanında server tarafını handle etmek ayrı bir dert. bildigin alistigin yapı tabii ki avantajlı kolay gelir. burda uzaktan bakmak yerine elini koda bulaman gerek biraz todo vs ornek yapman gerek ki daha iyi kavrayabilesin durumu. inteintellisene'i da gozunde cok buyultme fani dunya isi bunlar.

(02 Eyl '14, 06:31) gturedi gturedi's gravatar image
1

8 ay kadar oldu visual studio'yu açmayalı, template'lerde son durum ne bilmiyorum, knockout'un deprecated olması makul angular'ın golgesinde kaldı zira. bir de dış teknolojilere açık olmak gerek; evet ms'in geliştirme araçları ortamı çok iyi ama bu demek degil ki tek dogru ms ve onun teknolojileri.

(02 Eyl '14, 06:32) gturedi gturedi's gravatar image
2

"angular dependcy injection uzerine kurulmustur, bu da test edilebilirligi arttırır". simdi sen tdd uygulamayan, birim test yazmayan , test konusunu onemsemeyen biri olsan ve ben bunu sana avantaj olarak sunsam ne kadar anlamlı olur? o yuzden misal bir todo uygulamasını hem mvc ile hem de angular(istemesen de) ile gelistir farkını kendi acından gor derim.

(02 Eyl '14, 06:43) gturedi gturedi's gravatar image

http://www.asp.net/web-api/tutorials/hands-on-labs/build-a-single-page-application-(spa)-with-aspnet-web-api-and-angularjs Bu mvc için yapılmış en iyi örnek, bunu angular kullanmadan daha az ve temiz kodla yaparım. Bence asp.net-mvc konusunda pek fikir sahibi değilsiniz. Verdigim ornegi hatta hiç değiştirmeden, angular kodlarını kaldırın yine çalışır. Html deki {{}} kod blokları yerine @model koydugunuzda örnek yine calışacaktır. Sadece 1 tane api cagıran ajax blogu ile. Boylece bu ornegi, angular kodları kadar azaltmış oluyorsunuz ve yine strongly-typed(burası cok onemli) ve intellisense :)

(02 Eyl '14, 06:43) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

web api, partialviews ve auto-model binding'in oldugu yerde bir js framework'ü gereksiz kalıyor sanki...

(02 Eyl '14, 06:45) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Sorularımı yeni bir teknolojiyi kullanmak istedigimden soruyorum. Amacım kullanmış olmak için degil, sadece yeni bir teknolojiyi amacına uygun, yerinde ve zamanında kullanmak istiyorum. Angularjs 'yi cordova ile mobil uygulama geliştirirken kullanıyorum. Sadece soruma onyargı ile yaklaşmayın. Acık kaynak projelerim var githubda, TDD ile geliştirdiklerim de var. Ve hemen hemen hepsinde DependencyInjection var. DI ve TDD, server dillerinde daha güçlüdür(uygulana göre de değişir tabi). MVC6 ile DI toolları zaten otomatik gelmiş olacak. Amacım aynı işi yapan seyleri bir arada kullanmamak

(02 Eyl '14, 06:51) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
10 yorumdan 5 tanesi gösteriliyor hepsini göster

bana onyargılı olmayın diyorsun adamım ama sen bakıs acını sorguluyor musun, diyalogu bastan asagı bir oku istersen. oturup bildigim kadar bir sey yazıyorum, mesai arasında faydalı olsun diye "kusura bakmayın ama mvc hakkında bilgi sahibi degilsiniz" diyorsun. kardesim ben mvc'yi oyle github uzerindeki introduction level'daki sample uzerinde best pratice nidaları atarak degil ulkemizin onde gelen bir eticaret sitesinin altyapısında, profesyonel olarak calısırken kullandım, bildiklerimi uyguladım; mvc'yi ne kadar bildigimi sana sormam, sallamam.

koca angular'ı html introduction egitimi icin listeme ornegine indirgemissin, kodu degistirmeden aynısını @model degisimiyle yaparım diyorsun ee o zaman ne onemi kaldı kardesim two-way binding, command, mvvm pattern'inin, template'leri client tarafında render etmenin vs. bu adamlar mal mı, msdn'de yazısı yayınlanan adama rahat mı batıyor da angular ile ria olayına giriyor?

hatta bir ara isin icine mvc web api'yi de katmışsın, adamım sakin ol kavramları bu kadar birbirine gecirme.

"Web projesi zaten sadece veri için server'a gider" diye alaycı cumleler kuruyorsun guzel kardesim sen kucuk bir click olayını karsılamak icin koca sayfayı yenilerken sadece saf data mı geliyor?

son dakika verdigin "Ethics 101" dersi icin tesekkurler, benden bu kadar uzatmanın alemi yok; sana puanım 9: http://www.youtube.com/watch?v=vynH4JARbEs

permanent link

cevaplandı: 02 Eyl '14, 10:02

gturedi's gravatar image

gturedi
2.8k41538
cevap kabul oranı: 26%

değiştirildi: 04 Eyl '14, 03:47

peki kusura bakmayın :)

(02 Eyl '14, 15:18) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×81
×33

Soruldu: 01 Eyl '14, 07:38

Görüntüleme: 3,086 kez

Son güncelleme: 04 Eyl '14, 03:47

powered by BitNami OSQA