Fırat Esmer

ANLATILAN SENİN HİKAYENDİR - KARL MARX

UWP Community Toolkit

UWP Community Toolkit

Hatırlarsınız eskiden Microsoft'un ASP.NET projelerinde kullanılması için hazırladığı fakat herkesin kullanırken 2 kere düşündüğü 2.sinde ise vazgeçtiği bir AJAX Toolkit'i vardı. Daha sonra AJAX Toolkit'in yerini DevExpress, Telerik vs. gibi hazır kontroller sunan 3.parti kütüphaneler almıştı. Sebebi basit; ihtiyaçtı. Şimdi size anlatacağım UWP Community Toolkit de bu duruma benzer konumda.

UWP, Windows SDK'nın güncellenmesi ile beraber yeni özellikler kazanan bir platform fakat insanların ihtiyaçlarını karşılama konusunda yetersiz olduğu anlar da olabiliyor. Microsoft bunu görüp açık kaynak kodlu bir toolkit hazırlamış: UWP Community Toolkit. Eğer UWP için kod yazdıysanız ne dediğimi anlıyorsunuzdur. En basit örneğiyle Facebook veya Twitter mobil uygulamalarında yukarıdan aşağıya çekildiğinde veri kaynağını güncelleyen bir kontrol (PullToRefreshList) olsa da (hazıra konmak evet) bunu uygulamamızda kullansak demişsinizdir. İşte UWP Community Toolkit ile mümkün.

UWP, HoloLens'ten IoT'ye, Xbox'dan mobile kadar her platforma hitap ettiği için bir çok alanda kullanılabiliyor. Gelelim içerisinde neler olduğuna...

Toolkit 4 bölümden oluşuyor :

  1. Kontroller (HamburgerMenu, AdaptiveGridView vs.),
  2. Servisler (Bing, Facebook, Twitter, LinkedIn vs.),
  3. Bildirimler (LiveTile, Toast vs.),
  4. Animasyonlar (Fade, Scale vs.).

Ek olarak yardımcı metotların (HttpHelper, ImageCache vs.) da bulunduğunu söyleyeyim.

Ben bu yazıyı yazarken versiyon 1.2 de yayınlanmış. Hazır yayınlanmışken incelemek isteyenler için kaynakların arasında onu da belirteyim.

UWP Community Toolkit v1.1 duyurusu için buraya,

UWP Community Toolkit v1.2 duyurusu için buraya,

Kaynak koduna (GitHub) ulaşmak için buraya, dokümantasyona ulaşmak için buraya, örnek uygulamalara indirip denemek isterseniz de buraya tıklayabilirsiniz. UWP Community Toolkit'i kullanacaksanız demoya kesinlikle bakın. İçerisinde direkt hazır XAML kodu bile var. İşinizi kolaylaştıracaktır.

Biraz fazla link verdim farkındayım fakat neler olup bittiğini öğrenmek istiyorsanız aradığınız her şey burada var. Son olarak, versiyon 1.3'te neler olacağını (Roadmap) görmek isterseniz de buraya tıklayabilirsiniz.

Son olarak nasıl indiririm diyenlere => Buyrun UWP Community Toolkit Nuget paketleri

NOT

  1. Visual Studio yüklediğinizde umarım Universal Windows App Development Tools seçeneğini seçmişsinizdir. Bu şartlardan ilki (Visual Studio kurulumu esnasında seçmediyseniz daha sonra installer üzerinden ekleme yapabiliyorsunuz),
  2. UWP uygulamarınızın çalıştırılacağı Windows 10 versiyonu minimum 10586 olmalı.

Bol linkli yazının bonusu

Template 10 - UWP Template Eklentisi

Son zamanlarda UWP (Universal Windows Platform) ile ilgileniyor olmam sayesinde yeni şeyler öğrendim, bu öğrendiklerimi parça parça -eğer siz de Windows 10 uygulama geliştirme işleriyle uğraşıyorsanız- anlatmak isterim. Bunların başında bir template geliyor ve bu template aslında yapmanız gereken işlerin %80'ini sizin için yapıyor. Tamam da neden buradan başlıyoruz? Hemen konuya girelim.

Geçmişte WPF uygulamalar yaptıysanız yani az da olsa XAML/C# biliyorsanız UWP sizin için zor olmayacaktır. Çünkü XAML ile ilgili çok fazla değişiklik yok. UWP'de olup WPF'de olmayan veya tam tersi gibi bir durum söz konusu fakat işler bizler için zorlaşmamış aksine kolaylaşmış. Compiled Binding (x:Bind) işlemlerinden event binding'e çok güzel özellikler eklenmiş ki konumuz bu değil buna ileride de değinmek istiyorum.

Gelelim template (şablon) mevzusuna. UWP application tasarımı için Microsoft'un geliştiricilere sunduğu bazı kurallar var ve sizlerden bunlara uymanız bekleniyor. Uymadığınız takdirde en fazla mağazaya uygulamanız kabul edilmez. Kısacası araştırmam ihtiyaçlarımdan doğdu ve tasarım yapmaktan hiç hoşlanmıyorum, külfet geliyor bana. O yüzden Jerry Nixon adında Microsoft çalışanı abimiz demiş ki "Bir template olsun içerisinde Hamburger Menu'den navigation service'e, Dependency Injection'dan Messenger'a, MVVM'den behavior'lara ve White/Dark tema desteğine kadar her şey olsun ve bu template bir de open source" olsun demiş. Çok da iyi demiş.

Tüm Windows cihaz ailesi ile uyumlu mu bilmiyorum fakat telefon/tablet ve bilgisayarlarda uygulama çok güzel görünüyor. VisualStateManager dahi eklenmiş, ekran küçüldüğü zaman siz bir şey yapmıyorsunuz, Hamburger Menu'nün görünümü kendisi değişiyor. Control görünümü ile ilgili değişiklikleri eklemeniz gerekiyor hepsi bu. Bir örnek göstereyim.

Kısacası sizin layout ile ilgili yapmanız gereken çoğu şey yapılmış. Sürekli sadece layout yükmüş gibi bahsediyorum ama MVVM implement edilmiş, ayarlar konmuş, splash screen'i hazır, NavigationService metotları "buyrun size nasıl yardımcı olabilir" der gibi gözlerinizin içine bakıyor.

Windows SDK Güncellendiğinde Ne Olacak?

Windows işletim sistemi ara ara büyük güncellemeler alıyor ve SDK'lar güncelleniyor. Windows 10 yayınladığı günden bu yana 10240, 10586 ve Anniversary Edition 14393 (Yıldönümü Güncellemesi) versiyonları çıktı ve T10 da bu hıza ayak uydurabiliyor. Hatta Windows Insider (beta katılım) sayesinde yayınlanmadan önce ne gibi değişiklikler geleceği, nelerin değişmesi gerektiği gibi kritik adımları önceden tespit edip T10'u güncelliyorlar. Buna da bir örnek vereyim. Windows 14393 ile gelen UI değişikliklerinden birisi de Hamburger Menu'de seçili olan item'ın solunda "seçili olduğuna dair bir ifade beliriyor" bu da T10'da var.

Soldaki image Windows'un ayarlar menüsü, sağdaki ise benim T10 Template kullanarak yarattığım bir application'ın menüsü.

Gördüğünüz gibi Windows üzerinde yaşanan değişiklikler de T10 Template'e ekleniyor. Ayrıca sizi temin ederim ki güncellemenin çıkmasıyla NuGet üzerinden uygulamamı güncelledim.

T10'u Kullanmalı mıyım? Neden?

UWP için uygulama hazırlayacaksanız kullanmanızı öneririm. Sebepleri ise:

  1. Microsoft'un, dediğim gibi uygulamanızı hazırlarken uymanızı istediği Windows uygulamarına ait belli bir tasarım kalıbı var. Nasıl Google'ın Material Design'ı varsa aynısı Microsoft için de geçerli. Sebebi ise göze ve kullanıma uygun olması,
  2. Sizi bir çok kod yazma işinden kurtarıyor. Dediğim gibi kendi içerisinde implement edilmiş (ve eklenmeye devam edecek) servisler, metotlar var,
  3. Uygulama open source (açık kaynak) ve GitHub üzerinde talepleriniz ciddiyetle dinlenip uygulanabiliyor.

Bu arada size 3 farklı şablon seçeneği sunuluyor. Bunlar :

  1. Blank,
  2. Hamburger,
  3. Minimal.

Evet geldik bu şablonu nerede bulabileceğiniz konusuna. T10 hakkında kod örnekleri, yol haritası, hatalar veya geliştirmeler, Wiki gibi bilgilere GitHub üzerinden erişebilirsiniz. Eklentiyi (template) direkt indirmek istiyorsanız Visual Studio'nun eklentiler kısmından (Tools -> Extensions & Updates) aratarak veya Visual Studio Gallery üzerinden indirebilirsiniz.

NOT : Visual Studio 2015 için geçerlidir.

Hoşgeldin .NET Standard

Microsoft'un cross platform vizyonu ile değişikliğe uğrayan .NET kütüphanesinin son adımı .NET Standard oldu. Kısaca .NET Standard nedir, neden böyle bir şey var bunlardan bahsedelim.

Microsoft, son zamanlarda "One [X] to rule them all" (hatırlayın UWP) mottosu .NET kütüphanesine dokundu ve artık .NET kütüphanesinin (aslında API'lerinin) her yerde kullanılabileceğinin işareti verilmiş oldu. Böylece diğer platformlarda da aynı kütüphanenin kullanılmasının önü açılmış oldu.

Öncesinde .NET Framework, .NET Core ve Xamarin'in kendine ait kütüphaneleri vardı, şimdi ise hepsinin temelinde .NET Standard bulunuyor. Böylece .NET'in sahip olduğu tüm API'ler tüm platformlarda kullanılabilecek. Evet, Portable Class Library (PCL) artık yok.

Birden fazla ortamda kod yazmanın farklı kütüphaneleri kullanma gerekliliğinin tek bir çatı altında toplanmasından ne eksik ne de fazla .NET Standard. Bu arada, .NET Standard 2.0'dan bahsediyoruz. 1.0 nerede? O zaten vardı, .NET Core 1.0 ile gelmişti. Hatta şu alanlarda kod yazanlar bilir => .NET Core 1.6, .NET Framework 4.5+, Universal Windows Platform 10.0.

.NET Standard'ın modelde nerede olacağını aşağıdaki resimlerden görebilirsiniz.

  

.NET Standard yokken

.NET Standard varken

Microsoft .NET Blog sayfasındaki haber ile ilgili makaleyi okumak için buraya tıklayabilirsiniz.

Visual Studio Eklentisi - UWP Tile Generator

Windows 10 piyasaya sürüldükten sonra Universal Windows Platform (UWP) ile ilgili biraz araştırma yapıp bir kaç ufak uygulama geliştirmiştim. Uygulama geliştirme esnasında kolaylık sağlayan bir kaç ipucundan bahsedeceğim. Bu başlık altında bunlardan bir tanesi olan UWP Tile Generator eklentisinden bahsedeceğim. Nedir bu eklenti, ne işe yarar? Başlayalım...

Windows 10 bize ne demişti? Tüm cihazlar tek bir işletim sistemi çalıştıracak, tek bir market altında tüm uygulamalara ulaşılabilecek. Bunun önünü açan tabi ki UWP'den başka bir şey değil. E tabi bunun yanında ufak bir kaç sorun geliyor mesela her cihazın ekran boyutu farklı olduğu için açılış ekranında gözüken resim (splash screen) veya işletim sisteminin başlat menüsünde bulunan kutucuğun boyutu (small, medium, wide, large) da değişken olabiliyor. Zaten Windows mağazasına koyacağınız UWP uygulamanızın farklı ekran boyutlarını destekliyor olması lazım. Sebebi de aşağıda belli.

Windows Phone Emulators

Hal böyle olunca uygulamanın package.appxmanifest kısmında istenilen oranlarda uygulamanızın kaynağını (Tile Image & Logo, Splash Screen, Badge Logo) yüklemeniz gerekiyor.

Visual Studio üzerinde UWP uygulaması açtığımızda default olarak Assets klasörü altında 7 adet dosya oluyor fakar bunlar boş içerikli.

UWP Assets

Şimdi tek bir tıkla tüm boyutlarda kaynak üretebildiğinizi düşünün. İşte burada UWP Tile Generator eklentisi devreye giriyor. Tüm hepsini silin ve bir tane bırakın. O da sizin default kaynak dosyanız olsun. Örnek olsun diye Microsoft logosunu koyacağım.

NOT :

  • Eklentiyi kullanabilmek için Visual Studio 2015 versiyonları dışında çalışmamaktadır. Zaten UWP development için Visual Studio 2015'e ihtiyacınız var,
  • .PNG uzantılı olmasına, 400x400 boyutundan daha büyük ve padding olmamasına dikkat edin aksi takdirde uyarı almanıza rağmen çalışacaktır fakat kötü bir görüntüye sahip olacaktır.

Assets altında bulunan tek dosyamıza sağ tıklayıp "Generate UWP Tiles (ve Splash)" dediğinizde ise size ihtiyacınız olan tüm boyutlarda dosyaları hazırlayıp Assets klasörü içerisine yerleştirecek. Durun, bitmedi! Package.appxmanifest dosyasında da (bu dosya uygulamanızı mağazaya koymadan önce gerekli ayarları barındırıyor) gerekli yerlere koyuyor bunları. Size ise sadece uygulamayı çalıştırmak kalıyor.

Çıktıyı ve programın açlış görüntüsünü gösterelim ve bu işi bitirelim.

Visual Studio Assets

UWP Splash Screen

(Uygulamanın arka plan rengini blog renginden ayırmak için kararttım)

Son olarak başlat menüsünde Tile Image'a bakalım. Wide'da böyle görünüyor.

Siz de benim gibi bu tür görsel işlerle uğraşmaktan nefret ediyorsanız buyrun eklentiyi kullanın.

Eklentiyi indirmek (ücretsiz) için buraya tıklayabilirsiniz, görüşmek üzere.

Desktop App Converter Hazır

Microsoft'un mağaza uygulama çeşitliliğini ve sayısını artırmak ve daha önceden yazılmış .NET kodunun tekrar tekrar yazılmasını engellemek adına Windows uygulamalarınızı (.NET Framework 4.6.1 veya Win32) Universal Windows Platform'a (UWP) çevirmenizi mümkün kılan aracı Desktop App Converter indirilmeye hazır.

Microsoft'un yeni vizyonunun bir parçası olan ve Windows 10'un piyasaya sunulması ile her ürün ailesinin aynı uygulamayı farklı cihazlarda çalıştırabilmesi için yazılımcılara kolaylık sağlayan bu araç aslında sadece komut isteminden ibaret. Uygulamanızın nerede olduğunu ve çevrilmiş halinin de nereye konulacağını (bunun yanı sıra yayıncı, versiyon vs.) parametreler şeklinde sizden istiyor ve son kalan işlem de bunu deploy etmek oluyor. Ortaya nasıl bir şey çıkıyor denemedim, ihtiyacım olana kadar da denemeyi düşünmüyorum. Fakat siz merak ediyorsanız;

Windows mağazasından indirmek için buraya, hakkında detaylı bilgi almak için de buraya tıklayabilirsiniz.

MSDN üzerinde bulunan teknik detayları da buradan görebilirsiniz.