C#nedir?com
 
YAZAR HAKKINDA
Oğuz Yağmur
Oğuz Yağmur
http://www.oguzyagmur.com
İletişme geçmek için tıklayın.
26 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: gelistirenler gelistirme islemleri isletim kullanarak kullanici kullanima microsoft pencere programcilar tabanli uygulama uygulamalar uygulamasi windows .NET 3.x Oğuz Yağmur
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : .NET 3.x
Yayınlanma Tarihi : 12.1.2009
Okunma Sayısı : 11826
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer 'in Blogu
ChatBot UI Sample 21.1.2018
Turhal Temizer 'in Blogu
C# – IRR Function 21.1.2018
Burak Selim Şenyurt
Sadece Tarayıcı Kullanarak Web API Servisini Google Cloud Platform Üzerinde Yayınlamak 21.1.2018
Burak Selim Şenyurt
AWS Lambda Üzerinde .Net Core Koşturmak 21.1.2018
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
WPF Öncesi
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Microsoft teknolojilerini kullanarak uygulama geliştirenler son iki üç yıl içerisinde onlarca kavramla karşı karşıya kaldılar. Nerdeyse her ay yeni uygulama ortamının ya da geliştirme plaformunun haberleri ile karşılaşıyoruz. Gerek firmalardan gerekse öğrencilerimizden “bu kadar yeni şeyi nasıl takip edeceğiz?” sorusu ile karşılaşıyorum. Tabi ki burda asıl önemli olan geliştiricilerin herşeyi öğrenmeleri, bilmeleri gerekmediği en azından bir alanda uzmanlaşmaları ya da uzmanlaşmış geliştiricilerin de kendi alanlarındaki yenilikleri takip etmeleri gerekiyor.

WPF ile ilgili makele serisini hazırlamakdaki amaç, .NET üzerinde Windows Forms uygulamaları geliştirenlerin .NET 3.0 ile birlikte gelen WPF (Windows PresentationFoundation) teknolojisini tanımak ve etkin bir biçimde kullanmalarını ve ilk kez pencere tabanlı uygulama geliştirmeye başlayacak kişilerin de yeni Microsoft teknolojilerini tanımalarına ve kullanmalarına yardımcı olmaktır.

Gelişmeler yakından takip edildiğinde, WPF’e Microsoft’un çok önem verdiğini ileriye yönelik birçok yeniliklerin bu yeni platform üzerinde tasarlandığını, web tarafında kullanıcı etkileşimli arayüzler oluşturma, medya içeriklerini daha kolay bir şekilde yayınlanmasını sağlayan Silverlight ürününde yine arka planda WPF çok yoğun bir şekilde kullanılmaktadır.Bugün birçok mobil cihazların Silverlight’ı destekleyecekleri ile ilgili gelişmeleri duyuyoruz. Bu da WPF’ın sadece Windows tabanlı değil web ve mobil tabanlı uygulamalar da geliştirilebilmesine olanak sağlaması birkez daha günümüzde ve ileriki zamanlarda WPF’in önemini ortaya çıkarmaktadır.

Kısa Tarihçe;

.NET ilk ortaya çıktığında Microsoft teknolojileri kullanarak uygulama geliştirenlerde büyük heycan uyandırdı. Artık programcılar bu platform üzerinde kolay ve hızlı birşekilde hem Windows (WinForms) hem Web (ASP.NET) hem de mobile uygulamalar geliştirebiliyor, veritabanı işlemleri için sağlanan desktek ile (ADO.NET) işler olabildiğince kolaylaştırılıyordu.

Pencere tabanlı uygulama geliştiren programcılar için büyük kolaylıklar sağlayan .NET platformu sayesinde eskisinden çok daha kolay bir şekilde uygulama geliştirebiliyor olmak en önemli gelişmelerden birisidir. Günümüzde kullandığımız pencere tabanlı (Window-based) uygulamarın geliştirme sürecini inceleyerek bu konun neden bu kadar önemli olduğunu daha kolay görebiliriz.

Siyah ekranda Pascal ya da C ile senelerce konsol uygulamaları geliştirdi.Hatta günümüzde bile kullanıcı ile etkileşime gerek kalmadan çalışacak uygulamar konsol uygulaması olarak geliştirilmeye devam ediliyor.

Microsoft’un işletim sisteminin DOS ortamından pecere (Window) ortamına geçmesinden sonra konsol uyuglamaları yerine pencere tabanlı uygulamalar geliştrilmeye başlandı. Microsoft Windows 3.1 ile ilk defa pecere sistemini kullanarak o zamanlar için bir devrim gerçekleştirmiş oldu. Microsoft kendi işletim sistemini geliştirmek için kullandığı tüm alt yapıyı (API – Applicaton Programming Interface )programcılara dökümante ederek kullanıma sundu.C /C++ programcıları düşünülerek tasarlanan API’yi kabaca gruplarsak :

- Memory yönetimi, İş Parçacıkları Yönetimi , Sistem Kaynakları yönetimi, Dosya Sistemi gibi alt seviyeli işlemleri gerçekleştirecek bölümü,
- Network işlemleri için (Winsock, NetBios ) kullanılacak bölümü
- Shell olarak adlandırılan Görev Yöneticisi, Windows Explorer, Desktop gibi işletim sisteminin arayüzünü yönetecek bölümü
- GDI (Graphic Device Interface) olarak adlandırılan, grafiksel işlemlerin gerçekleştirilmesi, print işlemlerin yapılması için gerekli bölümü
- UI (User Interface)olarak adlandırılan, pencere tabanlı uygulamalardaki pecerelerin yönetilmesi ve pencere üzerindeki kontrollerin kullanıcı ile etkileşimini yöneten , fare klavye gibi aygıtlarda kontrollere gelen mesajları yö - Dosya Aç, Dosya Kaydet, Print Pencereleri, Renk Seçme Penceresi gibi diyalog pencerelerinin toplandığı bölüm

şeklinde gruplayabiliriz. Windows üzerinde uygulama geliştirirken ihtiyaca göre bu gruplardaki fonksiyonlar çağrılarak kazandırılan esneklik sayesinde güçlü uygulamalar geliştirilebiliyordu. Zaman içinde işletim sisteminin gelişmesine paralel olarak API kütüphanesi de gelişmeye devam etti ve bugün bile hala alt seviyede API’ler (32 bit ve 64 bitlik versiyonları) kullanılmaktadır.

Geliştiriciler API’leri kullanarak pencere tabanlı uygulamalara geçiş yaptı.Pencereleri ve kontrolleri oluşturmak için UI’i , pencere üzerinde resim gibi kaynakları göstermek ya da çeşitli grafiksel çizim işlemleri için GDI’ı kullarak uygulama geliştirebiliyordu. Gerek teknik açıdan birçok bilgiye ihtiyaç duyulması gerekse çok basit bir işlem için – örneğin bir merhaba dünya uygulaması - bile onlarca satır kod yazıyor olmak programcılarını işini oldukça zorlaştırıyordu.Sonrasında C++ ile uygulama geliştirenler için Microsoft MFC (Microsoft Foundation Classes) kütüphanesini kullanıma sundu. Bu kütüphane GDI’ın nesne yönelimli halindeki bir paketi olarak düşünebiliriz. Bu sayede nesne yönelimli programa ile uygulama geliştirenlere nesne yönelimli olmayan API’lerin kullanılması yerine MFC ile pencere tabanlı uygulamaların daha kolay bir şekilde geliştirilmesi ve karışık API mimarisinden ziyade daha kolay bir geliştirme ortamı sunma amacını taşıyordu. Ne yazık ki birçok programcı MFC’yi daha karışık ve daha zor olarak gördü. Sonuçda programcılar yine pecenre tabanlı uygulama geliştirirken zorlanıyor, API ve MFC yeterli esnekliği ve kolaylığı veremediğinden programcılar henüz tam anlamıyla istediğini alamıyordu.

Daha sonra Microsoft’un VB 3.0 ile pencere tabanlı uygulamaları kolayca gerçekleştirebilmeleri, kullanıcı arayüzlerini oluşturmak için artık kod yazdırmayı ortadan kaldırması, benzer olarak Borland firmasının Delphi ürünü ile perencere tabanlı uygulama geliştirme ortamını (API ye benzer VCL kütüphanesini geliştirerek) kullanıma sunması ile artık çok kolay ve hızlı bir biçimde pencere tabanlı uygulamalar geliştirilebiliyordu. Fakat özelleştirmeler gerektiğinde ya da programcı kendine özel pencere ya da kontroller geliştirmek istediğinde yine Windows API’nin UI ve GDI bölümlerini sıklıkla kullanmak zorunda kalıyordu. Zaman içerisinde işletim sistemin gelişmesine paralel olarak GDI bölümüne, Windows XP’nin çıkmasıyla birlikte saydamlık, gradient brush (renk geçişi ) yenilikler eklenerek GDI+ ismini aldı. 2D ve 3D işlemleri için kullanılan GDI+ gerek kodlama zorluğu gerek performans nedenlerinden dolayi yeterli etkinliği sağlayamıyordu. Buna paralel olarak geliştirilen DirectX kütüphanesi ile Microsoft performans sorununu ortadan kaldırarak yoğun çizim işlemleri ve medya dosyalarının oynatılabilmesini sağlıyor, ekran kartı üreten firmaların da DirectX’e uygun ucuz donanım üretmeleri ile tam anlamıyla yoğun grafiksel işlemler sorunsuz halledilebilir duruma gelmişti. Artık birçok oyun bu kütüphane kullanarak geliştirilmeye başlandı. Fakat pencere tabanlı uygulama geliştirenler için DirectX’i kullanmak çok da efektif gelmiyordu.

2002 senesinde .NET’in duyrulmasıyla pencere tabanlı uygulama geliştiren programıcılar için sevinç verici gelişmeleri de beraberinde getirdi. Artık programcı API’ler ile boğuşmaktansa nesne yönelimli programlamaya uygun, GDI+’in daha kolay kullanılmasını sağlayacak yeni kütüphanenin hazır olarak gelmesi, birçok pencere kontrolünün (button, textbox, listview ...) temel gereksinimleri sağlayacak bir biçimde daha kolay birşekilde kullanılması, kontrollerin özelliklerinin kolaylıkla düzenlenebilmesi artık programıcının çok fazla teknik detaylarla boğuşmadan uygulama geliştirebilmesini sağladı. Ama henüz tüm problemler çözülememişti. En başta kontrollerin özelleştirilmesi gerek duyulduğunda örneğin üzerine fare ile gelindiğinde parlayan bir button oluşturmak istediğimizde öncelikle yeni bir kontrol oluşturulmalı, verilecek sitile göre koordinatlar hesaplanmalı ve tüm boyama (paint) işlemlerini programcının kendisi yapmalı. Bu durumda yine çok fazla teknik bilgiye ve çok kod yazmaya ihtiyaç vardı.Bunun yanı sıra tüm bu çizim ve boyama işlemleri için işlemciye yük bindirdiğinden performans sorunları da yaşanıyordu. Çok basit bir animasyon işleminin bile işlemici kaynaklarını %100 kullandığına birçok kez şahit oluyorduk.

Bunların yanında Web uygulamalarına göre Windows uygulamalarının dağıtım ve güncelleme işlemleri çok daha sorunludur. .NET 2.0 ile birlikte gelen ClickOnes tekniği hernekadar çözüm gibi düşünülse de bir web uygulaması kadar kolay ve esnek olmadığından .NET platformu, geliştiricilerin tüm ihtiyaçlarını karşılayamıyordu. Web uygulamalarının gelişmesi Web 2.0 ve Ajax tekniğinin kullanılması ile kullanıcıya göze daha hoş gelen uygulamarın çoğalması ve popülerlik kazanması ile pencere tabanlı uygulamalardaki ekran çözünürlüğüne göre içeriğin görüntülenmesi, pencerenin boyutunun değişmesine göre içeriğin yeni ölçülere göre tekrardan yerleştirilmesi ( flow layout ) büyük sorunlara neden olduğundan , kısaca uygulamanın arayüzünün yeterli kadar esnek tasarlanamıyor olmasından dolayı kimi uygulamalar web tabanlı olarak geliştirilmeye başlandı.

Son 20 yıldan beri yaşanan tüm bu sorunlara karşı Microsoft, 2003 yılında ilk kez adını Avalon olarak duymaya başladığımız, 2005 senesinde de .NET Framework 3.0 ile kullanıma sunulan ve adı WPF (Windows Presentation Foundation) olarak belirlenen yeni kullanıcı arayüzü geliştirme platformu ile çözüm getirmeyi başarmıştır.

Bu makalemizde günümüze hızla kullanılmaya başlanan WPF’in öncesinde yaşananlardan bahsederek windows uygulaması geliştirmede yaşanan zorlukları görerek sonraki makalelerimizde WPF ile bu sorunlara nasil çözümler geliştireceğimizi inceleyeceğiz.

Oğuz YAĞMUR
MVP

Makale:
WPF Öncesi .NET 3.0 ve .NET 3.5 Özel Bölümü Oğuz Yağmur
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor