Ahmet Çığşar | WPF Mimarisi
345
post-template-default,single,single-post,postid-345,single-format-standard,qode-quick-links-1.0,ajax_fade,page_not_loaded,,qode-theme-ver-11.0,qode-theme-bridge

WPF Mimarisi

WPF Mimarisi

WPF’e Giriş yazısında WPF’in ne olduğundan ve neler getirdiğinden  bahsetmiştik. Sırada WPF ile ilgili bence bilinmesi gereken diğer bir konu WPF’in mimarisi konusudur. Bir geliştirici kullandığı teknolojinin mimarisini kesinlikle bilmeli.

WPF çok katmanlı bir mimariye sahiptir.  Bu katmanlar ana hatlarıyla: PresentationFramework ve PresentationCore bileşenlerini barıdıran Managed WPF Layer (yönetilebilir),  milcore ve WindowsCodecs bileşenlerini barındıran ve yönetilemeyen yapıya sahip (unmanaged) MediaIntegration Layer ve işletim sistemi çekirdeği Core OS katmanlarıdır.

WPF mimarisi

WPF mimarisi.

PresentationFramework : WPF’in en üst katmanıdır.  Kullanıcı arayüzünde kullandığımız pencereler, butonlar, paneller, metinkutuları, çizimler bu katmanda yer alır ve bu nesnelerin sınıf karşılıkları PresentationFramework.dll kütüphanesi içerisinde yer alır.

PresentationCore : Makalenin ilerleyen kısımlarında bahsedeceğim Visual sınıfından türemiş nesnelerin bulunduğu kısımdır. Tasarımlarımızda WPF’in bize sunduğu imkanların dışında kullandığımız nesneler bu katmanda işleme alınacaktır. Bu katmandaki tüm nesneler PresentationCore.dll içerisnde yer alır.

milcore (Media Integration Layer Core) : En temel ve önemli işlevi WPF katmanı ile DirectX arasında köprü görevi görmesidir. WPF kontrollerinin  görüntülenmesindeki temel işlevi yapan birimdir. WPF nesnelerinin donanım seviyesinde işlemle (rendering) görüntülenmesini sağlar. milcore bileşeni milcore.dll kütüphanesini kullanır.

WindowsCodecs : İmaj ve videoların görüntülenmesini sağlayan bileşendir. WindowsCodecs.dll kütüphanesini kullanır.

WPF Nesne Sınıfları ve Hiyerarşisi

Öncelikle aşağıdaki WPF hiyerarşisi şemasını inceleyelim ve devam edelim.

WPF'in Hiyerarşik Yapısı

WPF’ sınıflarının hiyerarşik yapısı

Bu sınıflar ve hiyerarşi hakkında konuşulacak ve yazılacak o kadar çok detay var ki bunların hepsinden bahsetmek istemiyorum malum çok detaya ihtiyaç duyulursa MSDN gibi bir platform var zaten. Ben genel hatlarıyla anlatmaya çalışacağım.

Object ( System.Object )Aslında Object hakkında fazla yazılacak bir şey yok. Her şeyin nesneden türediği bir platformda Object sınıfının hiyerarşinin en üstünde olması normaldir. Kısaca tüm sınıflar (class) Object’ten türemektedir.

DispatcherObject ( System.Threading.DispatcherObject )WPF nesnelerinin birbirleri ile olan ilişkilerini  ve iş parçacıklarının (Thread) uyumlu şekilde çalışmasından sorumludur.

DependencyObject ( System.Windows.DependencyObject )
WPF uygulamalarımızda metod (method) ve özellikleri (property) birlikte kullanmamızı sağlar. Ayrıca DataBinding işlemleri bu sınıf yardımıyla yapılır. DependencyObject olmasaydı? Olmasaydı, DataBinding işlemi için kısaca kırk takla atmamız gerekecekti aynı durum çizimler içinde geçerli mevcut çizimlerimizi çok daha fazla kod yazarak yapmak zorunda kalacaktık.

Visual ( System.Windows.Media.Visual )Visual nesnesi ile WPF tasarımlarımızdaki nesnelerin DirectX tarafından nasıl çizileceğini belirler.

UI Elements ( System.Windows.UIElement )
Görüntülenmeye hazır olan nesnelerimizin ekranda nerede, nasıl görüntüleneceği, pencere koordinatları ve kullanıcı tarafından klavye ve fare ile gönderilen girdiler UIElements sayesinde anlam kazanır.

FrameworkElement ( System.Windows.FrameworkElement )UIElements sınıfının tüm özelleklerini yansıttığı gibi ekstradan önemli nitelikler daha barındırır.  HorizontalAlignment, VerticalAlignment, MinWidth ve Margin gibi nesnelerin hizalama ve boyut belirleme gibi denetimlerini bize verir. Ayrıca Storyboard ve BeginStoryboard ile animasyonlar ve animasyona dayalı efektler oluşturmamıza izin verir.

Ana hiyerarşinin kademeleri böyle. FrameworkElement’ten sonra zaten tanıdık yüzleri görmüşüzdür. 🙂 Kontroller, paneller, textbox, button… Bu nedenle yazımı burada noktalıyorum.

Yorum Yapılmamış

Yorum Yapın