If-Else Yerine Kullanabileceklerin

  Medium vs makale okurken, birbirinden farklı konulara denk geliyorum. Bizim temel sorunumuz bazı şeyleri basitleştirebilmek. En zoru, baştaki adımları atmadan en son adıma geçmek istiyoruz.

Başlangıcımız konumuzdan çok farklı bir noktaya gitti ama yazının temel noktası, kodun içerisinde if-else blokları arasında kaybolmadan kodumuzu nasıl yeniden yazabiliriz.

Continue reading

Linked List te Ortadaki Elmanı Bulma

 Uzun zamandır blog yazmıyordum, geçen bir mülakat sırasında sorulan soruya karşılık bu yazı veya kod parçacığını yazmak istedim. Linked List Nedir başlıklı yazımı 2016 yılında yazmışım. Dolayısıyla çok fazla tanıma vs girmeyeceğim.

public class Node
{
    public int Data { get; set; }
    public Node Next { get; set; }

    Node(int data)
    {
        Data = data;
        Next = null;
    }
}
 
public class LinkedList
{
    Node head;
 
    public void Push(int data)
    {
        Node newNode = new Node(data);
        newNode.Next = head;
        head = newNode;
    }
}
 

Continue reading

Entity Framework Core Many to Many Relationship

  Karantina günlerinden herkese selamlar, evde kendime projeler bulmaya çalışırken, bir siteden denk gelipte ilham aldığım, benimde aklımda bir süredir olan wordpress apileri ile bir proje kodlamaya başladım. Fikir kısaca wordpress api lerini kullanarak hazırda olan sitenizden istediğiniz yazı,kategori gibi özellikleri dışarıdaki bir servis aracılığıyla sunmak.

 Bu apinin sunduğu özellikleri kullanarak frontend framework lerinden biriyle bir blog ayağa kaldırmaktı ama aşama aşama gitmeyi tercih ettim.İlk başta Asp.Net Core MVC ile bu sistemi ayağa kaldırmaya çalıştım. Entity Framework ile bir işimiz olmamasına rağmen modelleri oluşturup, MVC yapısını oluşturmaya çalıştım.

Continue reading

Asp.Net Core Startup Class

Asp.Net Core uygulamaları kural olarak Startup isimlendirme kuralına sahip bir Startup sınıfını kullanır.
 
Startup class ı , uygulama için gerekli servisleri barındırır aynı zamanda Reuqest Handling Pipeline içerir. ( Pipeline kelime anlamıyla boru hattına denk gelmektedir. Anlam olarak ise sıraya koyma gibi düşünülebilir. Burada pipeline ile ilgili açıklamayı bulabilirsiniz.)
 
İsteğe bağlı olarak , uygulamanın servislerini yapılandırmak için bir ConfigureServices methodu içerir. Servisler uygulama tarafından kullanılan componentlerdir. Klasik örnek olarak Log servisi verilebilir. Servisler uygulamanın işlevselliğini sağlayan yeniden kullanılabilir componentlerdir. Servisler ConfigureServices de register edilir ve uygulama genelinde DI veya ApplicationServices 
aracılığıyla kullanılır.
 
Uygulamanın request handling pipeline ı oluşturmak için Configure methodu içerir.
 
ConfigureServices ve Configure methodları uygulama çalıştığında Asp.Net Core runtime ı tarafından çağrılır.
 

Continue reading

Asp.Net Core Hakkında

   Asp.Net Core Microsoft un kendi sayfasında yer alan tanıma göre mo-dern,cloud based ve internet e bağlı uygulamalar yapmak için cross plat-form yüksek performanslı , açık kaynak bir framework tür.
 
Asp.Net Core aşağıdaki avantajları sağlar.
 
  • Web API ve Web UI için tümleşik bir ortam sağlar.
  • Test edilebilirlik için tasarlanmıştır.
  • Razor Pages, sayfa odaklı senaryoları kodlamayı daha kolay ve daha verimli hale getirir.
  • Blazor, tarayıcıda JavaScript ile birlikte C# kullanmanıza izin verir.
  • Windows,MacOs ve Linux üzerinde geliştirme ve çalıştırma yeteneğine sahiptir.
  • Open Source ve Community odaklıdır.
  • gRPC kullanarak Remote Procedure Call hizmetlerini barındırma desteği vardır.
  • Buluta hazır, environment tabanlı konfigürasyon sistemine sahiptir.
  • Kendisi ile beraber Dependency-Injection gelir.
  • Kestrel,IIS,HTTP.sys,Nginx,Apache,Docker üzerinde host edilebilme yeteneğine sahiptir.

Razor Pages Scaffolding

 Scaffolding bir terim. İngilizce den Türkçe ye çevirdiğinizde iskele,yapı iskelesi,iskele kurmak gibi anlamlara denk geliyor. Programlama kısmında ise Scaffolding size otomatik olarak CRUD işlemlerini gerçekleştireceğiniz sayfaları üretiyor.

Pages klasörüne sağ tıklayıp, Add->New Folder ile Books adında bir klasör oluşturalım.
Daha sonrasında aşağıdaki görseldeki gibi, Books klasörüne sağ tıklayıp, Add->New Scaffolded Item seçeneğinden karşımıza çıkan pencereden  Razor Pages using Entity Framework(CRUD) App seçeneğinden ilerleyelim. Seçenekten sonra karşımıza çıkan dialog penceresinden aşağıdaki resim-deki mevcut işlemleri tamamlayalım.
 

Continue reading

Razor Pages Başlangıç

Razor Page, sayfa odaklı senaryolarda kodlama yaparken controller ve view kullanmaktan daha kolay hale getirebilir.
 
Projeyi oluşturma aşamaları. Ben Visual Studio 2019 Community Edition u tercih ettim. Yeni proje oluştururken aşağıdaki adımları takip ederek yeni Razor Pages uygulamanızı oluşturabilirsiniz.
 
 
 
 
 
 
 
Burada belirmekte fayda var, projenin adını RazorPagesBook verdiğim için scaffolding işlemlerde bu isim pattern iyle otomatik olarak sınıflar ü Continue reading

Dependency Injection

 Uzun zamandır Dependency Injection konusu hakkında yazmak istiyordum. Yazma üzerine süreklilik sağlamak istiyorum bu çerçevede yazmak istediğim konuların en azından girişini yaparak, daha sonrasında içeriklerini sağlamaya çalışacağım 🙂