19 Haziran 2008 Perşembe

WPF Event Modeli ve Routed Event

WPF Event Modeli ve Routed Event
WPF içerisinde event’ları(olay) oluşturmak herhangi bir .NET Teknolojisiyle(Windows Forms veya ASP.NET) aynı şekildedir. Bu event’lara örnek olarak butonun tıklanması, textBox’a text girilmesi, listBox’dan eleman seçilmesi v.s. sayılabilir.

WPF de olay yöneticilerini(event handler). çift yönlü tanımlanır. Önce, ASP.NET veya Windows Form’lar da olduğu gibi XAML kod içerisine bildirim deyimi eklenir. Daha sonra yapılan bildirime göre kod dosyası içerisinde (örneğin xaml.cs,xaml.vb) olay prosedürü oluşturularak event handler tanımlanır. Bu event handler tanımlama işlemi ASP .NET’deki tanımlama(code-behind) işlemine oldukça benzerdir.

Aşağıda ki örnekte buttonun click olayı için event handler oluşturma işlemini yapalım.
Önce xaml içerisinde bildirim işlemini yapalım.

Daha sonra xaml.cs dosyasında code behind yöntemi ile event handler’ı oluşturalım.

Şimdi ise gelelim asıl meselemize. WPF ile beraber gelen yeniliklerden biri olan routed event’dan bahsedelim.

Routed Event

WPF birleşik kontrolleri hızlaca tasarlayabilmenizi ve olaylarını kolayca yönetebilmenizi sağlamak amacıyla routed eventlar’ı sunar.

Routed event, sadece kontrol üzerindeki event’ı tetiklemek yerine, root kontrole bağlı tetiklenen child kontrolle beraber root kontrolun de handler’larını başlatan bir olaydır.

3 çeşit routed event vardır Bunlar;
  • Direct Event : Direct Event, tek kaynak üzerinden tetiklenen basit olaylardır. Bu olaylar WPF routed-event sistem ile register edilmiş olaylar hariç standart .NET olaylarına çok yakındır.
  • Tunneling Event : Tunneling Event, olay tetiklenmeleri root kontrollerden child kontrole doğru hareket eder. Tunnelling Event ile Preview öneki ile belitilen eventlar(PreviewKeyDown) tetiklenir.
  • Bubbling events : Bubling Event, Tunneling Event karşıtıdır ve olay tetiklenmeleri child kontrolden root kontrole doğru hareket eder. Bubbling Event ile standart eventler(Click) tetiklenir.

Şimdi bir örnek yapalım. Forma 1 Button ekleyelim Button’un içerisine StackPanel, StackPanel’in içerisine 2 adet Button ekleyelim. Form aşağıdaki gibi olacaktır.

Xaml kodları aşağıdaki gibi olacak.



Window1.xaml. cs dosyasına aşağıdaki kodları ekleyin.
Projeyi çalıştırın. Önce Button1’i tıklayın. Sadece “Button1 Tıklandı” yazılı bir mesaj kutusu karşınıza çıkacaktır. Daha sonra Button 2’yi tıklayın. Sırasıyla "Tamam butonu tıklandı." ve “Button1 Tıklandı” yazılı iki mesaj kutusu art arda gelecektir. Dikkat ederseniz Button2 tıklandığında hem button2_Click hem de button1_Click event handler’ları tetiklenmiştir.
Bu makalemde WPF Event Modeli ve Routed Event’ı inceledik. Başka bir makelede görüşmek üzere...

WPF(Windows Presentation Foundation) Giriş - 3

Şimdi basit bir basit bir WPF Browser Application uygulaması oluşturalım.

Sırasıyla Visual Studio .NET 2008 -> New Project -> WPF Browser Application komutunu çalıştırın.

WPF Browser Application uygulamalarında kontroller Page tag’leri içerisine eklenir.

Page ToolBox’dan bir buton ekleyin. XAML kodları aşağıdaki gibi değişecektir.

Grid içerisinde Button tagi eklendiğini görüyoruz.

Button’u çift tıklayarak Buttonun Click olayına “MessageBox.Show("Hello World");” yazalım.
Page1.xaml.cs dosyasının görünümü aşağıdaki gibi olacaktır.


Projeyi çalıştırın. Sonuç aşağıdaki gibidir.

Standart ve Browser Applications oluşturduğunuz da VS .NET 2008 otomatik olarak Application derived class’ını oluşturur. Bu class içerisindeki StartupUri özelliğini kullanarak başlangıç page veya window’unu belirtebilirsiniz. Ayrıca bu class da uygulama düzeyinde kaynakları belirtebilirsiniz. Bu class XAML kodları aşağıdaki gibidir.


Window tag’i standart Windows uygulamalarının root tag’i dir. Page ise browser tabanlı uygulamaların root tag’i dir. Standart uygulamalar da hem Window hem de Page tag’ini içerebilir. WPF browser uygulamalar ise sadece page tag’i içerebilir.
Bu makalemde WPF’e giriş yaptık. Ayrıca WPF uygulama tiplerinden bahsettim. WPF hakkında yazmaya devam edeceğim.
Başka bir makalede görüşmek üzere.

WPF(Windows Presentation Foundation) Giriş - 2

Şimdi basit bir basit bir WPF uygulama oluşturalım.
Sırasıyla Visual Studio .NET 2008 --> New Project --> WPF Application komutunu çalıştırın.
Standart WPF uygulamaları içerisinde kontroller Window tag’leri içerisine eklenir.


Forma ToolBox’dan bir buton ekleyin. XAML kodları aşağıdaki gibi değişecektir.



Grid içerisinde Button tagi eklendiğini görüyoruz.
Button’u çift tıklayarak Buttonun Click olayına “MessageBox.Show("Hello World");” yazalım.
Window1.xaml.cs dosyasının görünümü aşağıdaki gibi olacaktır.



Projeyi çalıştırın. Sonuç aşağıdaki gibidir.


WPF(Windows Presentation Foundation) Giriş - 1

WPF(Windows Presentation Foundation) Giriş

Microsoft, .NET Framework 3.0 ile birlikte 4 önemli altyapı sunmuştur. Bunlar Windows Presentation Foundation(WPF), Windows Communication Foundation(WCF), Windows Workflow Foundation(WF), Windows CardSpace(WCS) dir. .NET Framework 3.0, .NET Framework 2.0 ile birlikte yukarıda bahsettiğim 4 altyapıyı da içerir. Aslında .NET Framework 3.0, .NET Framework 2.0’dan sonra çıkan ara bir framework dür. Çünkü Visual Studio .NET 2008 ile beraber Framework 3.5 gelir. Fakat Visual Studio .NET 2005’in Framework’ü ise .Net Framework 2.0 dır.

Bu makalemde WPF(Windows Presentation Foundation) giriş yapacağım. Ayrıca WPF proje tipleri hakkında basit uygulamalar yapacağım.



WPF, Windows işletim sistemi içerisinde client(istemci) uygulama geliştirmek için kullanılan yeni nesil sunum(arayüz) sistemidir. WPF ile basit bir kelime işlemcisinden tutun kurumsal düzeyde media player uygulaması geliştirmeye kadar çeşitli Windows tabanlı uygulamalar geliştirmek için kullanabilirsiniz.

WPF ile standart windows uygulamaları veya web browser üzerinde çalışan uygulamalar geliştirebilirsiniz. WPF’in amacı modern grafik donanımı avantajlarını kullanan vektör tabanlı render motoru ve bağımsız çözünürlük sağlamaktır.

WPF’in yetenek ve özellikleri aşağıdaki gibidir.

  • XAML-tabanlı kullanıcı arayüzü

  • Sayfa Yerleşimi Yönetimi

  • Veri Bağlama

  • 2-D ve 3-D grafik

  • Multimedya

  • Animasyon

  • Döküman ve Yazdırma

  • Güvenlik

  • Erişilebilirlik

  • Lokalizasyon

  • Windows Form kontrollerle birlikte çalışabilme

WPF ile kullanıcı arayüzü oluşturmak için XAML(Extensible Application Markup Language) kullanılır. XAML markup bir dildir. Arayüz tanımları XAML içerisinde oluşturulur ve .xaml uzantılı dosyalarda saklanır. Aşağıda Buton eklenmiş bir formun XAML kodları gösterilmektedir.



WPF ile 2 tip uygulama tipi sunar. Bunlar Standart ve Browser Applications uygulamalardır. Stand-alone uygulamalar geleneksel Windows uygulamaları geliştirmek için kullanılır. Browser Applications ise Web Browser içerisinde çalışabilen uygulamalar geliştirmektir.

14 Haziran 2008 Cumartesi

SQL Server 2005 Analysis Service 1 (Giriş)

SQL Server 2005 Analysis Service 1 (Giriş)

Bu makalemde SQL Server 2005’in en önemli servislerinden biri olan SQL Server Analysis Service giriş yapacağım. Öncelikle Analysis Service ile başlayalım. Analysis Service güçlü bir OLAP motoru olarak başlamış fakat çok daha fazla büyümüştür. Günümüzde Analysis Service Data Mining de kapsamaktadır.
Öncelikle OLAP ile OLTP veritabanı farklılıklarına bir göz gezdirelim.

OLTP veritabanları (On Line Transaction Processing), genellikle RDBMS(Relational Database Management System = İlişkisel VeriTabanı Yönetim Sistemi) olarak tasarlanır. RDBMS, veritabanlarındaki ilişkileri yönetmekle, datanın doğru bir şekilde kaydedilmesiyle ve bütün durumlarda hatta system failure durumunda bile datayı kurtarmakla sorumludur. OLTP, Update hızlarının yüksek olduğu bankacılık,online bilet satışları ve e-ticaret sistemlerinde kullanılır. Bizim standart uygulamalarımızda kullanacağımız veritabanı tipi OLTP dir.

OLAP (On Line Analytical Proccessing), büyük ölçekte datalarla çalışılan istatistiksel uygulamalarda kullanılır. Verilere çok hızlı bir şekilde erişmek ve çok boyutlu analiz ihtiyaçlarını yerine getirmek için kullanılır. Genellikle OLAP sistemlerde arka tarafta bir OLTP çalışır. OLAP veritabanları, “Pirinç fiyatlarında %10 indirim yapsak ve genel giderlerden %3 kısarsak yıllık karımız ne kadar değişir” gibi senaryolar için kullanılır.

Analysis Service Giriş

Veri Analizine niçin ihtiyaç duyarız?

Firmalar yaptıkları işin performans değerini ölçmek için veri analizine ihtiyaç duyarlar. Firmalar veri analizi yaparak kar ve zarar değerlerini, birim maliyetlerini hesaplayabilirler. Örneğin bir üretim firması hata değerlerini görebilir veya bir havayolu firması doluluk oranlarını takip edebilir.

Firmalar iş trend’lerini(gidişatlarını) veya sorunları görmek için veri analizlerine ihtiyaç duyarlar. Böyle bir durumda firmanın karar yetkisine sahip kişiler görüşerek, hangi iş trend’inin başarılı olduğu ve hangi sorunların var olduğu analiz edilir veya çözümlenir.

Firmalar öngörücü(ileriye yönelik) modeller tasarlayarak, politikalarını belirlemeye ihtiyaç duyarlar. Öngörücü modeller eski dataya dayanarak gelecek için sonucu tahminleyen modellerdir. Örneğin bir sigorta şirketi her bir talep hakkında detaylı bilgileri toplar ve öngörücü modeller ile bu dataların içerisindeki sahte talepleri analiz edebilir. Bu dataları soruşturma memurları ilgili soruşturmalarda sonradan kullanabilir.

Yaygın Kullanılan Veri Analiz Çözümleri


İlişkisel Raporlama :
İlişkisel Raporlama, ilişkisel OLTP(Online Transaction Processing) veri kaynaklarındaki datayı anlamlı bir şekilde raporlamak için kullanılır. İlişkisel Raporlamaya SQL Server Reporting Services örnek verebiliriz. İlişkisel Raporlama senaryoları ile dataları kullanıcıya hızlı ve etkin bir şekilde özetleyebiliriz. İlişkisel Raporlamayı çeşitli farklı senaryolarda kullanabilirsiniz. Bunlar:Şirket içi raporlama kullanılabilir. Örneğin şirketin finans raporları, şirketin finans departmanı çalışanlarına ve yöneticilere paylaşılabilir. Veya şirketin ürün raporları tüm çalışanlar ile paylaşılabilir. İlişkisel Raporlama şirketler arası raporlamada da kullanılabilir. Bu senaryonun kullanılabilmesi için şirketler arasında extranet(şirketler arası internet) yapısının olması gerekmektedir. Bu senaryo ile merkez firmanın ürün raporları, iş ortağı diğer firmalar ile paylaşılabilir. Portallar ve uygulamalar içerisinde kullanılabilir. Örneğin CRM (customer relations management) , iş veya üretim uygulamalarında raporlama bileşeni olarak kullanılabilir.

OLAP :
OLAP sistemler datayı çeşitli kategorilere ve düzeylere göre depolar veya kümeler. Bu biçim standart OLTP raporlama uygulamalarına göre daha sezgisel ve interaktif analiz için daha uygundur.

Data Mining :
Data Mining, datalar için model(patterns) ve ilişkileri(correlations) kullanarak geniş çapta otomatik arama işlemleri yapar. Bir iş yöneticisi sorumlu olduğu bölümün ana hedef ve etkilerini biliyor olsa bile, bir data mining algoritması her bir hedef için daha çok bilgi verebilir. Ayrıca kontrol edilen durumlar arasında bir bağlantı çıkarabilir. Başarılı bir algoritma eski veriyi temel alarak gelecek için tahmin yapabilir ve bu tahminlere dayanarak çıkan sonuçları test edebilir. Data Mining için hem OLAP hemde OLTP sistemlerin her ikisinide kullanabilirsiniz.

Temel OLAP Kavramları

Bu bölümde temel OLAP çözümleri ile ilgili temel kavramlarından bahsetmek istiyorum. Bu kavramlar Analysis Service ile OLAP çözümleri planlarken ve gerçekleştirirken bizim için çok önemli olacak.

Data Warehouse :



Firmalar iş analiz süreçlerinde, kendileri için data sağlayan ve dağınık halde bulunan çeşitli verileri raporlama ve sorgulama ihtiyacı duyarlar. Data Warehouse, bu farklı kaynaklardaki veriyi tek bir çatı altında (tek bir kaynak altında) toplayarak yeniden yapılandırılmasına verilen addır.

Firmaların farklı departmanlarda dağınık olarak bulunan verilerin, güncel ve tutarlı olarak saklanması, her departmanın kendine özel sistemeler kullanması sebebiyle Data Warehouse oldukça zor ve zaman alıcı bir süreçtir.

Genellikle data analizleri için kullanılan Data Warehouse dataları (data warehouse tabloları için OLAP çözüm yapıları ve optimal şemalar) de-normalize yapılarak oluşturulur. Data Warehouse, Data Mart’ların sanal olarak birleşimini sağlayabilir veya Data Mart’lar için kaynak datalar sağlayarak onları merkezi bir şekilde saklayabilir.

De-Normalize, Normalization(Normalleştirme)işleminin tersi bir işlemdir. Normalization hakkında detaylı bilgi sahibi olmak için “Normalization(Normalleştirme) Nedir?” adlı makalemizi okuyabilirsiniz.

Normalization: Normalization, her bilgiye ait olduğu en iyi yerleşimi tanımlama işlemidir. Normalleştirme, veriyi en aza indiren, veriyi uygun gruplamalarla uygun veri türüne yerleştiren ve yapıyı en iyi şekilde kullanan bir tasarım yaklaşımıdır. Normalleştirilen bir veri modeli doğru şekilde düzenlendiği için fiziksel veritabanına çevirilebilir.

Normalization E.F. Codd tarafından 1970’ler de ilişkisel modelleri geliştirmek için oluşturulmuştur.

Normalleştirilen bir veri modeli, her tablonun iyi oluşturulduğunu garanti eder ve her alanın uygunluğunu belirtir. En iyi durum, normalleştirilen mantıklı bir veri modelinin fiziksel olabildiği zamandır.

De- Normalization: Raporlama veya analiz amacıyla ilişkisel veritabanı modelinden, daha basit bir data yapısına(formuna) geçiş işlemidir. Normalizasyon işleminin tersidir. Örneğin Firmanın Aylık,Yıllık,Günlük satış cirolarının tek tabloya indirgenmesi işlemi.

Data Mart:




Data Mart çeşitli iş faaliyetlerinde veya özel konularda data sağlayan Data warehouse altkümeleridir. Bazı şirketler genel ve bütünsel bir Data Warehouse kullanmak yerine departman düzeyindeki veriyi kullanmak isterler.Data Mart belirli bir konu veya departman bilgilerine odaklanırken, Data Warehouse bütün şirketin bilgilerine odaklanır.

Fact:




Fact genelde analiz ve toplama(aggregate) işlemleri yaparak fiyat veya adet gibi anahtar iş değerlerini sunan bir ölçü birimidir. Fact formlar dimension elemanları için basit hesaplamalar ve çoğunlukla toplama (aggregate) işlemleri yapmak için kullanılır.

Dimension:




Dimension Formlar, fact’ler için kaynaklardır(bağlamlardır) ve toplanmış(aggregate yapılmış) fact’ler içinde ki işler hakkında bakış açıları tanımlar. Örneğin ürün veya stoklar dimension olarak sayılabilir. Standart sorgular ile stoklar(dimension) içerisindeki her bir ürünün toplam miktarına erişilebilir.

Cube:



Cube’ler(Küp) özetlenmiş fact’ler ve çok boyutlu dimension data tutar. Cube’ler datalara erişimi en uygun hale getiren ve genellikle kullanıcıların Data Warehouse içerisindeki datalara ulaşabilmesini sağlayan giriş noktalarıdır.

Slicing ve dicing




Slicing(Dilimleme) ve dicing(Izgaralama), OLAP cube içerisindeki datanın iş analizlerini belirlemek için, yaygın olarak kullanılan terimdir. Slicing, bir veya birden çok dimension elemanlarını ayırarak tutar ve bu elemanları diğer dimension’lara göre değerlendirir. Örneğin slicing parekende satış yapan her bir bölgenin aylık bisiklet satışlarını değerlendirebilir. Örnekte ürün dimension’dan döndürülen bisiklet dataları slicing(dilimli) olur. Dicing, ayrılarak tutulan bu çoklu dimension elemanlarından geriye tek değer döndürür. Örneğin dicing Mart 2004 yılında Münih’de satılmış bisikletleri değerlendirebilir.

Pivot Table (Özet Tablo)




Pivot Table kullanıcılara OLAP cube’lere göz atmak için hassas bir arabirim sağlar. Kullanıcılar datayı daha çok detaylandırabilirler veya datayı daha özet hale getirebilirler. Ayrıca bu arayüz kullanıcılara slice(dilim) ve dice(ızgara) olanağı sağlar.

Bu makalede temel kavramlardan bahsettim. Bir sonraki makalemde SQL Server 2005 Analysis Service yapısından bahsedeceğim.

Kaynak : 2791A: Implementing and Maintaining Microsoft® SQL Server™ 2005 Analysis Services

10 Haziran 2008 Salı

Bahçeşehir Üniversitesi Seminer

17 Mayıs 2008 tarihinde Bahçeşehir Üniversitesinde "Web'in Geleceği ve E-Ticaret" adlı bir seminer verdim. Emeği geçen herkese teşekkür ederim.

Seminer resimleri aşağıdaki gibidir.