ASP.NET 5 Console Application

Selamlar;

Bugün aşağıda görüldüğü gibi Visual Studio 2015 RC ile Web projesi altında bir Console Application yaratacağız.

console

Proje ilk oluşturulduğunda önceki sürümlere göre aşağıda görülen bir takım değişiklikler görülür:

  • k ve klr artık DNX adını aldı..
  • kvm ise dnvm yada diğer adı ile .NET Version Manager oldu.
  • kpm ise bası özelliklerini dnu yani .NET Development Utility’e ve core NuGet’e devretti.
  • ASP.NET 5.0 ve ASPNET Core.50 framework isimleri project.json dosyası içinde artık dnx451 ve dnxcore50 isimler ile anılmaya başlandı.

global.json: Eklediğimiz tüm projeler global.json altında aşağıda görüldüğü gibi tanımlanır.

Kodlara geçmeden önce Web kategorisi altında Console Application yaratma fikrini tartışalım:

  • İsmi aslında kafa karıştırıcı. Asp.Net Console application yerine Dnx Console Application olabilirdi.
  • Öncelikle ilk amaç projeyi  kolayca cross-compiling yapabilmektir. Aslında classic bir console application’dan farkı direk dnxcore 5.0  üzerinde çalşıp .Net framework’den bağımsız olmasıdır. Böylece işletim sistemi gözetmeksizin linux ve başka işletim sistemlerinde de uygulamamız çalışabilmekte yani platform bağımsız uygulama yazılabilmektedir.
  • Gereksiz birçok paketin yüklenmesini engelleyerek çok daha az yer kaplayan bir proje yaratabiliriz. Böylece Martin Fowler’ın Microservices‘ler olarak bilinen design pattern’ına göre projemizin esas yapıcağı işleri farklı farklı küçük projelere mesala url’den sadece post eden yada get eden console applicationlara bölerek tek bir parça halinde olan projemizi yine bütün işi  yapan küçük projelere bölebiliriz. Ve daha sonra bizim önceden kurduğumuz kendi makinamızda küçük bir sanal sunucu gibi çalışan Docker’a koyabiliriz. Servisi koyduğumuz bu yere Docker Container denir. Daha sonra azure üzerine bu Docker’ı  publish edilip klonlayarak sayısını 500’e çıkarılabiliriz. Böylece scale yapmak gibi gelen yüke aynı işi yapan 500 küçük uygulama tarafından çok daha hızlı ve efektif olarak cevp vermiş oluruz. İşte bu yapıya Microservices diyoruz. Gerçekte Docker mantığı ilk olarak Linux sistemler için çıkmış ama daha sonra windows içinde geliştirilmiştir. Eğer biz Asp.Net console application yazarsak linux bir sisteme de ilgili kodumuzu publish edebiliriz. İşte normal Console Application’dan fark burada karşımıza çıkıyor. Docker aslında çok detaylı ve kapsamlı bir konudur.

microservices

Bugünkü örneğimizde basit bir oyun yazacağız. Console app’in arka rengini değiştirip istediğimiz yöne oklar ile cursor’u hareket ettireceğiz. Daha sonra space tuşuna bastığımız zaman dikdörgen çizdereceğiz.

Öncelikle Main() Methodunu yazalım. Console application’da da aşağıda görüldüğü gibi asenkron uygulama geliştirebiliriz.”async” ve “await” keywordleri bunun için yeterlidir. Main() methodu içinde basılan tuşa göre Fighter yani cursor yön tuşlarına göre MoveFighter() methodu ile hareket ettirilmektedir. ‘Esc’ tuşuna basılınca uygulama sonlanmaktadır. Ayrıca ‘space’ tuşuna basılınca dikdörgen çizilmektedir.

Değişkenler: Cursorun ve arka rengin tanımı, bir de cursorun kordinatlarının tutulduğu Fighter property’si bulunmaktadır.

Main():

InitGame(): Arka rengin değiştirlmesi ve cursorun başlangıç pozisyonuna getirilmesi işlemleri yapılır.

SetBackgroundColor(): Console application’ın arka rengi burdan değiştirilir.

MoveFighter(): Aşağıda görüldüğü gibi asenkron olarak çalıştırılan method’da belirtilen X ve Y kordinatlarında ilgili Fighter’ın yani cursorun kordinatları değiştirilir. Bu işlem sırasında CanMove() methodu ile cursorun hareket ettirilmek istenen noktanın açılan pencere sınırları içinde olup olmadığına bakılarak işlem tamamlanır.  RemoveFighter() burada önemli bir method’dur.  Amacı arka rengi tekrardan değiştirmekdir.

CanMove(): Cursorun hareket ettirilmek istenen X ve Y kordinatlarının, açılan pencere sınırları içinde kalıp kalmadığına bakılır.

RemoveFighter(): Arka rengi tekrardan değiştirmesi sağlanır.

DrawBox(): ‘Space’e basılınca diktörtgen çizilmesi  sağlanmıştır.

Burada dikkat edilmesi gereken konulardan biri de dnxcore50 altında ConsoleKey ve birçok dll’in çalışmamasıdır. Burada dnx451’in çalışması ve dnxcore50’nin çıkarılması için aşağıdaki gibi project.json altındaki frameworks’lerden dnxcore50’inin kaldırılması gerekmektedir. Böylece sadece dnx451 altında uygulama derlenir. Böylece platformdan bağımsız olan uygulamamız .Net framework’e bağımlı hale getirilerek platform bağımsız özelliği yitirilmiştir. Kısaca Asp.Net Console application ile normal Console Application arasında hiçbir fark kalmamıştır.

Program.cs: Tüm kodlar

Yukarıda görüldüğü gibi belli basit ve light uygulamalar için console applicationlar son derece uygun ve performanslıdır. Böylece geldik bir makalenin daha sonuna.

Yeni bir makalede görüşmek üzere hoşçakalın.

Herkes Görsün:

Sevebilirsin...

2 Yanıt

  1. Mustafa dedi ki:

    Asp.Net 5 yazıları ve Linux’da performans testlerini merakla bekliyoruz sizlerden :)

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir