.NET Nedir? Modern Backend Geliştirme Rehberi
# .NET Nedir? Modern Backend Geliştirme Rehberi
.NET, Microsoft tarafından geliştirilen açık kaynaklı, cross-platform bir geliştirme platformudur. Web API'ler, mikroservisler, cloud-native sistemler, masaüstü uygulamalar ve daha fazlası için güçlü bir altyapı sunar. Modern backend projelerinde .NET denildiğinde akla genellikle ASP.NET Core + C# + zengin birinci parti kütüphane ekosistemi gelir.
Kendi backend projelerimde .NET'in sunduğu performans, tip güvenliği ve olgun ekosistem sayesinde hem hızlı prototipleme hem de production-ready sistemler kurmada ne kadar etkili olduğunu defalarca deneyimledim.
Temel Yapı Taşları
Runtime ve SDK
.NET platformunun iki ana bileşeni vardır:
Yeni bir proje oluşturmak son derece basittir:
class=class="code-string">"code-comment">// Terminal'de yeni bir Web API projesi oluşturun:
class=class="code-string">"code-comment">// dotnet new webapi -n MyApi
class=class="code-string">"code-comment">// cd MyApi
class=class="code-string">"code-comment">// dotnet runASP.NET Core
ASP.NET Core, .NET'in web stack'idir. API'ler ve web uygulamaları için kullanılır ve şu özellikleri sunar:
C# Dili
C#, modern, tip güvenli ve sürekli gelişen bir dildir. Öne çıkan özellikleri:
Kod Örnekleri
Minimal API ile Merhaba Dünya
.NET 6 ile gelen Minimal API yaklaşımı, küçük servisler ve hızlı prototipler için idealdir:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet(class="code-string">"/", () => class="code-string">"Merhaba Dünya!");
app.MapGet(class="code-string">"/urunler", () =>
{
var urunler = new[]
{
new { Id = class="code-number">1, Ad = class="code-string">"Laptop", Fiyat = class="code-number">25000 },
new { Id = class="code-number">2, Ad = class="code-string">"Telefon", Fiyat = class="code-number">15000 }
};
return Results.Ok(urunler);
});
app.MapPost(class="code-string">"/urunler", (UrunDto urun) =>
{
class=class="code-string">"code-comment">// Veritabanına kaydet...
return Results.Created($class="code-string">"/urunler/{urun.Id}", urun);
});
app.Run();
record UrunDto(int Id, string Ad, decimal Fiyat);Controller Tabanlı API
Daha büyük projeler için controller yapısı tercih edilir:
[ApiController]
[Route(class="code-string">"api/[controller]")]
public class KullaniciController : ControllerBase
{
private readonly IKullaniciServisi _kullaniciServisi;
private readonly ILogger<KullaniciController> _logger;
public KullaniciController(
IKullaniciServisi kullaniciServisi,
ILogger<KullaniciController> logger)
{
_kullaniciServisi = kullaniciServisi;
_logger = logger;
}
[HttpGet(class="code-string">"{id}")]
public async Task<ActionResult<KullaniciDto>> GetById(int id)
{
var kullanici = await _kullaniciServisi.GetByIdAsync(id);
if (kullanici is null)
return NotFound();
return Ok(kullanici);
}
[HttpPost]
public async Task<ActionResult<KullaniciDto>> Create(KullaniciOlusturDto dto)
{
_logger.LogInformation(class="code-string">"Yeni kullanici olusturuluyor: {Email}", dto.Email);
var kullanici = await _kullaniciServisi.CreateAsync(dto);
return CreatedAtAction(nameof(GetById), new { id = kullanici.Id }, kullanici);
}
}Dependency Injection Kaydı
.NET'in yerleşik DI konteyneri, servisleri temiz bir şekilde yönetmenizi sağlar:
var builder = WebApplication.CreateBuilder(args);
class=class="code-string">"code-comment">// Servis kayitlari
builder.Services.AddScoped<IKullaniciServisi, KullaniciServisi>();
builder.Services.AddScoped<ISiparisServisi, SiparisServisi>();
class=class="code-string">"code-comment">// Entity Framework Core
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseNpgsql(builder.Configuration.GetConnectionString(class="code-string">"Default")));
class=class="code-string">"code-comment">// Redis Cache
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration.GetConnectionString(class="code-string">"Redis");
});
class=class="code-string">"code-comment">// Kimlik dogrulama
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidIssuer = builder.Configuration[class="code-string">"Jwt:Issuer"],
ValidAudience = builder.Configuration[class="code-string">"Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration[class="code-string">"Jwt:Key"]!))
};
});
builder.Services.AddControllers();
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();.NET Ekosistem Haritasi
.NET'in en buyuk guclerinden biri, Microsoft tarafindan desteklenen zengin birinci parti kutuphanelerdir:
Entity Framework Core (EF Core)
.NET'in resmi ORM'idir. Code-First yaklasimi ile veritabani semalarini C# siniflari uzerinden tanimlar, migration sistemi ile veritabani degisikliklerini versiyonlar. PostgreSQL, SQL Server, MySQL, SQLite ve daha fazlasini destekler.
SignalR
Gercek zamanli web uygulamalari icin WebSocket tabanli iletisim kutuphanesidir. Chat uygulamalari, canli bildirimler, dashboard'lar ve collaborative editing senaryolari icin idealdir.
ASP.NET Core Identity
Kimlik dogrulama ve yetkilendirme icin kapsamli bir cozum sunar. Kullanici yonetimi, rol tabanli erisim kontrolu, iki faktorlu dogrulama ve harici giris saglayicilari (Google, GitHub vb.) destekler.
gRPC
Yuksek performansli mikroservis iletisimi icin Protocol Buffers tabanli RPC framework'udur. REST'e kiyasla daha dusuk latency ve daha kucuk payload boyutlari sunar. Servisler arasi iletisimde ideal secimdir.
Background Services ve Worker
`IHostedService` ve `BackgroundService` siniflari ile arka plan gorevleri olusturabilirsiniz. Kuyruk isleme, zamanlanmis gorevler ve uzun sureli islemler icin kullanilir. Hangfire ve Quartz.NET gibi kutuphaneler ile genisletilebilir.
Health Checks ve OpenTelemetry
Production ortaminda uygulamanizin sagligini izlemek icin yerlesik health check mekanizmasi vardir. OpenTelemetry entegrasyonu ile dagitik izleme (distributed tracing), metrikler ve yapilandirilmis loglar toplanabiir.
MediatR ve CQRS
Her ne kadar birinci parti olmasa da, MediatR kutuphanesi .NET ekosisteminde CQRS (Command Query Responsibility Segregation) pattern'ini uygulamak icin en yaygin kullanilandir. Buyuk projelerde komut ve sorgu ayrimini temiz bir sekilde saglar.
.NET vs Diger Teknolojiler
.NET vs Node.js
.NET vs Go
.NET vs Java/Spring Boot
Yaygin Yanlis Kanalar
".NET sadece Windows'ta calisir"
Bu, .NET Framework donemi icin dogru olan ancak 2016'dan bu yana gecersiz bir bilgidir. .NET Core ve sonrasinda .NET 5+ tamamen cross-platform'dur. Linux container'larda production'da calisan binlerce .NET uygulamasi vardir.
".NET kapalı kaynak ve ücretli"
.NET tamamen acik kaynaktir ve MIT lisansi altinda dagitilir. Runtime, SDK, ASP.NET Core ve EF Core dahil tum ana bilesenler GitHub'da acik kaynak olarak gelistirilmektedir. Kullanimi tamamen ucretsizdir.
".NET sadece kurumsal projeler icin"
Minimal API yaklasimi ile .NET, kucuk mikroservisler ve hizli prototipler icin de son derece uygundur. Tek dosyalik bir API yazmak Node.js kadar basittir.
".NET ogrenme egrisi cok yuksek"
Modern .NET (top-level statements, minimal API, hot reload) ile baslangic sureci ciddi olcude kolaylastirilmistir. Yeni baslayanlar icin giriş bariyeri her zamankinden dusuktur.
"C# eski bir dil"
C# her yil yeni ozellikler ekleyen, surekli gelisen bir dildir. Pattern matching, records, required members, raw string literals gibi modern ozellikler dili cagdas tutmaktadir.
Baslangic Yol Haritasi
.NET ile backend gelistirmeye baslamak istiyorsaniz, iste adim adim bir rehber:
Adim 1: Ortam Kurulumu
Adim 2: C# Temellerini Ogrenin
Adim 3: Ilk API'nizi Yazin
Adim 4: Veritabani Entegrasyonu
Adim 5: Kimlik Dogrulama ve Guvenlik
Adim 6: Production Hazirligi
Adim 7: Ileri Konular
Kullanim Alanlari
Pratik Ipuclari
Sonuc
.NET, olceklenebilir backend sistemleri icin guvenilir, yuksek performansli ve uzun vadede surdurulebilir bir platformdur. Kendi projelerimde .NET'in sagladigi tip guvenligi, zengin ekosistem ve tutarli gelistirme deneyiminin buyuk ekiplerde bile verimliligi artirdigini gordum. Baslangic seviyesinden kurumsal olcege kadar her asamada guclu bir secimdir.
Backend projeniz icin .NET danismanligi alabilirim.
İlgili Makaleler
ASP.NET Core ile RESTful API Geliştirme
ASP.NET Core ile production-ready REST API geliştirmenin temellerini öğrenin. Controller, routing ve best practice'ler.
Entity Framework Core: Veritabanı İşlemlerinin Modern Yolu
Entity Framework Core ile veritabanı işlemlerini yönetin. Code-first, migrations ve performans optimizasyonu.
.NET'te Clean Architecture: Ölçeklenebilir Proje Yapısı
.NET projelerinde Clean Architecture uygulayın. Katmanlar, bağımlılık yönetimi ve test edilebilir kod için rehber.
Flutter Projeniz mi Var?
iOS, Android ve web için yüksek performanslı Flutter uygulamaları geliştiriyorum.
İletişime Geç