Silverlight 4 Beta ile Commanding Yapısı

Silverlight 4 Beta ile beraber gelen özelliklerden biri de Command yapıları. Command yapıları özellikle WPF developer'larının alışık oldukları yapılar arasında fakat maalesef Silverlight tarafında bugüne kadar herhangi bir runtime seviyesinde implementasyon yoktu. Özellikle geniş çaplı iş uygulamalarının da artması ile uygulama içi kod yazım yapılarında ve disiplinlerinde farklı arayışlar kendini gösterebiliyor. Bu arayışlar sonucudur ki WPF tarafında MVP, MVVM gibi kod yazım tasarımları ortaya çıkar.

Silverlight tarafında da aslında uzun bir süredir bu gibi konularda harici kütüphaneler bulunuyordu. Benim bugüne kadar bu konularda yazı yazmamamın nedeni ise daha herhangi bir standardın pek de oturumamış olmasıydı. Bu yazımızda çok hızlı bir şekilde MVVM'in ufak bir kısmından rüzgar gibi geçerek Silverlight 4'teki Command yapılarına göz atacağız. Olabildiğince örnek üzerinden giderek yaptıklarımızın amacını da anlatmaya çalışacağım.

Tüm yapacaklarımızın amacı nedir?

Aslında kod yazım şekilleri ile ilgili genel geçer bir bakış attığınızda göreceksiniz ki en önemli hedeflerden biri farklı amaçlara hizmet eden kodları olabildiğince birbirinden ayırmaktır. Bu süreç tabi ki ek bir emek gerektirir ve bazen gereklidir, bazen ise değildir. Özünde bir projeye başlarken sorulması gereken soru bu farklı amaçlara hizmet eden kodları birbirinden ayırmanın söz konusu projede getireceği bir kazancın olup olmadığının yanı sıra kazancın bu ek süreç için harcanacak emeğe kıyasla toplamda hala bir kazanç olarak durup durmadığıdır. Tüm bu soruları sormadan herhangi bir projede kod yazım şekli ile ilgili genel geçer bir doğru kesinlikle bulunamaz.

Sadede gelirsek, bu makale boyunca anlatacaklarım sizin belki de bugüne kadar yazdığınız Silverlight projelerinde uyguladığınız stilin çok dışında olacaktır. Bu makalede anlatacağım uygulama geliştirme tarzı kesinlikle genel geçer bir doğru değildir ve her projede "profesyonel olalım" endişesi ile uygulanması gereken bir "guru tarzı" vs değildir :) Birer yazılımcı olarak göreviniz uygun şartlarda uygun araçlarla uygun çözümleri en düşük maliyet ve en yüksek verimlilik ile üretmek olduğunu unutmamanızda fayda var.

Uyarı bölümünü geçtiğimize göre gelelim konumuza. Bahsettiğim gibi genelde amacımız farklı amaçlara hizmet eden kodları birbirinden ayırmak. Buna bir örnek olarak XAML ile VB/CS kodlarının ayrı dosyalarda tutulmasını da verebiliriz. Oysa aynı dosyada da tutma şansımız var fakat yapmıyoruz. Neden? Çünkü XAML ile VB/CS'in amacı farklı ve ayrı yerlerde durmaları bize projelerimizin kod yazım süreçlerini yönetmemizde büyük katkı sağlıyor. İşte bu endişenin devamında UI (Kullanıcı arayüzü) ile ilgili kodların da veri katmanı ile salt görsel katman (XAML) arasında kaldığını düşünürsek tam da o noktada bir karışıklık kendini gösterebiliyor. İşte bu karışıklığı toparlayabilmek ve bilyonlarca event-handler vs ile uğraşmamak adına Commanding yapısını kullanabiliriz. Aman dikkat Commanding'in tek faydası tabi ki bu değil, kodun test edilebilmesi, görsel ekranlar ile görsel ekranlara veri bağlantısının yapıldığı kodun birbirinden tamamen ayrıştırılabilmesi, DataBinding mekanizmasını kolaylaştırması gibi birçok yan etkisi de var.

Devamı...

Silverlight 4 Beta'da sağ tuş desteği ve bir ContextMenü kontrolü

Silverlight 3 zamanlarında gelen en önemli isteklerden biri farenin sağ tuşu ile ilgili eventları yakalayabilmekti. Biliyorsunuz normal şartlarda herhangi bir Silverlight uygulamasına sağ tuş ile tıklarsanız karşınıza "Silverlight" diye bir menü seçeneği geliyor ve burada da Silverlight Runtime ile ilgili ayarlara ulaşılabiliyor. Uzun bir süre sağ tuş implementasyonunun pek de mümkün olmadığı ve güvenlik nedeni ile Microsoft'un bu gibi bir şeye izin vermeyeceği konusunda yorumlar internette gezindi. İtiraf etmek gerekirse ben de konsept olarak pek olası bir çözüm öngöremiyordum.

Silverlight 4'te fareye sağ tuş desteği!

Oysa bir de baktık ki Silverlight 4 ile (Beta) farenin sağ tuşuna dair eventleri de ayrıca yakalayabiliyoruz. Bu destek özellikle iş uygulamalarında çok anlamlı bir boşluğu dolduruyor. Kullanıcılara hali hazırda web ortamında bir "thinclient" deneyimi sunan ve sanki windows ortamındaki programları kullanıyormuşcasına zengin deneyimler sağlayabilen Silverlight'ın aynı hissiyatı devam ettirebilmesi adına farenin sağ tıklamalarına da uygun tepkileri verebilmesi çok önemliydi. Bu açığın kapatılıyor olduğunu görmek çok sevindirici.

Devamı...

Overloading Kavramı

Visual Basic.Net'te, aynı faaliyet alanı içerisinde, aynı isme sahip birden fazla methot bir arada bulunabilir. Ancak isimleri aynı oan methot'ların birbirlerinden ayırd edilebilmesi için parametrik yapılarının farklı olması zorunluluğu vardır. Nesne Yönetimli programlama tekniğinde bu kavram; "Fonksiyon Overloading" olarak bilinir. Parametrik yapının farklı olmasından kastedilen; fonksiyona geçirilen parametrelerin tr ve sayıca farklı olmasıdır. (Parametre değişkenlerinin, isimlerinin farklı olması yada geri dönüş değerlerindeki farklılık geçersizdir!)

Derleyici, aynı isimle tanımlanmış prosedür'lerden biri çağrıldığında ; çaırma ifadesindeki, prosedüre geçirilen parametrelerin tür ve sayılarına bakarak, tanımlanan metot'lardan hangisini çağırması gerektiğini anlar.

Örnek:

Aşağıdaki konsol uygulamasında parametrik yapıları farklı olan, ancak aynı isme sahip (Display) üç farklı metot bulunmaktadır. Display() metod, main içerisinden, farklı parametrelergeçirilmek süreti ile üç kez çağrılmaktadır.

Module Module1
Public Sub Display()
Console.Writeline("1. Display() metodu çağrıldı")
End Sub

Public Sub Display (ByVal s as String)
Console.Writeline("2. Display() metodu çağrıldı")
End Sub

Public Sub Display(ByVal s as String, ByVal i as integer)
Console.Writeline("3. Display() metodu çağrıldı")
End Sub

Sub Main()
Display("Deneme") '2. Çağrılır
Display("Deneme", 2323) '3. Çağrılır
Display() '1. Çağrılır
End Sub
End Module
 

Sınıf Ve Nesne Kavramları

Günlük hayatta işlerimizi çeşitli nesne kullanarak yaparız. Örneğin cep telefonu yapacağı işe göre tasarlanmış, çeşitli özellik ve işlevleri bulunan bir nesnedir. Gerçek hayattaki nesneleri tanımlamak istediğimzde; onların özellik, işlev ve davranışlarını tanımlayarak ifade etmeye çalışırız. Örneğin; çep telefonu belirli bir şekle, renge ve ağırlığa sahip telefon etme v mesaj önderme gibi işlevleri bulunan bir nesnedir. Şekil, renk yada ağırlık; cep telefonu nesnesinin özelliklerinden sadecebir kısmıdır. Nesne yönetimli pogramlama teknolojisinde bu kavram encapsulation olarak bilinir.

Bu nesneyi yada nesne grubunu diğerlerinden ayıran şey; onun üyesi olduğu sınıftır. Örneğin hangi marka olursa olsun bir ce telefonunu, bir buzdolabından rahatlıkla ayırd edebiliriz.

Örneğin Ümit adlı kişiin cep elefonu ile Gökhan adlı kişinin telefonları birbirinden o kadar farklı özelik veişlevlee sahip olabilirler ki, ortak yanlarıtelefon etmek ya da mesaj göndermek olabilir.

    Ümit'in Telefonu

  • Markası = ABC
  • Yapım Yılı = 2000
  • Rengi = Siyah
  • WAP = Yok
  • Gökhan'ın Telefonu

  • Markası = XYZ
  • Yapım Yılı = 2002
  • Rengi = Siyah
  • WAP = Var

Gördüğünüz gibi sayılan öelliklerin bir kısmı farklı, bir kısmıdaaynı olan 2 nesneden söz ediyoruz

Finaller Bitmiş ... Notlar Açıklanmış ....

Merhabalar Yeniden Sizleri Yalova dan selamlıyorum :) Karlı havada bembeyaz bahçelerden selamlar sunuyorum ki bu dönemi de atlattık tüm sınıf arkadaşlarıma son kalan 6 ayda başarılar diliyorum :)

01.02.2010 tar,h,nde koyulhisar da görüşmek üzere

Blog Sayaç
Tag Cloud
Visual Basic Refactoring Visual Basic Vb.Net Veritabanı Türleri Sql Diziler Visual Basic Diziler Dizileri Yeniden Boyutlandırma Kod Yazmadan Programlama Dreamweaver PHP İlişkisel Veritabanı Tasarımı Veritabanı Mysql Oracle Mssql Dizi Değişkenlerinde Kullanılan Methodlar SQL (Structured Query Language) Sql dili sql nedir Visual Basic 9.0 (2008) Extension Methods Visual Basic 9 Visual Basic 10 Index (Dizin) Kavramı Primary Key (Birincil Anahtar) Foreign Key (Yabancı Anahtar) Visual Basic de IIF ile Yeni IF arasındaki "I" farkı hakkında IF ve IIF Microsoft Microsoft Silverlight Silverlight Nedir Silverlight 4 Silverlight 3 Internet Explorer 8 Windows IE 8 IE 8 ASP.NET MVC Framework’e Genel Bakış Asp.Net Mvc Asp.Net Mvc Asp.Net 4.0 ClientIDMode HTML ID Framework 4.0 Sql Delete komutu Sql insert komutu sql update komutu sql select komutu Sayfa Genelinde Etkilenmeyen DIV Katmanı Div Css favicon Favicon yapımı Silverlight İle Streaming Servisleri Streaming Silverlight Silverlight Uygulamalarında Performans Silverlight Performans Final haftası gop universitesi kmyo koyulhisar koyulhisar myo ümit polat Vitabanı Yönetim Sistemleri Veritabanı Final Soruları gop gop koyulhisar myo Veritabanı Yönetim Sistemleri Final Sorularının Cevapları şiir hayat hayat felsefesi ölüm internet internet programcılığı php resim yükleme php resim upload blue-ray pioneer blue-ray disk windows 7 windows 7 tanrı modu GodMode Windows 7 GodMode 7 GodMode inegöl karlı hava eskişehir mehmet özdemir daron yöndem internetten para kazanmak cpc ppc adsense adtech adhood Google oop Sınıf e nesne kavramı Class kavramı Object Oriented Programming Overloading Kavramı Visual Basic.Net Silverlight ContextMenü ContextMenü Silverlight Sağ Tuş Desteği Silverlight 4 Commanding Commanding


Blogsa 1.0 ile olusturulmustur.