Altbilgi içeriğine atla
Iron Academy Logo
C# Uygulaması
C# Uygulaması

Diğer Kategoriler

ASP.NET Core ile C# Web Uygulaması Oluşturmak

Tim Corey
52m 05s

Web uygulamaları oluşturmak modern geliştiriciler için temel bir yetenektir ve çekirdek proje yapılarını anlamak önemlidir. Tim Corey'nin "Intro to Web API" videosundan ilham alan bu makale, ASP.NET Core framework'ü kullanarak web uygulamaları oluşturmanın karmaşıklıklarına dalıyor.

Tim'in ipuçlarını izleyerek web uygulamanızı nasıl kuracağınızı, yapılandıracağınızı ve optimize edeceğinizi keşfedeceğiz, ASP.NET Core framework'ünün tam potansiyelinden yararlanarak verimli ve sürdürülebilir web sayfaları ve API'lar oluşturacağız. Web geliştirmeye yeni başlayan veya becerilerini geliştirmek isteyenler için, bu rehber web geliştirme iş yükünün karmaşıklıklarında gezinmenize yardımcı olacak ve etkili ve yüksek performanslı web uygulamaları oluşturmak için gereken bilgileri sağlayacaktır.

Giriş

Tim Corey, öğreticisine ASP.NET Core ile API'lar oluşturma konusunu tanıtarak başlıyor. Sağlam ve ölçeklenebilir web uygulamaları oluştururken API temellerini anlamanın önemini vurgular.

Tim, modern yazılım geliştirmede, Blazor web sunucusu ve Blazor web derlemesi gibi farklı web geliştirme framework'leri arasında iletişimi kolaylaştırarak API'lerin oynadığı kritik role açıklık getirir. Hatta Razor sayfalarının temellerindeki proje türü, çoklu projelerde çeşitli işlevlerin sorunsuz entegrasyonunu etkinleştirerek web uygulamaları oluşturmaya olanak tanıyan ASP.NET Core'dur.

ASP.NET Core Web API Projesi Oluşturmak

Başlamak için, Tim Corey yeni bir ASP.NET Core Web API projesinin nasıl kurulacağını gösteriyor. Videoda belirtilen adımlar şunlardır:

  1. Visual Studio'yu Açın: Önce Visual Studio Installer'ı açın ve yeni bir proje oluşturma seçeneğini belirleyin.

Visual Studio'yu Acma

  1. API Şablonunu Seçin: Proje şablonlarından "ASP.NET Core Web API" seçeneğini seçin ve İleri'ye tıklayın.

API Şablonu Seçme

  1. Proje Ayarlarını Yapılandırın: Proje adını girin, konumu ve çözüm adını seçin.

Proje Ayarlarini Yapılandırma

  1. Ek Bilgi: .NET Framework'ü seçin, Kimlik Doğrulama türünü seçin ve diğer ayarları değiştirmemesini önerir.

Ek Bilgi

  1. Projeyi Oluştur: Varsayılan yapılandırmalar ve gereken kodla projeyi oluşturmak için "Oluştur"a tıklayın.

Bu kurulum, Program.cs, controller klasörü ve appsettings.json gibi temel bileşenleri içeren bir iskelet yapıyı Visual Studio'nun oluşturmasıyla API geliştirmeyi keşfetmek için sağlam bir temel sunar.

Varsayılan API Uygulaması Genel Bakış

Tim Corey'nin videosunun 5:57'inde, ASP.NET Core tarafından oluşturulan varsayılan API uygulamasının genel görünümünü verir.

Varsayılan Uygulamayı Çalıştırma

Tim, geliştiricilerin kutudan ne çıktığını göstermek için varsayılan uygulamayı çalıştırarak başlar. Çalıştırıldığında, proje API'yi derler, gerekli NuGet paketlerini indirir ve bir web sayfası başlatır. Bu başlangıç kurulumu herhangi bir modifikasyon olmadan API'nin temel yapısını ve işlevselliğini gösterir.

Varsayılan Uygulamayı Çalıştırma

API ile Etkileşim

Başlatılan web sayfası Swagger tarafından desteklenir, şu an OpenAPI olarak bilinmektedir. Swagger, kullanıcı dostu bir arayüz sunarak API ile etkileşime geçmeyi sağlar. Hem geliştiricilerin hem de geliştirici olmayan kişilerin API uç noktalarını kolayca anlamalarını ve test etmelerini sağlar. Bu arayüz API'nin çalışma şeklini görselleştirme ve belgeleri amacıyla özellikle faydalıdır.

Swagger'ı Keşfetmek

Swagger, API'deki mevcut uç noktaları sergiler. Varsayılan kurulumu, önceden yapılandırılmış uç noktalarından biri olan "hava durumu tahmini" uç noktasıdır. Bu uç noktaya tıklayarak ve "Deneme" özelliğini kullanarak, kullanıcılar API çağrısını yapabilir ve yanıtı görebilirler. Bu yanıt, API'den geri dönen verilerin nasıl olduğunu göstermek amacıyla JSON formatında bir hava durumu tahmini içerir.

Tim, 8:32'de, ham JSON verilerinin tarayıcıdan doğrudan okunması zor olabileceğini, ancak Swagger'ın belge üzerindeki kaplamasıyla çok daha kolay anlaşılır hale geldiğini vurgular. Belgeleme, uç noktayı kullanma yöntemi (GET, POST, vb.), döndürülen verilerin yapısını ve gerekli parametreleri içeren ayrıntılı bilgiler sağlar.

JSON Belgelemesi ve API Versiyonlaması

Swagger ayrıca Tim'in 9:10'da işaret ettiği bir JSON dosyası sağlar ve bu dosya API'yi makinelere okunabilir bir formatta belgeler. Bu belge, API ile etkileşime girecek diğer uygulamalar için önemli olup, mevcut uç noktaları, veri şemalarını ve beklenen yanıtları açıklamaktadır.

Tim, 9:29'da API'lerde versiyonlama önemini vurgular. Varsayılan kurulumu bir versiyon göstergesine de sahiptir, potansiyel birden fazla API sürümüne işaret eder. Versiyonlama, geriye dönük uyumluluğun korunması için hayati öneme sahiptir. API'ye yapılan değişikliklerin mevcut istemcileri kırma olasılığında, geliştiricilerin kullanıcılarını rahatsız etmeden yeni özellikler veya değişiklikler sunmasına olanak tanır.

API Nedir

Tim Corey, 11:22'de modern web geliştirmede API'lerin (Uygulama Programlama Arayüzleri) temel rolünü açıklar. Farklı yazılım bileşenleri arasında veri alışverişlerini yönetmek ve güvence altına almak açısından önemlerini vurgular.

API'lerin Amacı

Tim, çoğu uygulamanın veri çevresinde döndüğünü, yani geri alma, manipülasyon ve görüntüleme olduğunu vurgular. API'ler, kullanıcı arayüzü ile alttaki veriler arasında bir aracı olarak hizmet vererek, veri erişimini güvenli ve etkin bir yöntem sağlar. Bu merkezileştirme birkaç nedenle önemlidir:

  1. Güvenlik: API'ler veri erişimi için güvenli bir yöntem sunar. Mobil ve istemci tarafı uygulamaları veritabanlarına doğrudan bağlanmamalı, bu da istemci kodu içinde veritabanı kimlik bilgilerini yerleştirerek önemli güvenlik risklerine yol açar.

  2. Soyutlama: API'ler veri katmanını kullanıcı arayüzünden soyutlar, farklı istemci uygulamalarının (mobil uygulamalar, web uygulamaları, masaüstü uygulamaları) aynı veri kaynağı ile etkileşimde bulunmasına izin vererek veritabanını veya onun kimlik bilgilerini açığa çıkarmadan.

Farklı Çerçevelerde Çeşitlilik

Tim, API'lerin belirli framework veya dillerle sınırlı olmadığını belirtiyor. Örneğin, bir C# API'ye, Angular, React veya Vue gibi JavaScript frameworkleri tarafından erişilebilir ve bu, API'lerin çapraz platform yeteneklerini gösterir.

API Web Uygulaması Kod İncelemesi

15:21'de Tim Corey, bir ASP.NET Core API projesinin yapısını ve işlevselliğini detaylı bir şekilde yürütmeye başlar. Aşağıda, HTTP sunucusu ve sunucu tarafı teknolojileri ile çalışırken bir API web uygulaması oluştururken anlaşılması gereken temel noktalar yer almaktadır.

1. Program.cs Genel Bakış

Tim, Program.cs'yi inceler ve bunun web uygulamasını oluşturduğunu, denetleyiciler ve Swagger (OpenAPI) gibi hizmetleri yapılandırdığını belirtir. Kod, uygulamayı oluşturmadan ve çalıştırmadan önce gerekli hizmetleri kurar.

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

2. Ortam Yapılandırması

Tim, ortam ayarlarının launchSettings.json içinde nasıl yapılandırıldığını açıklıyor. Varsayılan ortam, yerel test için "Geliştirme" olarak ayarlanmış ve Swagger etkinleştirilmiştir. Üretimde, güvenlik nedeniyle Swagger genellikle devre dışı bırakılır, ancak geliştirme kontrolü kaldırılarak etkinleştirilebilir.

{
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WebApplication": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

3. HTTPS Yönlendirmesi ve Denetleyiciler

Tim, HTTPS yönlendirmesi ve denetleyicilerin eşleştirilmesine dikkat çeker. Bu yapılandırma, API yollarının düzgün şekilde yapılandırılmasını sağlar. HTTP istek ve yanıt yollarında açıklık sağlamak için "api" öneki kullanmayı tercih eder, bu önek değiştirilebilir ve API yollarının farklı olmasını sağlar.

4. Hava Durumu Tahmin Denetleyicisi

Tim, rota ayarlarını öne çıkararak WeatherForecastController.cs'ye derinlemesine iniyor. Varsayılan rota /weatherforecast olup, prefiks olarak "api" eklemek üzere değiştirilebilir. Denetleyici, verileri almak için HTTP GET kullanır ve belirtilen yol üzerinden erişilebilir.

using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

public class WeatherForecast
{
    public DateTime Date { get; set; }

    public int TemperatureC { get; set; }

    public string? Summary { get; set; }
}
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

public class WeatherForecast
{
    public DateTime Date { get; set; }

    public int TemperatureC { get; set; }

    public string? Summary { get; set; }
}

5. HTTP Fiilleri ve Yönlendirme

Tim, HTTP fiillerinin (GET, POST, PUT, DELETE) API uç noktalarını nasıl tanımladığını açıklar. GET isteği için, tarayıcı denetleyicideki belirtilen yöntemi çağırır. Diğer fiiller, test için Postman gibi araçlar gerektirir.

API Denetleyicisi Oluşturma

Tim, bir API denetleyicisinin oluşturulma sürecini gösterir:

  1. Denetleyici Ekleme: "Denetleyiciler" klasörüne sağ tıklayın ve "Ekle > Denetleyici"yi seçin.

  2. API Denetleyicisi Seçimi: "API Denetleyicisi - Boş"u seçin ve denetleyici için bir ad verin.

Bir Kontrolcü Ekleyin

  1. Eylemleri Tanımlama: Farklı HTTP isteklerini işlemek için denetleyici içinde eylemleri uygulayın. Tim, GET, POST, PUT ve DELETE yöntemlerini nasıl tanımlayacağını gösteren kod örnekleri verir. Detaylı kod için lütfen videoyu 26:25'ten itibaren izleyin.

Bu uygulamalı gösterim, geliştiricilerin çeşitli istek türlerini işlemek için API denetleyicilerinin nasıl oluşturulup yapılandırılacağını anlamalarına yardımcı olur.

REST API

Tim Corey, REST'i (Temsili Durum Transferi) ve prensiplerini tanıtır.

  1. REST Nedir: REST, ağ uygulamaları tasarımı için bir mimari stildir. Durumsuz iletişime dayanır ve operasyonları gerçekleştirmek için standart HTTP yöntemlerini (GET, POST, PUT, DELETE) kullanır.

  2. RESTful Prensipler: RESTful API'ler kaynakları temsil etmek için URL desenleri kullanır. Örneğin, /users tüm kullanıcıları getirirken, /users/5 ID'si 5 olan belirli bir kullanıcıyı getirir.

  3. REST Uyumluluğu: Tim, tam REST uyumluluğunun sağlanmasının zor olabileceğini belirtir çünkü REST başlangıçta teorik bir modeldi. Ancak, REST prensiplerine uymak, daha sezgisel ve tutarlı API'lara yol açabilir.

Tim, REST uyumluluğunu hedeflerken, pratik hususların API tasarımını yönlendirmesi gerektiğini, kullanılabilirlik ve işlevselliği sağlaması gerektiğini vurgular.

Minimal API Uygulaması

Corey, ASP.NET Core'da API geliştirme için basitleştirilmiş bir yaklaşım olan Minimal API'leri tanıtır:

  1. Minimal API'leri Kurma: Tim, projeyi oluştururken "Denetleyicileri Kullan" seçeneğinin işaretini kaldırarak bir Minimal API projesi oluşturmayı gösterir.

  2. Basitleştirilmiş Kod: Minimal API'ler, kontrolcüler ve yönlendirme niteliklerine olan ihtiyaçı ortadan kaldırarak, geliştiricilerin Program.cs içinde app.MapGet(), app.MapPost() gibi yöntemlerle doğrudan uç noktaları tanımlamasına olanak tanır.

  3. Kod Örneği: Tim, tek bir kod satırının bir uç nokta tanımladığı bir kod örneği sunar. GET isteğini minimal yapılandırma ile bir uç noktaya nasıl eşleyeceğini gösterir.
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

Minimal API'ler, özellikle daha küçük uygulamalar veya mikro hizmetler için geliştirmeyi basitleştirmek üzere tasarlanmıştır.

Neden Minimal API

Tim, Minimal API'lerin faydalarını tartışır:

  1. Yeni Proje Oluşturma: Tim, yeni bir Web API projesi oluşturur ama bu sefer ek bilgi olarak denetleyicileri kullan seçeneğini işaretlemedi. Bu, projenin minimal API'leri kullanarak oluşturulmasına izin verir.

Minimal API Oluşturma

  1. Boilerplate Azaltımı: Minimal API'ler, denetleyicilere ve ek yönlendirme yapılandırmalarına olan ihtiyaçı kaldırarak otomatik oluşturulan kod miktarını azaltır.

  2. Basitlik: Basit API'ler için daha doğrudan bir yaklaşım sunarlar ve kodun anlaşılması ve bakımı kolaylaştırılır.

  3. Mikro hizmetler: Minimal API'ler, API'nin sınırlı sayıda eylem gerçekleştirmesi gereken ve geleneksel denetleyicilerin tam özellik setine ihtiyaç duymayan mikro hizmetler için özellikle kullanışlıdır.

Tim, Minimal API'lerin belirli senaryolar için faydalı olduğunu kabul ederken, geleneksel denetleyicilerin daha büyük veya daha karmaşık uygulamalar için daha uygun olabileceğini belirtiyor.

En İyi Uygulamalar, Özet ve Son Yorumlar

Tim Corey, API geliştirme için en iyi uygulamalarla eğitici dersini tamamlar:

  1. Kavi Yapıları Ayırma: İş mantığını doğrudan Program.cs içine veya kontrolcü aksiyonlarına koymaktan kaçının. Bunun yerine, mantığı ayrı sınıf kütüphanelerine veya hizmetlerine taşıyın, böylece kod temizliği korunur ve SOLID ilkelerine uyulur.

  2. API'yi Kullanıcı Arayüzü Olarak Görün: API'leri kullanıcı arayüzü olarak kabul edin ve onları sezgisel ve iyi belgelenmiş olmaya odaklanın. Tim, net belgelerin ve etkili API tasarımının önemini vurgular.

  3. Swagger ve Belgeleme: Swagger'ı API belgeleme ve sürüm yönetimi için kullanın. Tim, kod içindeki XML yorumlarının ayrıntılı API belgeleri oluşturmak için nasıl kullanılabileceğini açıklar.

  4. Ek Hususlar: API performansını ve güvenliğini artırmak için önbellekleme, hız sınırlama ve diğer faktörleri dikkate alın.

Tim, geliştiricileri çeşitli proje türlerini ve araçlarını keşfetmeye teşvik eder ve modern yazılım geliştirmede API'lerin rolünü anlamanın değerini vurgular.

Sonuç

Tim Corey'nin videosu, ASP.NET Core'da API'lerin oluşturulması ve yönetilmesi için kapsamlı bir kılavuz sunar ve hem RESTful hem de Minimal API yaklaşımlarını kapsamaktadır. Onun içgörüleri, geliştiricilerin API tasarımının temellerini kavramalarına yardımcı olmanın yanı sıra etkili çözümler uygulama konusunda pratik tavsiyeler de sunar.

Daha detaylı eğitimler ve C# ve diğer proje türleri hakkında bilgiler için Tim Corey'nin YouTube kanalı IAmTimCorey'i ziyaret ettiğinizden emin olun.

Hero Worlddot related to ASP.NET Core ile C# Web Uygulaması Oluşturmak
Hero Affiliate related to ASP.NET Core ile C# Web Uygulaması Oluşturmak

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara