Framework | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar framework

Evrensel Bulut ve Evrensel Uygulama Web Yayınları Serisi Mart 2015

27 March 2015 Yorum yapılmamış

26 Mart 2015 tarihinde sevgili arkadaşım Daron Yöndem ile birlikte Evrensel Bulut ve Evrensel Uygulama Web Yayınları Serisi kapsamında bir canlı yayın gerçekleştirdik.

Microsoft Türkiye Ofisi‘nde Universal App kavramı, Cross-Platform uygulama geliştirme araçları ve frameworkleri, Microsoft Azure yenilikleri gibi konuları konuştuğumuz canlı yayın’ın kaydedilen video‘larını aşağıdaki linklerden izleyebilirsiniz;

Evrensel Bulut ve Evrensel Uygulama Web Yayınları Serisi (1. Bölüm)

Evrensel Bulut ve Evrensel Uygulama Web Yayınları Serisi (2. Bölüm)

Evrensel Bulut ve Evrensel Uygulama Web Yayınları Serisi (3. Bölüm)

ASP.NET MVC Nedir, Ne İşe Yarar?

17 September 2013 Yorum yapılmamış

ASP.NET MVC, MVC pattern‘ini ASP.NET‘e eklemek için Microsoft‘un geliştirdiği framework’tür. ASP.NET MVC‘nin ne olduğunu anlamak için öncelikle MVC‘nin ne olduğunu incelemekte fayda var.

MVC, uygulama geliştirmede (özellikle web uygulaması geliştirmede) önemli yere sahip mimari desenlerden biridir. Günümüzde MVC denince akla Microsoft‘un geliştirdiği ASP.NET MVC Framework gelmektedir, oysa 1979 yılından beri (Microsoft 1975 yılında kurulmuştur) yazılım dünyasında yer almaktadır.

MVC, Model, View, Controller kelimelerinin baş harflerinden oluşur ve her kelime MVC‘nin farklı bir katmanını ifade eder.

Model
MVC dünyasında model uygulama verisinin veya durumunun saklandığı yerdir, genellikle veritabanı veya xml/json dosyası formatındadır.

Model, veri katmanını (database, xml, json dosyası, vb.) uygulamadan izole eder, böylece diğer katmanlarda veri katmanının neresi olduğunun bilinmesine gerek kalmaz.

Model katmanı sıklıkla Entity Framework, Nhibernate, LLBLGen, vb. gibi araçlar kullanılarak oluşturulur.

View
View, istemcinin gördüğü arayüzü içeren katmandır, genellikle Model katmanındaki verinin kullanılması ile oluşturulur. View katmanının Model ve Controller katmanlarından ayrılması ile arayüz değişikliklerinin uygulamanın diğer katmanlarını değiştirmeye gerek kalmadan yapılabilmesi sağlanmıştır.

View katmanında HTML5 ve CSS3 gibi son versiyon teknolojiler kullanmak mümkündür. HTML5 ve CSS3 ile masaüstü ve mobil tarayıcılarda çalışabilen uygulamalar geliştirmek çok kolaylaşmıştır.

Controller
Controller, istemciden gelen isteği işlemek, Model ve View katmanları arasında köprü olmak gibi görevleri yerine getirir. Controller içerisinde bir veya daha fazla Action olabilir, genellikle her Action bir web sayfası üretmek için kullanılır.

MVC’nin diğer bir önemli yapıtaşı Routing mekanizmasıdır.

Routing
Routing, istemci’nin uygulamaya yaptığı isteği uygun Controller ve Action‘a yönlendiren yapıdır. İstemci, isteği uygulamanın belli bir adresine gönderir, routing mekanizması sayesinde ilgili adres için en uygun Controller ve içerisindeki Action tespit edilir ve çalıştırılır.

Neden ASP.NET MVC tercih etmeliyim?
MVC ile istemci’nin isteğine karşılık üretilen çıktı üzerinde çok büyük kontrol imkanı vardır. Bu sayede her alanına müdahele edebildiğimiz ve isteğe en uygun çıktının üretilebilmesi sağlanmıştır.

MVC ile tekrar kullanılabilir (reusable) kod üretmek mümkündür. MVC’nin katmanları birbirinden ayrıldığı için her bir katmanın başka projelerde kullanılabilmesi sağlanmıştır.

MVC ile istemci’nin istek göndereceği adresler üzerinde çok büyük kontrol imkanı vardır. Bu sayede adres’in içerik ile tam bir ilişki içerisinde olması sağlanmıştır. Arama motorları için adres-içerik ilişkisi önemli olduğu için uygulamanın bulunabilirliğine katkısı yüksektir.

MVC ile test edilebilir uygulamalar geliştirme çok kolaylaşmıştır. Katmanların birbirinden ayrı olması ve Test Driven Development yapmayı kolaylaştırıcı mimarisi sayesinde test edilebilir uygulama geliştirilebilmesi sağlanmıştır.

Sonuç
MVC uzun yıllardır bir çok framework’te ve programlama dilinde kullanılmış (Java, PHP, vb.) ve olgunlaşmış bir desendir. ASP.NET MVC sayesinde .Net framework dilleri ile MVC pattern kullanılarak hızlı çalışan, test edilebilir, tekrar kullanılabilir parçaları olabilen web uygulamaları geliştirilebilmesi sağlanmıştır.

XNA Oyun Programlama Platformu Hakkında

30 January 2013 Yorum yapılmamış

Günümüzde tüm yazılım sektörü gibi oyun dünyası’da çok hızlı gelişmeye ve şekillenmeye başladı. Artık insanlar yeni bir oyun için aylarca beklemeye tahammül etmiyor.

Böyle zamanlarda yapılması gereken ürünü mümkün olan en hızlı yollardan tüketiciye ulaştırmaktır.
Bu durumun farkına varan oyun evleri birkaç yıl öncesine göre çok daha kısa sürelerde yeni oyun üretmenin yollarını aramaya başladı.

2004 yılında Microsoft, Indie olarak kısalttığımız Independent Game Developer‘lar (yani Bağımsız Oyun Geliştiriciler) için hızlı oyun geliştirme platformunu duyurdu ve 2006 yılının ikinci yarısında da XNA Game Studio ismi ile yayınladı.
2007 yılından beri oyun evleri ve bağımsız geliştiriciler XNA Framework ile hem 2 boyutlu hem de 3 boyutlu oyunlar geliştiriyorlar.

XNA, mümkün olan en az kod değişikliği ile şu platformlar için oyunları geliştirmemize yardımcı olur;

  • Windows üzerinde çalışan 2 boyutlu ve 3 boyutlu oyunlar
  • Microsoft’un oyun platformu olan XBOX üzerinde çalışan 2 boyutlu ve 3 boyutlu oyunlar
  • Microsoft’un mobil platformu olan Windows Phone ailesi üzerinde çalışan 2 boyutlu ve 3 boyutlu oyunlar

Özellikle mobil oyunların son yıllarda izlediği trende bakacak olursak, oyun geliştiriciler için çok güzel bir pazar olduğunu farkederiz.

XNA sayesinde, çok az kod değişikliği yaparak birden fazla platforma oyunlarımızı yayınlayabiliyoruz.

Üstelik oyun geliştirmeye başlarken ihtiyaç duyacağımız tüm araçlar (XNA Framework’un kendisi, Visual Studio’nun Express sürümü) Microsoft tarafından ücretsiz olarak sağlanıyor.

Tüm maddeleri özetleyecek olursak, XNA ile başlangıç maliyetleri olmadan, Microsoft tarafından desteklenen tüm platformlara hem 2 boyutlu, hem 3 boyutlu oyun geliştirebiliyoruz.

Neden XNA tercih etmeliyiz?

Geliştirici açısından düşünecek olursak, XNA, .Net Framework temelleri üzerine kurulduğu için, C#, VB.Net ve C++.Net gibi .Net ailesi diller ile geliştirilebiliyor.

Eğer zaten .Net dünyasına ve .Net ailesi dillere aşina iseniz, XNA ile oyun geliştirmeye hemen başlayabilirsiniz.

Üstelik XNA’de kazandığınız tecrübeler ve .Net dillerinde kazandığınız tecrübeler, birleşerek tüm yazılım geliştirme yeteneklerinizi olumlu yönde etkileyecektir.

Ayrıca Oyun Yaşam Döngüsü dediğimiz, bir oyun’un başlatıldığı andan sonlandırıldığı ana kadar geçen tüm süreçler XNA içerisinde çok net bir şekilde tanımlanmıştır.

Haliyle XNA ile oyun geliştirmeye başlamanın yanı sıra, XNA ile oyun geliştirme sürecinin kendisi de en az efor ile öğrenilecek kadar kolaylaştırılmıştır.

XNA ile geliştirilen oyunlar, minimum efor ile, WindowsXBOXWindows Phone platformlarına taşınabiliyor. Böylece hedef kitlemizi artırabilir, oyunumuzun çok daha büyük kitlelere ulaşmasını sağlayabiliriz.

Çok Oyunculu oyunlar geliştirme süreçleri de XNA sayesinde çok kolaylaştırılmıştır. XNA Framework, Yerel ağ üzerinden tek sunuculu veya tüm oyuncuların sunucu olduğu senaryo ve internet üzerinden tek sunuculu oyunların yazılması için hazır yapılar barındırmaktadır.

Tüm maddeleri özetleyecek olursak, .Net ailesi dil biliyor olmak XNA ile oyun geliştirmeye başlamak için büyük avantajdır.

Yazılım geliştirme ve oyun geliştirme tecrübelerinin transfer edilebiliyor olması aynı şekilde büyük avantajdır. Çok oyunculu oyunların yazılması için kolay kullanıma sahip sınıflar framework ile birlikte gelmektedir.

Uygulamalar Windows Phone 8 ile (çok) daha hızlı

13 December 2012 Yorum yapılmamış

Windows Phone 7.X kullanıcılarının en çok şikayet ettiği konulardan biri uygulamaların yeterince hızlı başlatılamaması idi. Microsoft, Windows Phone 8 tanıtımından beri yayınlanan bildirilerde uygulama başlangıç sürelerinin yaklaşık yarı yarıya azaldığını söylüyor.

Hızlı başlangıç süreleri, az pil tüketimi ve toplamda performans konularını inceleyelim;

.Net Framework, CoreCLR ve Garbage Collector

Windows Phone 8 ile birlikte en güncel versiyon olan .Net Framework 4.5 geliyor. Framework’te yapılan (hemen hemen) tüm güncellemeler ve iyileştirmelerden hem uygulama geliştirici hem de son kullanıcı olarak faydalanabiliyoruz.

Ayrıca Windows Phone 8, öncüllerinden farklı olarak .Net Compact Framework yerine CoreCLR motoru içeriyor.

CoreCLR .Net Framework 4.5 CLR ile (hemen hemen) aynı özellikleri ve optimizasyonları içerir, .Net Compact Framework‘ten çok daha verimli ve daha hızlıdır.

Özellikle Garbage Collector performansı hissedilebilir şekilde arttırılmıştır. Oyunlar gibi saniyedeki işlem adedi yüksek olan uygulamalarda Garbage Collector‘daki performans artışı uygulamanın toplam performansına büyük etki eder.

Async Framework

.Net Framework 4.5‘teki en önemli yeni gelişme C# 5 ve VB.Net 11 tarafından tanıtılan yeni asenkron programlama modelidir.

CoreCLR ve .Net Framework kütüphanelerinde yapılan güncellemeler ile birlikte Windows Phone 8 asenkron programlama modelinin tüm nimetlerinden faydalanabiliyor.

Windows Phone 8 cihazların çok çekirdekli işlemciye sahip olması, async, await anahtar kelimelerinin ve Task Parallel Library kullanımının uygulamaların başlangıç ve kullanım hızlarının artmasına katkısı büyük.

Asenkron kütüphanelerin (hemen hemen) tamamı .Net Framework içerisine gömülmüş durumda. Fakat bazı kütüphanelere async desteğinin (özellikle System.Net namespace’i altındakiler) NuGet aracılığı ile indirilmesi gerekiyor.

Microsoft.Bcl.Async paketini NuGet üzerinden indirebilirsiniz. Daha ayrıntılı bilgi için MSDN’deki BCL Blog makalesini okumanızı tavsiye ederim.

Cloud Derleyici ile çok daha hızlı kod

Windows Phone 8‘de yüksek performans ve pil ömründen tasarruf için çok daha uygun olan yeni bir kod oluşturma yaklaşımı benimsenmiş.

Uygulamaları son kullanıcı cihazlara indirilmeden önce Windows Phone Store tarafından yüksek kalitede ARM koduna derleniyorlar.

Bu sayede Windows Phone 7.X cihazlar için uygulamanın her çalıştırılması esnasında yapılan derleme işlemi, Windows Phone 8 cihazlar için gerçekleştirilmiyor.

CPU yükünü artıran ve pil tüketimine olumsuz etkisi bulunan bu işlemin aradan çıkartılmış olması Windows Phone 8 cihazlarda uygulamaların daha hızlı başlatılmasını ve pil tüketimlerinin azalmasını sağlamış.

Microsoft pre-compile (ön-derleme) sürecini son kullanıcı cihazdan alarak Washington Columbia nehri üzerine kurdukları bir jeneratör aracılığı ile beslenen bir sisteme devretmiş durumda.

Not : Cep telefonu pili yerine enerjinin bir nehirden sağlanması iyi düşünülmüş.

Windows Phone 7 (WP7) ile programlamaya başlangıç

24 March 2012 2 yorum

Bu yazı dizisi ile birlikte Windows Phone 7 (WP7) uygulama geliştirme konusunu inceliyor olacağız.

WP7 uygulamalarını Visual Studio 2010, Expression Blend, Silverlight ve XAML gibi mevcut Microsoft araçları üzerine inşa ediyoruz.

WP7, uygulama geliştirmemiz için temel olarak iki framework sağlar;

  • Silverlight Framework
    Bu framework ile olay tabanlı (XAML sayesinde) uygulamalar geliştirebiliriz
  • XNA Games Framework
    Bu framework sayesinde, zengin 2D ve 3D oyunlar geliştirebiliriz

Windows Phone 7 Uygulama Geliştirme Gereksinimleri

Visual Studio 2010 kurulu bilgisayarımıza Windows Phone SDK 7.1 indirip kurmamız gerekiyor.

Windows Phone SDK 7.1 kurulumu sonrasında bilgisayarımıza aşağıdaki araçlar kurulmuş olacak;

  • Microsoft Visual Studio 2010 Express for Windows Phone
  • Windows Phone Emulator
  • Windows Phone SDK 7.1 Assemblies
  • Silverlight 4 SDK and DRT
  • Windows Phone SDK 7.1 Extensions for XNA Game Studio 4.0
  • Microsoft Expression Blend SDK for Windows Phone 7
  • Microsoft Expression Blend SDK for Windows Phone OS 7.1
  • WCF Data Services Client for Window Phone
  • Microsoft Advertising SDK for Windows Phone

Ayrıca Visual Studio 2010 kurulumumuza, New Project dialog penceresinden erişebileceğimiz yeni proje şablonları da eklenmiş oluyor.

Not : App Hub – Developer Resources sayfasından, hem ihtiyacımız olacak araçlara, hem de faydalı dokümanlara ulaşabiliriz.

Windows Phone 7 Mimarisi

MSDN‘de yer alan Application Platform Overview for Windows Phone makalesine göre, mimari şu şekilde;

WP7 mimarisinin 4 temel bileşeni;

  • Runtimes
    Silverlight ve XNA framework, optimize edilmiş uygulama oluşturmak için geliştiriciler için mükemmel bir ortam sağlar
  • Araçlar
    Visual Studio 2010 ve Expression Blend araçları kullanıcıya zengin uygulamalar tasarlamak ve geliştirmek için geliştiricilere esnek bir ortam sağlar
  • Cloud Services
    Windows ve SQL Azure, Notification Services, Location Services ve diğer 3. parti servis desteği ile geliştiricilere esnek bir geliştirme ortamı sağlar
  • Portal Services
    WP7 Market Place geliştiricilere, uygulamalarını yükleme ve sertifika yönetimi imkanı sağlar

Silverlight ve Windows Phone 7
Silverlight, XAML (Extensible Application Markup Language) dili ile uygulamalar ve basit 2D oyunlar geliştirmek için kullanılır. Geliştiriciler kolaylıkla Visual Studio veya Microsoft Blend gibi araçlar sayesinde XAML kodları üretebilirler.

XNA ve Windows Phone 7
XNA, temelde zengin 2D ve 3D oyunlar geliştirmek için kullanılır.

Market Place Sertifikasyon Süreci

Windows Phone 7 için geliştirdiğimiz uygulamaları, Market Place‘e göndermeden önce kontrol etmemiz gereken, WP7‘ye özgü maddeler vardır.

Bu maddelere MSDN‘de yeralan Application Certification Requirements for Windows Phone sayfasından ulaşabiliriz.

Donanım

Şu anda piyasada bulunan Windows Phone cihazları tek bir ekran çözünürlüğüne sahiptir (480 x 800). Yakın gelecekte çıkacak yeni versiyonların birden fazla ekran çözünürlüğünü desteklemesi bekleniyor.

Windows Phone cihazların ortak yönlerinden biri, ön yüzlerinde aynı butonların bulunmasıdır;


Geri Butonu sayesinde uygulamalar ekranlar arası geri dönüş işlevlerini sağlayabilirler. İnternet tarayıcılarda bulunan Geri butonu ile aynı işleve sahiptir. Uygulamanın açılış ekranında kullanılması durumunda, ilgili uygulamanın kapatılmasına sebep olur


Windows Butonu kullanıcının telefonun başlangıç ekranına dönmesini sağlar


Arama Butonu sayesinde kullanıcılar telefonun arama özelliğini çağırabilirler

Sensörler
Windows Phone 7 telefonlarda geliştiriciler için en çok öneme sahip sensörler;

  • WI-FI : telefonların internete bağlanmak için kullandıkları bağlantı noktalarından biridir. WP7 telefonlarda Internet Explorer tarayıcısı gelmektedir
  • Camera : WP7 telefonlar en az 5MP kamera ve flaş desteğine sahiptir. Uygulamalar kamerayı veri giriş aracı olarak kullanabilirler
  • Accelerometer : İvmeölçer sayesinde uygulamalar telefonun 3 koordinat düzlemine göre (X-Y-Z) tutuluş bilgisini öğrenebilir
  • GPS : GPS sayesinde uygulamalar, telefonun dünya üzerindeki konum bilgisini alabilirler

Visual Studio 2010 ile New Project dialog penceresini açalım, Installed Templates kısmında yer alan proje şablon gruplarından Silverlight for Windows Phone‘u seçelim.

Sağ tarafa gelen proje şablonlarından Windows Phone Application‘ı seçip, projeye bir isim verelim ve OK butonuna tıklayarak projenin oluşturulmasını sağlayalım.

Eğer tüm güncellemeleri yaptıysak, proje oluşturulması sırasında Windows Phone 7 ve Windows Phone 7.1 (Mango) arasında seçim yapabileceğimiz bir dialog kutusu görmemiz lazım

Proje oluşturulduktan sonra çalıştıracak olursak eğer, ilk olarak Windows Phone Emulator yüklenecek, ardından ilk uygulamamız ekranda belirecektir.