Makale Özeti

Bu makalemizde Windows 8 Metro Application Framework’ten bahsedeceğim. Sonrasında Windows 8 üzerinde uygulama geliştirme konusuna giriş yapacağız.

Makale

Bu makalemizde Windows 8 Metro Application Framework'ten bahsedeceğim. Sonrasında Windows 8 üzerinde uygulama geliştirme konusuna giriş yapacağız.

Öncelikle Windows 8 Application Framework'ü inceleyelim. Aşağıdaki diyagramda göreceğiniz gibi alışılagelmiş uygulama geliştirme yöntemlerinde de Metro Style uygulama geliştirmede de en temelde Windows OS Core Servislerini görüyoruz. Buradan sonra alışılagelmiş masaüstü uygulamalarına bakacak olursak Internet Explorer için HTML ve Javascript, Win32 uygulamalar için C veya C++, .Net veya Silverlight benzeri uygulamalar için ise C# veya VB.Net kullanıldığını görüyoruz. Windows 8 Metro Style uygulama değiştirmede ise tüm uygulamaların Windows RT API'leri üzerinde çalıştığını görüyoruz. Yapacağınız tüm işlemler esasında Windows RT API katmanında gerçekleşiyor. Dolayısıyla bu da bizim için XAML, C# veya HTML ile uygulama geliştirdiğimizde aynı API'leri kullanma kolaylığı sağlıyor. Dolayısıyla tüm bu dillerden aynı API'yi kullanarak uygulama geliştirme yapabildiğinizden hangi dili kullandığınız çok farketmiyor ve her dilde tüm işlemleri yapabiliyorsunuz. XAML, C#, VB, C++ veya HTML, Javascript dillerinden hangisinde daha tecrübeli iseniz bu dili kullanarak uygulamalar geliştirmeyi seçebilirsiniz.

 

Windows 8 MetroStyle uygulama geliştirirken kullanabileceğiniz uygulama geliştirme seçeneklerinden biraz daha detaylı bahsetmek istiyorum.

Eğer HTML ve JavaScript ile uygulama geliştirmeyi tercih ederseniz, HTML, CSS ve Javascript teknolojilerinin tamamını bir web uygulaması geliştirir gibi kullanabiliyorsunuz. Bunun yanı sıra WinJS kütüphanesini uygulamanıza ekleyerak WinRT API'lerine erişebiliyorsunuz. Ayrıca WinJS kontrolleri sayesinde standart html kontrolleri dışında kontrolleri kullanabiliyorsunuz. Eğer XAML ve C#, VB veya C++ kullanarak uygulama geliştirmeyi tercih ederseniz standart bir XAML uygulaması geliştirirken izlediğiniz yöntemleri izleyebiyorsunuz.

Uygulama geliştiriciler olarak bilmemiz gereken bir diğer önemli konu ise uygulamaların Windows 8 üzerindeki yaşam döngüsü. Uygulamalar Windows 8 üzerinde temel olarak 3 farklı state'te bulunabilirler. Bunlar;

Running: Uygulamanın çalıştığı durumdur. Uygulama kullanıcının önünde aktif olarak kullandığı uygulamadır.
Suspended: Başka bir uygulama açtığınızda veya başlangıç ekranına döndüğünüzde aktif olarak kullandığınız uygulama Suspended durumuna geçer, kullanıcının uygulamaya hemen geri dönme ihtimaline karşın 5 saniyelik bir bekleme süresinden sonra Suspended durumuna geçer.
Terminated: Windows'ta yeni bir uygulama açmaya kalktığınızda veya bir uygulamanın tükettiği kaynaklar arttığında sistem kaynakları azalırsa Windows otomatik olarak Suspended durumda bulunan uygulamaları bir algoritmik sıraya göre sırayla kapatır ve bu uygulamalar terminated durumuna geçerler. Ayrıca suspended durumunda uygulamanızın durumunu kaydetmek için Save ve Restore event'ları olmasına karşın terminated durumunda uygulama durumunu kaydetmek için hiçbir işlem yapamazsınız.

Dolayısıyla Save ve Restore event'lerine subscribe olarak uygulamanızda bulunan datayı kaydetmeniz gerekmektedir. Makale serimin ilerleyen kısımlarında yapacağımız örneklerde bunun nasıl yapılacağını inceleyeceğiz.

Uygulama yaşam döngüsünün nasıl işlediğini bir örnekle anlatmaya çalışacağım. Örneğin Hava Durumu uygulamasını açtığınızda Hava Durumu uygulaması Running durumda olacaktır. Hemen ardından Posta uygulamasını açtığınızda ise 5 sn. bekleme süresinden sonra Posta Uygulaması Running Hava Durumu uygulaması Suspended durumda olacaktır. Burada Hava Durumu uygulamasını tekrar açarsak Hava Durumu uygulaması Running Posta uygulaması Suspended durumda olacaktır. Visual Studio'yu açtığımızda ve çok sistem kaynağı tükettiğimizde ise Visual Studio Running duruma geçecektir ve Windows sistem kaynaklarını boşaltmak için suspended durumunda olan uygulamalardan bazılarını terminate edecektir.

İsterseniz bu işlemlerin gerçekleşmelerini task manager'ı kullanarak takip edebilirsiniz.

Uygulama geliştirmeye başlamadan önce Visual Studio üzerinde bulunan template'leri inceleyecek olursak Javascript için;

Blank App: Uygulama geliştirmeye boş bir template ile başlarsınız, içerisinde herhangi bir kontrol veya hazır kod barındırmaz.
Grid App: Daha çok Haber uygulamasına benzer arayüzler geliştirmenize yarar, otomatik olarak gruplama ve sağa sola kaydırma gibi özellikleri sunar.
Split App: Bu uygulama tipi ise sol tarafta bir listview ve sağ tarafta ise bir detay kısmı ile bir şablon sunar ve solda tıkladığınız nesneye ait detayları sağ taraftaki detay kısmında görmenizi sağlar.
Fixed Layout App: Geliştireceğiniz uygumanın boyutlarından ve çözünürlüğünden eminseniz ve sabit kalmasını istiyorsanız bu template'i seçebilirsiniz.
Navigation App: Fragment'lar kullanarak kolayca navigate edebilmemizi sağlayan bir uygulama şablonudur.

XAML ve C# için;

Blank App: Uygulama geliştirmeye boş bir template ile başlarsınız, içerisinde herhangi bir kontrol veya hazır kod barındırmaz.
Grid App: Daha çok haber uygulamasına benzer arayüzler geliştirmenize yarar, otomatik olarak gruplama ve sağa sola kaydırma gibi özellikleri sunar.
Split App: Bu uygulama tipi ise sol tarafta bir listview ve sağ tarafta ise bir detay kısmı ile bir şablon sunar ve solda tıkladığınız nesneye ait detayları sağ taraftaki detay kısmında görmenizi sağlar.
Class Library: Bazı bileşenler yazmak istediğinizde kullanmanız gereken şablondur.
Unit Test Library: Unit test yazmak için kullanmanız gereken şablondur.
Windows Runtime Component : Windows Runtime Component geliştirmek için kullanılan templatedir. Burada oluşturduğunuz bileşenleri dil bağımısz olarak Windows MetroStyle Uygulama geliştirirken kullanabilirsiniz.

Grid Application ve Split Application dikey ve yatay modlar arasında geçiş yaptığınızda kendilerini otomatik şekilde ekrana uygularlar.

Her iki uygulama geliştirme yönteminde de göreceğiniz ortak dosya Package.appxmanifest dosyasıdır. Bu uygulama paketimizdeki tüm bilgilerin tutulduğu dosyadır. Bu dosyaya çift tıkladığımızda karşımıza açılan pencereden bahsetmek istiyorum.

Application UI: Bu tab da uygulamanızın ismi, açıklaması, logosu gibi ayarları değiştirebilirsiniz.
Capabilities: Bu tab da uygulamamızın sahip olacağı yetenekleri tanımlıyoruz. Örneğin uygulamamız internete erişecek, kameraya erişecek veya mikrofona erişecekse bunu bu ekranda ilgili seçenekleri işaretleyerek belirtmemiz gerekiyor.
Declarations: Charm Bar'da uygulamamızın kullanabileceği kontratları buradan tanımlıyoruz. Örneğin uygulamam Search işleminde nasıl bir aksiyon alacaksa buradan tanımlanıyor.
Packaging: Bu ekrandan da uygulamanızın paketlenmesi ile ilgili bazı ayarlar bu ekrandan yapılıyor.
Content URIs: Bu tab sadece Javascript uygulamalarında bulunmaktadır. Uygulamamızda kullanacağımız dış sitelerden hangilerine izin verilip hangilerine izin verilmeyeceğinin tanımlandığı ekrandır.