ASP.NET CORE EĞİTİMİ
ASP.NET Core eğitimi, .NET ekosisteminde modern web servisi yazmak isteyen ekipleri uçtan uca pratiğe sokar. Minimal API ile Controller arasında seçim, DI ile Options pattern, EF Core'da N+1 ve change tracker tuzakları gibi gerçek karar noktaları üzerinden ilerlenir. .NET Framework deneyimi olan ekiplerin geçişi de düşünülerek tasarlanmıştır.
Program sonunda katılımcı, basit bir API yazmaktan çıkıp Health Checks, Serilog ve OpenTelemetry ile izlenebilir bir sistem kurma seviyesine ulaşır. JWT, OAuth2 ve Identity arasında ürün gereksinimine göre auth seçimi; Docker image, Azure App Service ve Kubernetes ile deploy yaklaşımları somut örneklerle çalışılır. Eğitim, ASP.NET Core belgeleri baz alınarak kurgulanır.
Katılımcı Profili
Bu eğitim, .NET ekosisteminde modern web servisi yazan veya yazacak rollere yöneliktir:
- .NET Geliştiriciler: ASP.NET Core ile REST ve gRPC servis yazan mühendisler
- Backend Mühendisleri: C# tarafında modern web framework kullananlar
- Solution Architect'ler: ASP.NET Core ile çözüm mimarisi tasarlayan roller
- DevOps Mühendisleri: .NET deploy ve CI/CD süreçlerini yöneten roller
- Migration Ekipleri: Klasik ASP.NET veya .NET Framework'ten geçiş yapan ekipler
Ön Gereklilikler
Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:
- C# ile temel programlama deneyimi (class, method, property)
- HTTP, JSON ve istemci-sunucu mimarisine aşinalık
- Visual Studio veya VS Code kullanım deneyimi
- Temel SQL ve ilişkisel veri modeli kavramları
- Git ile sürüm kontrol akışına temel aşinalık
Süresi ve Tarihi
Süre: 4 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.
Kazanımlar
Eğitim bitiminde katılımcı, ASP.NET Core ile üretim ortamına çıkacak servis yazıp ayakta tutabilir:
- Minimal API ile Controller arasında karar verir — söz dizimi değil ölçek üzerinden
- DI ve Options pattern ile config'i type-safe okur, sihirli string bırakmaz
- EF Core'da N+1 ve change tracker tuzaklarını query plan'a bakarak bulur
- JWT, OAuth2 ve Identity arasında ürün gereksinimine göre seçim yapar
- Middleware pipeline ile cross-cutting concern'leri tek noktada toplar
- Health Checks, Serilog ve OpenTelemetry ile uygulamayı izlenebilir kılar
- Docker image üretir, App Service / ECS / Kubernetes'e deploy eder
ASP.NET Core Eğitimi Konuları
1. ASP.NET Core ve Kestrel - Yeniden Doğan Web Stack
- Cross-platform .NET Core'dan birleşik .NET'e geçiş
- Kestrel sunucu: yüksek performans, self-host
- IIS ve Nginx ile reverse proxy modeli
- dotnet CLI ve proje şablonları
2. Program.cs ve Minimal Hosting Modeli
- Top-level statement ve WebApplicationBuilder
- Startup.cs'in evrimi ve Program.cs'e taşıma
- builder.Services ve middleware pipeline ayrımı
- Hot Reload ve geliştirici akışı
- Environment: Development, Staging, Production
3. Dependency Injection - Built-in IoC
- Singleton, Scoped, Transient yaşam süreleri
- IServiceCollection ve IServiceProvider rolü
- Constructor injection vs service locator antipattern
- Keyed services ile çoklu implementasyon
- IServiceScopeFactory ile scope yönetimi
4. Middleware Pipeline ve Request Akışı
- Middleware kavramı ve sıralamanın kritikliği
- Built-in: routing, authentication, CORS, static files
- Custom middleware yazımı (Use, Run, Map)
- UseWhen ve MapWhen ile koşullu dallanma
- Endpoint routing ve terminal middleware
5. Routing - Convention ve Attribute
- Conventional routing ve attribute routing
- Route template, parametre kısıtları, optional segment
- Area, controller ve action keşfi
- Route group ve prefix yönetimi
6. Controller, Action ve ApiController
- [ApiController] attribute ve otomatik özellikler
- HTTP verb attribute: HttpGet, HttpPost, HttpPut, HttpDelete
- IActionResult, ActionResult ve TypedResults
- [FromBody], [FromQuery], [FromRoute] binding
- RESTful kaynak tasarımı ve URL prensipleri
7. Minimal API - Yeni Yaklaşım
- MapGet, MapPost ile endpoint tanımı
- TypedResults ile tip güvenli dönüş
- Endpoint filter zinciri ile cross-cutting
- Route group ve organizasyon
- Controller vs Minimal API karar kriterleri
8. Model Binding ve Validation
- Model binding kaynakları ve öncelik sırası
- Data Annotations: Required, StringLength, Range
- FluentValidation ile gelişmiş kural yazımı
- DTO ve entity ayrımı, AutoMapper veya Mapster
- ModelState validation ve hata cevapları
9. Configuration ve Options Pattern
- appsettings.json ve hiyerarşik konfigürasyon
- IConfiguration ve IConfigurationSection
- IOptions, IOptionsSnapshot, IOptionsMonitor farkları
- Environment variable ve User Secrets
- Azure Key Vault ve dış config kaynakları
10. Logging ve Structured Logs
- ILogger<T> ve log seviyeleri
- Structured logging ve scope kullanımı
- Serilog ile yapılandırılmış sink'ler
- OpenTelemetry ile tracing ve metrics
- Correlation ID ve request scope log
11. Hata Yönetimi ve Problem Details
- Global exception handler middleware
- Problem Details (RFC 7807) standardı
- Custom exception sınıfları ve mapping
- Development ve Production ortamı farkları
- IExceptionHandler arayüzü
12. EF Core - LINQ to SQL Çevirisi
- DbContext, DbSet ve LINQ sorgu yazımı
- Code First migration: add, update, remove
- Eager, lazy, explicit loading farkları
- Tracking, AsNoTracking ve performans etkisi
- Compiled query ve cold-start iyileştirme
- Concurrency token ve optimistic locking
13. Authentication - JWT, Cookie, Bearer
- Authentication scheme ve handler yapısı
- JWT Bearer token üretimi ve doğrulama
- Cookie authentication ve session yönetimi
- Identity sistemi ile kullanıcı yönetimi
- Refresh token ve oturum süresi disiplini
14. Authorization - Policy ve Role
- [Authorize] attribute ve route koruma
- Role-based authorization
- Policy-based authorization ve requirement
- Claims transformation ve özel claim
- Resource-based authorization (IAuthorizationService)
15. HttpClient ve Polly ile Dayanıklılık
- IHttpClientFactory ve named/typed client
- Polly ile retry, circuit breaker, timeout, bulkhead
- DelegatingHandler ile interceptor pattern
- Refit ile declarative REST client
- Service Discovery ve dış konfigürasyon
16. Caching - Memory, Distributed, Output
- IMemoryCache ile in-process önbellekleme
- IDistributedCache ile Redis veya SQL Server
- Response caching middleware
- Output caching ve tag-based invalidation
- HybridCache ve modern caching yaklaşımları
17. SignalR ile Real-time Communication
- Hub yapısı ve client çağırma
- WebSocket, Long Polling, Server-Sent Events transportları
- Connection management ve group/user broadcast
- Redis backplane ile çoklu sunucu
- Authentication ve authorization SignalR'da
18. gRPC ve Performans Odaklı API
- Protocol Buffer (.proto) ile servis tanımı
- Unary, server streaming, client streaming, bidirectional
- gRPC-Web ve tarayıcı desteği
- API Gateway: YARP ve Ocelot
- REST ve gRPC ne zaman tercih edilir
19. Hosted Services ve Background Jobs
- IHostedService ve BackgroundService temelleri
- Timer tabanlı periyodik iş
- Channel ile producer-consumer pattern
- Hangfire ve Quartz.NET alternatifleri
- Distributed job ve idempotency
20. Native AOT ve Modern Deploy
- Native AOT (Ahead-of-Time) ile minimal binary
- Trimming ve reflection sınırları
- Dockerfile ve multi-stage build
- Health check, readiness ve liveness probe
- Kubernetes ve serverless deploy seçenekleri
ASP.NET CORE EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları
Minimal API ile Controller arasında karar nasıl verilir?
Minimal API az kod ile küçük servis veya internal API'ler için ideal — overhead düşük. Controller daha fazla seremoni ister ama büyük API'lerde route grouping, model binding ve filter kullanımı için daha düzenli. Ekip kod stil tercihi ve API büyüklüğü kararı belirler; ikisi tek projede birlikte kullanılabilir.
DI scope'ları (Singleton, Scoped, Transient) farkı nedir?
Singleton uygulama yaşam boyu tek instance. Scoped HTTP request başına bir instance (web uygulamasında yaygın). Transient her enjeksiyonda yeni instance. Yanlış scope seçimi memory leak veya thread safety sorununa yol açar — özellikle DbContext'i Singleton yapmak klasik bir hatadır.
EF Core'da N+1 problemi neden bu kadar yaygın?
EF Core lazy loading veya explicit loading yerine sessizce navigation property üzerinden ek query çıkarabilir. 100 satır okunan listede ilişkili entity için 100 ayrı SELECT atılabilir. Çözüm: Include, ThenInclude veya Select projection ile tek query'e indirme; ya da AsNoTracking + manuel join.
JWT, OAuth2 ve Identity arasında seçim ne zaman değişir?
Sadece stateless API auth gerekiyorsa JWT yeter. Üçüncü taraf login (Google, GitHub) veya kullanıcı yönetimi gerekiyorsa OAuth2 + OpenID Connect doğru. Tam kullanıcı yönetimi, parola sıfırlama, e-posta doğrulama gibi feature'lar gerekiyorsa ASP.NET Core Identity hazır çözüm sunar.
Middleware pipeline sırası neden bu kadar önemli?
Middleware sıralı çalışır; her birinin önceki çıktısı sonrakine girer. Örnek: Authentication, Authorization'dan ÖNCE olmazsa user identity oluşmaz. UseStaticFiles UseRouting'den önce gelmezse static dosya 404 döner. Sıra hatası genelde 'çalışıyor ama yanlış' davranışa yol açar.
Health Checks ve OpenTelemetry birlikte nasıl kullanılır?
Health Checks /health endpoint'i ile DB, Redis, dış servis bağlantısını döner; Kubernetes liveness/readiness probe için kritik. OpenTelemetry ise trace, metric ve log standardı; Prometheus, Grafana ve Jaeger'a export edilir. İkisi birlikte production'da observability hattının iki ayrı kolonudur.



