C# ve .NET Core Yazılım Geliştirme (Sıfırdan İleriye)
ARANAN YETKİNLİKModern yazılım prensipleriyle C# ve ASP.NET Core (MVC ve WebAPI) üzerinde üretim seviyesinde backend geliştirme yolculuğu
Aşama 1: C# Dilinin Temelleri
Syntax, Veri Tipleri ve DöngülerC# ve .NET Platformuna Giriş (CLR, JIT, IL)
Yazdığınız C# kodunun işletim sisteminde nasıl çalıştığını anlamak. MSIL ve JIT (Just-In-Time) kavramları.
Değişkenler ve Veri Tipleri (Value vs Reference Types)
int, byte, bool, double (Value) ile string, object, sınıf (Reference) ayrımları.
Tip Dönüşümleri (Casting, Parse, Convert)
Farklı tiplerdeki değerleri birbirine dönüştürme (Implicit/Explicit Casting). Boxing ve Unboxing.
Operatörler (Aritmetik, Mantıksal ve Atama)
+, -, %, ++, ==, !=, &&, || operatörlerinin işlem öncelikleri ve Ternary Operatörü (?:).
Karar Yapıları (If, Else If, Switch Statement, Switch Expressions)
Program akışını şarta göre bükmek.
Döngüler (For, While, Do-While, Foreach) ve Atlamalar (Break/Continue)
Tekrarlayan satırları otomatize etmek ve döngüyü kırma(break) pas geçme(continue) komutları.
String Manipülasyonları ve StringBuilder
Metinleri bölme(Split), birleştirme(Join), Küçük/Büyük harf (ToLower) ve String Interpolation ($"").
Diziler (Tek ve Çok Boyutlu Arrays)
Aynı tipteki verileri (int[], string[]) tek bir değişkende sıralı indekslerle depolamak.
Metotlar (Functions), Dönüş Tipleri ve Scope Kavramı (Değişkenin Ömrü)
Kodları parçalara(void veya return type) bölüp çağırmak. Sınıf seviyesi vs Metot seviyesi ömür.
Gelişmiş Metotlar (Optional/Named Parameters, Ref ve Out Keywordleri)
İsteğe bağlı parametre atama ve değere (Referansa) müdahale etme metotları.
Tuples, Structs ve Enums (Numaralandırmalar)
Sınıf(Class) yazmak istemediğiniz küçük veri taşıyıcılar ve sabit kodlu durum (Roller, Günler) listeleri.
Hata Yönetimi (Try-Catch-Finally, Throw ve Özel Hata Fırlatma)
Program çalışırken kopan Exception(İstisna) leri yakalamak ve loglamak.
Aşama 2: Nesne Yönelimli Programlama (OOP)
Class, Encapsulation, PolymorphismOOP Paradigmalarına Giriş (Class ve Object Mantığı)
Sınıf(Class) bir şablon, Nesne(Object) ise bu şablondan RAM'de üretilen canlıdır.
Yapıcı Metotlar (Constructors) ve Destructors
Sınıf "new"lendiğinde SADECE BİR KERE tetiklenen hazırlık fonksiyonları.
Erişim Belirleyiciler (Access Modifiers)
public, private, protected, internal koruma kalkanları.
Kapsülleme (Encapsulation) ve Properties (Get/Set)
Veriyi (private) gizleyip, dışarıya kontrollü bir kuyu(Property) ile sunmak.
Kalıtım (Inheritance) ve Sınıf Hiyerarşisi
Base (Ata) sınıftan, Derived (Türemiş) sınıfa kod/propety miras bırakma.
Çok Biçimlilik (Polymorphism) ve Override/Virtual Keywordleri
Ata sınıftaki bir fonksiyonu (virtual), yavru sınıfta ezerek (override) davranışını değiştirme.
Metot Gizleme (Method Hiding) ve Base/This Mantığı
Ata sınıftaki bir metodu "ezmeden" gölgelemek. Ata(base) ve Kendi(this) adresleri.
Soyutlama (Abstraction) 1: Abstract Sınıflar ve Metotlar
Nesnesi ("new" instance) KESİNLİKLE ÜRETİLEMEYEN sadece şablon (kural) olan sınıflar.
Soyutlama 2: Kutsal Interfaceler (Arayüzler)
İçerisinde HİÇBİR kod(gövde) veya field bulunmayan, %100 saf kural(imza) kontratları.
Record Yapıları ve Değiştirilemezlik (Immutability)
Sadece veri taşımak (DTO gibi) için tasarlanmış, değiştirilemez(readonly) özel sınıf tipleri.
Extension Metotlar (Genişletme Fonksiyonları)
Kaynak kodunu (String gibi) değiştiremediğimiz sınıflara dışarıdan kendi "Özel Metodumuzu" (Örn: ToTitleCase) eklemek.
Structs (Yapılar) vs Classes
Sınıflar gibi davranan ama HEAP değil STACK bellekte yaşayan VALUE tipler.
Aşama 3: Koleksiyonlar ve LINQ
Veri Yapıları ve SorgulamaNon-Generic vs Generic Koleksiyonlar (ArrayList vs List<T>)
Tarihöncesi (Object) listeler ile modern (Tip Güvenli) listelerin devasa performans farkı.
List<T> ve IEnumerable<T> Koleksiyonları
Dinamik, boyutu sınır tanımayan en temel veri yapısı ve iteratör.
Dictionary<TKey, TValue> (Sözlükler ve Key-Value)
Herhangi bir Anahtar(Key) vererek Değerini(Value) saliseler içinde bulmak.
HashSet<T> ve Eşsiz (Unique) Eleman Mantığı
İçerisinde aynı elemandan (Örp: aynı TC No) asla İKİNCİSİNİ barındırmayan özel kümeler.
Kuyruk (Queue) ve Yığın (Stack) Yapıları
FIFO (İlk giren ilk çıkar) ve LIFO (Son giren ilk çıkar) algoritma mantıkları.
Yield Keyword'ü ve İteratör(Iterator) Mantığı
Devasa (1 milyonluk) bir listeyi RAM'e tek seferde yüklemeden (şişirmeden), elemanları "İSTENDİKÇE TEK TEK" çağırma.
LINQ (Language Integrated Query) Giriş ve Lambda (=>) Operatörü
Koleksiyonlar üzerinde döngülerle uğraşmadan SQL vari tek satırlık şık komutlar atmak.
LINQ: Filtreleme ve Bulma (Where, FirstOrDefault, SingleOrDefault)
Liste içerisinde şarta göre elementleri yakalamak.
LINQ: Seçme ve Mapleme (Select metodu)
Bir objenin tüm özelliklerini değil, DTO gibi sadece "İstenen/Bellirli" alanlarını cımbızlayarak yepyeni bir liste yaratmak (Projection).
LINQ: Doğrulama ve Matematik (Any, All, Count, Sum, OrderBy)
Listedeki verilerin belli bir şarta uyup uymadığını sınama ve sayısal operasyonlar.
IQueryable<T> vs IEnumerable<T> (Performans Sırları)
Filtrelemeyi(Where) RAM'de yapmak ile SQL Sunucusunda yapmak arasındaki ince çizgi.
Aşama 4: .NET Ekosistemi ve Gelişmiş C#
Asenkron, Delegate, Memory Management.NET Framework vs .NET Core vs .NET 5+ (Tarihçe ve Evrim)
Sadece Windows'ta çalışan hantal yapıdan, Linux/Mac'te koşan (Cross-Platform) hafif açık kaynak kodlu mimariye geçiş.
Asenkron Programlama Temelleri (Thread/Process)
İşletim sistemindeki Process (Uygulama) ve onun içindeki İş Parçacıkları (Threads).
Async / Await ve Task Mimarisi (Gelişmiş)
Thread'leri bloklamadan beklemeyi (Non-blocking) kodlamanın en zarif yolu.
Temsilciler (Delegates)
İçinde int, string değil de "METOT/FONKSİYON" barındıran, fonksiyon taşıyan özel değişken tipleri.
Hazır Temsilciler (Action, Func, Predicate)
C# ın bizim için önceden hazırladığı standart Delegate şablonları.
Olaylar (Events) ve Gözlemci (Observer) Deseni
Butona tıklanması veya sepete ürün atılması gibi "Olayları(Event)" dinleyen mekanizmalar.
Garbage Collector (Çöp Toplayıcı) ve IDisposable
Heap bellekte unutulmuş, referansı kalmamış class nesnelerini (RAM) temizleme algoritması.
Reflection (Yansıma) Teknolojisi
Çalışma zamanında (Runtime) bir sınıfın adını, içindeki propertyleri okuma ve hatta içindeki gizli(private) metodu zorla çalıştırma.
Attributes (Nitelikler) ve Custom Attribute Yazımı
[Required], [Authorize] gibi classların/metotların omuzuna takılan metadata etiketleri.
NuGet Mimarisi ve Paket Yönetimi
Başkalarının (Microsoft veya Topluluk) yazdığı DLL/Kütüphaneleri projeye kolayca dahil etmek.
Aşama 5: Veritabanı ve SQL Temelleri
RDBMS, Joins, IndexingVeritabanı Nedir? (RDBMS vs NoSQL Kavramları)
Tablolar ve Sütunlardan oluşan (SQL Server, MySQL) ilişkisel yapılar ile Döküman(JSON) tabanlı (MongoDB) yapıların farkı.
Tablo Tasarımı ve Normalizasyon (1NF, 2NF, 3NF)
Veritabanında "Veri Tekrarını(Redundancy)" önlemek için tabloları parçalama sanatı.
Primary Key (PK) ve Foreign Key (FK) İlişkileri (1-N, N-N)
Her satırın değişmez TC Kimlik Numarası(PK) ve başka tabloya atılan kancası(FK).
T-SQL Temelleri (DML) - CRUD İşlemleri
Veri dünyasına giriş: SELECT(Read), INSERT(Create), UPDATE, DELETE.
Joins (Tablo Birleştirme) - INNER, LEFT, RIGHT, FULL
İlişkili(Akraba) tabloları tek bir sanal tabloda toplayıp raporlamak.
Filtreleme, Sıralama ve Mantıksal Operatörler (WHERE, ORDER BY)
Büyük datalardan istenen çöpü ayıklamak (LIKE, IN, BETWEEN, AND, OR).
Aggregate(Kümeleme) Metotları ve GROUP BY
Müşterilerin "Toplam (SUM), Ortalama (AVG), Sayısı (COUNT)" değerlerini gruplayarak raporlamak.
Performans Canavarı: INDEX OLUŞTURMA (Clustered vs NonClustered)
Milyonluk tabloda SELECT hızını saniyelerden milisaniyelere düşüren Fihrist(Arama) yapısı.
Stored Procedures (SP), Views (Görünümler) ve Triggers
Sorguları derleyip(.exe gibi) SQL sunucuda kayıtlı (Önbellekli) fonksiyonlar olarak tutmak.
Veri Bütünlüğü: ACID Prensipleri ve Transactions
Atomicity, Consistency, Isolation, Durability.
Aşama 6: Entity Framework Core (ORM)
Code-First, Migrations, PerformansORM Nedir? Neden Entity Framework Core?
Veritabanı tablolarını C# sınıflarına(Class), sütunları da Property'lere eşleme (Mapping) teknolojisi.
Code-First Yaklaşımı ve DbContext Sınıfı
Önce C# Sınıfını (Modeli) yazıp, veritabanını o sınıftan ototmatik oluşturma.
Konfigürasyon: Data Annotations vs Fluent API
Örn: Email alanı zorunlu olsun, Max uzunluğu 50 karakter olsun.
Tablo İlişkilerini Kodlamak (One-to-Many & Many-to-Many)
Kategori-Ürün (1-N) ve Öğrenci-Ders (N-N) bağlantılarını Navigation Property'lerle kurmak.
EF Core Migrations: Veritabanı Versiyonlama
Koda yeni bir Property (KdvTutarı) eklendiğinde SQL'i bozmadan senkronize etmek.
Change Tracking (Değişiklik İzleme) Mekanizması
Belleğe(RAM) giren bir kaydın Modified, Added veya Deleted olduğunu izleyen dedektif.
Veri Yükleme: Eager Loading (.Include) vs Lazy Loading
Siparişi çekerken yanında bağlı olduğu Müşteri(User) detayını da çekme yolları.
Sorgu Ertelenmesi (Deferred Execution) ve IQueryable
Döngü dönene(ToList) kadar SQL sunucuya gitmeyen (Bekleyen) sorgular.
N+1 Sorgu Problemi (N+1 Select Problem)
Veritabanı performansını çökertecek o meşhur yanlış.
AsNoTracking() ile Performansı Şahlandırmak
Sadece SELECT(Listeleme) yapılacak sayfalardaki Altın Kural.
Aşama 7: ASP.NET Core Mimarisi ve MVC
Pipeline, Middleware, RazorMVC (Model-View-Controller) Tasarım Deseni Nedir?
Kullanıcı Arayüzü (View) ile İş Mantığını (Controller) ve Veritabanı yapısını (Model) birbirinden kesin çizgilerle Ayırma prensibi.
Program.cs, Kestrel ve Host(Sunucu) Ayağa Kalkışı
Uygulamanın şaltere basıldığı(Main metodu) ve yerleşik Kestrel sunucusunun çalışmaya başladığı kalp ritmi.
Middleware (Ara Katman) ve Request Pipeline (Boru Hattı)
Gelen isteğin (Request) Controller'a ulaşmadan önce geçtiği güvenlik, log ve dil filtreleri.
Dependency Injection (DI) Container (IoC Merkezi)
`builder.Services.AddScoped<IProductService, ProductManager>()` mantığı ile bağımlılıkları Merkezi Kasada (Container) kaydetme sanatı.
Routing (Yönlendirme) Mekanizması
URL çubuğundaki (site.com/Home/Index/5) adresinin arkada Hangi Controller ve Hangi Metot ile eşleşeceğini çözen mekanizma.
Controllers (Denetleyiciler) ve Action Metotları
Gelen isteği karşılayan (Resepsiyonist) ve ilgili Servis(Database) ile konuşup arayüze veri dönen (IActionResult) sınıf yapıları.
Views (Razor Sayfaları) ve ViewData, ViewBag, TempData
.cshtml uzantılı dosyalarda C# (@) kodu ile HTML'i birleştiren Microsoft'un eşsiz şablon(Template) motoru.
ViewComponents ve Partial Views
Header, Footer veya "En Çok Satan Ürünler" gibi her sayfada tekrar eden (Modüler) html parçacıklarını izole etme.
Tag Helpers ve Form İşlemleri
Eski ASP.NET'teki `@Html.TextBoxFor` spagettisinden kurtaran, `<input asp-for="Name">` şeklindeki temiz/okunabilir Form etiketleri.
Model Binding ve Validations (Data Annotations)
Html formundan (Input) kullanıcının girdiği verileri C# Class parametrelerine ZAMK gibi yapıştırma ve [Required] gibi güvenlik filtreleri kontrolü.
Aşama 8: ASP.NET Core REST API ve Güvenlik
JSON, JWT Auth, Minimal APIsREST Mimarisi ve İstemci-Sunucu (Client-Server) Prensibi
Veriyi HTML(Görsel) olarak değil, saf "JSON" formatında sunan, dilden ve platformdan(Mobil/Web) bağımsız sistem.
HTTP Metotları (GET, POST, PUT, DELETE, PATCH, OPTIONS)
Tarayıcıların URL çubuğundan sadece "GET" atabildiği dünyada, Postman/Swagger ile veritabanına hükmetme.
HTTP Statüs Kodları (Status Codes)
200 (OK), 201 (Created), 400 (Bad Request), 401 (Unauthorized), 404 (Not Found), 500 (Server Error).
API Endpoint (URL) Tasarım Standartları
site.com/api/getuserbyid/5 şeklindeki iğrenç (fiilli) URL'leri bırakıp Noun(İsim) bazlı REST standartlarına geçmek.
Swagger (OpenAPI Spesifikasyonu)
Yadığınız API'yi Postman'e muhtaç kalmadan, görsel bir web arayüzünde dökümante Etmek(Dokümantasyon) ve Test etmek.
Data Transfer Objects (DTO) ve AutoMapper
Veritabanı Entity'lerini(Sınıflarını) API'den doğrudan (Çıplak) DIŞARIYA dönmemek ve İÇERİYE almamak.
Minimal APIs (.NET 6+ ile Gelen Devrim)
Controller dosyaları (Class) kullanmadan Thetek `Program.cs` üstünde Nodejs/Express vari hızlı API uçları(Endpoints) tasarlamak.
Kors Koruması (CORS - Cross Origin Resource Sharing)
React/Angular (localhost:3000) de çalışan sitenin, API(localhost:5000) ye İstek(Ajax) attığında Yediği Engel.
Kimlik Doğrulama: ASP.NET Core Identity Mimarisi
Sıfırdan User, Role, Şifreleme(Hashleme) yazmak yerine Microsoft'un hazır Güvenlik Altyapısını projeye entegre etmek.
Yetkilendirme Güneşi: JWT (JSON Web Token)
Kullanıcı doğrulandığında(Login) (Stateless çalışan REST API dünyasında) adamın Cebine koyduğumuz Güvenlik Kartı / Vize.
Authorization (Yetkilendirme) ve Claim Mantığı
JWT si(Bileti) olan herkes Girebilir mi? Kim Admin, Kim Müşteri, Email onaylamış mı?
Aşama 9: Mimari Tasarım Desenleri
SOLID, CQRS, Clean/Onion ArchitectureSOLID Prensipleri 1: Single Responsibility (SRP)
Her sınıfın(Class) veya metodun SADECE TEK BİR SORUMLULUĞU olması kuralı (Fat Controller ölümüdür).
SOLID Prensipleri 2: Open/Closed (OCP)
Sınıfların "Gelişime (Dışarıdan kod eklemeye) AÇIK", ancak "Değişime (İçindeki kodu bozmaya) KAPALI" olması.
SOLID Prensipleri 3: Liskov Substitution (LSP)
Alt sınıfların (miras alanların), hiçbir kodu veya sistemi bozmadan üst(baba) sınıfların yerine geçebilmesi.
SOLID Prensipleri 4: Interface Segregation (ISP)
Sınıfların, KULLANMAYACAKLARI metotları barındıran şişman (Fat) Interface'lere zorlanmaması.
SOLID Prensipleri 5: Dependency Inversion (DIP)
Üst seviye modüllerin (Controller), alt seviye modüllere (DatabaseLogger) doğrudan (new kelimesiyle) bağımlı OLAMAMASI kuralı.
Repository ve Unit of Work (UoW) Paternleri
Veritabanı CRUD(Ekle/Sil) kodlarını Controller'dan soyutlayan ve Tüm işlemi (Transaction) tek bir onayla (Commit) kaydeden desenler.
Clean Architecture ve Onion (Soğan) Mimarisi
Domain(Core/Model) klasörünün en merkeze (Sıfır Bağımlılıkla) oturup, Database, UI ve API'nin dış katmanlardan içe doğru (Interface ile) bağımlı olması.
CQRS (Command Query Responsibility Segregation)
Veritabanında "OKUMA" (Select - Query) yapan sınıflar ile "YAZMA" (Insert/Update/Delete - Command) yapan sınıfların fiziksel ve mantıksal olarak KESİN çizgilerle İkiye Ayrılması.
MediatR Kütüphanesi ve Mediator Deseni
Controller'dan onlarca servisi(Inject yaparak constructorı şişirmek yerine) tek bir IMediator arayüzü ile yönetmek.
Aşama 10: Test, DevOps ve Deployment
xUnit, Docker, CI/CD, SunucuYazılım Testi: Unit Test ve xUnit
Yazılan kodun (Örn: Sepet Tutarı Hesapla) doğru çalışıp çalışmadığını, projeyi ayağa kaldırmadan otomatik test eden kod parçacıkları.
Mocking (Moq Kütüphanesi) ve TDD (Test Driven Development)
Test yazarken gerçek SQL veritabanına bağlanmak yerine, "Sahte/Taklit (Mock)" nesneler yaratıp izole test yapmak.
Entegrasyon Testleri (Integration Tests)
Sadece bir metodun değil; Veritabanı, Redis ve API Controller'ın HEP BİRLİKTE (Uçtan uça) doğru ahenkle çalışıp çalışmadığını sınamak.
Distributed Caching (Dağıtık Önbellek) ve Redis / Memcached
Veritabanı okuma yükünü sıfıra indirmek için, sık değişmeyen (Örn: Kategoriler) verileri RAM sunucusunda (Redis) süreli (TTL) olarak tutmak.
Message Brokers (RabbitMQ, Kafka) ve Asenkron İletişim
Mikroservisler arası veya ağır işlemlerde (10 bin kişiye Mail atılacaksa) sunucuyu kitlemeden, görevi Kuryeye(Kuyruğa) devretmek.
Konteynerizasyon ve Docker
Yazılımı tüm ayarları, SDK'sı ve kütüpheneleriyle birlikte bir Kutuya (Container) hapsetmek. "Benim bilgisayarımda çalışıyordu!" bahanesini bitirmek.
Veritabanı İzole Etme: Docker Compose
API (Backend), Redis ve PostgreSQL (Veritabanı) servislerinin kendi aralarında kapalı bir network ile tek komutla ayağa kalkması.
CI/CD (Sürekli Entegrasyon ve Dağıtım) - GitHub Actions
Kod Pushlandığı(GitHub'a atıldığı) an otomatik olarak Unit Testlerin Run edilmesi, Docker Image'in alınması ve Sunucuya Publish(Deploy) edilmesi silsilesi.
Hosting, Cloud ve Canlıya Alma (Deployment)
Uygulamayı IIS (Windows), Nginx (Linux), AWS veya Azure (Bulut) sistemlerine başarıyla konumlandırıp Domain(Domain.com) bağlamak.
Bilgi Sorumluluktur
buyoldan.com tarafından sunulan bu yol haritaları, yalnızca öğrenme sürecini kolaylaştırmak amacıyla hazırlanan birer rehber ve tavsiye niteliğindedir. Konular zamanla güncellenebilir, değişebilir veya sınav sistemlerine göre farklılık gösterebilir. Hedefine ulaşırken yalnızca buradaki içeriklerle yetinmemeni, resmi kaynakları ve güncel müfredatları da düzenli olarak araştırmanı şiddetle öneririz. Kendi yolunu çizmek senin elinde!
Buna Da Göz At
Python Geliştirici (Backend & Otomasyon)
Python kullanarak; temel script yazımından başlayıp Django/FastAPI ile gelişmiş backend servisleri ve web scraping otomasyonları kurmaya uzanan uzmanlık rotası.
Yapay Zeka ve Veri Bilimi Uzmanı (AI & Data Science)
Lineer cebirden makine öğrenmesine, derin sinir ağlarından üretken yapay zekaya (ChatGPT) uzanan en profesyonel ve eksiksiz AI rotası.
Java Geliştirici (Backend & Microservices)
Sıfırdan ileri seviye Java Core mimarisine, Spring Boot ekosistemine ve Mikroservis dünyasına uzanan, en ince ayrıntılarıyla tasarlanmış devasa kurumsal(Enterprise) geliştirici kılavuzu.