ASP.NET, Microsoft tarafından geliştirilen ücretsiz, açık kaynaklı bir web uygulama çerçevesidir. Dinamik web siteleri, web uygulamaları ve web servisleri oluşturmak için kullanılır.
ASP.NET projesi oluşturmak için şunları kullanabilirsiniz:
.NET CLI kullanarak örnek:
dotnet new webapp -n BenimAspNetProjem
cd BenimAspNetProjem
dotnet run
ASP.NET Core, ASP.NET'in çapraz platform, yüksek performanslı evrimi.
Bir ASP.NET Core uygulamasının giriş noktası:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Servisleri ve uygulamanın istek hattını yapılandırır:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
ASP.NET Core MVC, ilgilerin ayrılmasını sağlamak için bir tasarım desenidir.
Yönlendirme, gelen HTTP isteklerini denetleyici eylemlerine eşleştirme sürecidir.
Startup.cs
içinde ayarlanır:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Doğrudan denetleyici eylemlerine uygulanır:
[Route("api/[controller]")]
public class UrunlerController : ControllerBase
{
[HttpGet("{id}")]
public IActionResult Get(int id)
{
// Eylem metodu uygulaması
}
}
Denetleyiciler, gelen istekleri işler ve istemciye yanıt döndürür.
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult Hakkinda()
{
ViewData["Mesaj"] = "Uygulama açıklama sayfanız.";
return View();
}
[HttpPost]
public IActionResult Iletisim(IletisimViewModel model)
{
if (ModelState.IsValid)
{
// İletişim formunu işle
return RedirectToAction("Tesekkurler");
}
return View(model);
}
}
Görünümler, içeriği kullanıcıya sunmaktan sorumludur. Razor, sunucu tabanlı kodu web sayfalarına gömmek için kullanılan bir işaretleme sözdizimi.
@{
ViewData["Title"] = "Ana Sayfa";
}
<h1>Siteme hoş geldiniz, @User.Identity.Name!</h1>
@if (User.IsInRole("Admin"))
{
<p>Siz bir yöneticisiniz.</p>
}
<ul>
@foreach (var item in Model)
{
<li>@item.Ad</li>
}
</ul>
Modeller uygulamanın verilerini temsil eder. Veri bağlama, HTTP istek verilerini C# nesnelerine eşleme sürecidir.
public class Urun
{
public int Id { get; set; }
[Required]
public string Ad { get; set; }
[Range(0.01, 1000.00)]
public decimal Fiyat { get; set; }
}
public class UrunController : Controller
{
[HttpPost]
public IActionResult Olustur(Urun urun)
{
if (ModelState.IsValid)
{
// Ürünü kaydet
return RedirectToAction("Index");
}
return View(urun);
}
}
Entity Framework Core, veri erişimini basitleştiren bir nesne-ilişkisel eşleyicidir (ORM).
public class UygulamaDbContext : DbContext
{
public UygulamaDbContext(DbContextOptions<UygulamaDbContext> options)
: base(options)
{
}
public DbSet<Urun> Urunler { get; set; }
}
dotnet ef migrations add IlkOlusturma
dotnet ef database update
public IActionResult Index()
{
var urunler = _context.Urunler
.Where(u => u.Fiyat > 10)
.OrderBy(u => u.Ad)
.ToList();
return View(urunler);
}
ASP.NET Core, bağımlılık enjeksiyonu için yerleşik destek sağlar.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<UygulamaDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("VarsayilanBaglanti")));
services.AddScoped<IUrunRepository, UrunRepository>();
services.AddTransient<IBildirimServisi, EPostaBildirimServisi>();
services.AddSingleton<IUygulamaOnbellek, BellekOnbellek>();
}
public class UrunController : Controller
{
private readonly IUrunRepository _repository;
public UrunController(IUrunRepository repository)
{
_repository = repository;
}
// Denetleyici eylemleri
}
Ara yazılım, istekleri ve yanıtları işlemek için bir uygulama hattına monte edilen yazılımdır.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseExceptionHandler("/Home/Error");
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
ASP.NET Core, kimlik doğrulama ve yetkilendirme için yerleşik destek sağlar.
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Hesap/Giris";
});
}
public void Configure(IApplicationBuilder app)
{
app.UseAuthentication();
app.UseAuthorization();
}
[Authorize]
public class YoneticiController : Controller
{
[Authorize(Roles = "UstYonetici")]
public IActionResult GizliIslem()
{
return View();
}
}
ASP.NET Core, Web API kullanarak RESTful servisler oluşturmayı destekler.
[Route("api/[controller]")]
[ApiController]
public class UrunlerController : ControllerBase
{
private readonly IUrunRepository _repository;
public UrunlerController(IUrunRepository repository)
{
_repository = repository;
}
[HttpGet]
public ActionResult<IEnumerable<Urun>> GetUrunler()
{
return _repository.TumunuGetir().ToList();
}
[HttpGet("{id}")]
public ActionResult<Urun> GetUrun(int id)
{
var urun = _repository.IdIleGetir(id);
if (urun == null)
{
return NotFound();
}
return urun;
}
[HttpPost]
public ActionResult<Urun> PostUrun(Urun urun)
{
_repository.Ekle(urun);
return CreatedAtAction(nameof(GetUrun), new { id = urun.Id }, urun);
}
}
ASP.NET Core, birim testini ve entegrasyon testini destekler.
public class UrunServisTestleri
{
[Fact]
public void IdIleUrunGetir_UrunVarsa_UrunuDondurur()
{
// Düzenle
var mockRepository = new Mock<IUrunRepository>();
mockRepository.Setup(repo => repo.IdIleGetir(1))
.Returns(new Urun { Id = 1, Ad = "Test Ürünü" });
var urunServisi = new UrunServisi(mockRepository.Object);
// İşlem
var sonuc = urunServisi.IdIleUrunGetir(1);
// Doğrula
Assert.NotNull(sonuc);
Assert.Equal(1, sonuc.Id);
Assert.Equal("Test Ürünü", sonuc.Ad);
}
}
public class UrunControllerEntegrasyonTestleri : IClassFixture<WebApplicationFactory<Startup>>
{
private readonly WebApplicationFactory<Startup> _factory;
public UrunControllerEntegrasyonTestleri(WebApplicationFactory<Startup> factory)
{
_factory = factory;
}
[Fact]
public async Task UrunleriGetir_BasariliDurumKoduDondurur()
{
// Düzenle
var client = _factory.CreateClient();
// İşlem
var yanit = await client.GetAsync("/api/urunler");
// Doğrula
yanit.EnsureSuccessStatusCode();
}
}
ASP.NET Core uygulamaları çeşitli platformlara dağıtılabilir.
dotnet publish -c Release
2024 © Tüm hakları saklıdır - buraxta.com