ASP. Net Core Mini Dükkan Projesi Ders 001

Asp.net Core ile basit ama gayet kullanışlı bir proje ile eğitim serimize devam edelim istiyorum. Mini bir dükkan projesi yapacağız. Projede dükkanım için bir katalog yer alacak, müşteriler buradan ürün seçebilecekler, alışveriş sepetine atabilecekler. Veya sepetlerinden ürünlerini silebilecekler. Ek olarak bir admin sayfası ile tabi birlikte ürün ekleme, silme, güncelleme yani temel CRUD işlemlerinin nasıl yapılacağını anlatacağım. Proje içinde ödeme işlemleri konusunu ele almayacağım. Baştan belirteyim. Veritabanı olarak da çok detaylı çalışmayacağım. Amacım ASP.NET Core mantığını kavratmak aslında. Biraz çok yazı olacak (belki videoda olacak) ama çok net bir şekilde seriyi takip etmenizle birlikte ASP.NET Core temeline hakim olacaksınız.

İlgili Ders Videomuz:

Visual Studio açıyorum ve burda yeni bir ASP.NET Core projesi oluşturuyorum. Projemin adını MiniDukkan verdim. MVC modelini kullanıyorum.

Proje oluşturulduktan sonra Debug menüsünden en altta yer alan Proje adı ile birlikte Debug Properties seçiyorum.

Burada yine solda Debug seçili iken aşağı kaydırıyorum ve App Url kısmına port olarak 5000 yazıyorum. Değiştirmeyebilirsiniz size kalmış.

Uygulama Servislerinin ve İstek Hattının Hazırlanması (Startup.cs Ayarları)

Startup sınıfı ASP.NET Core uygulamalarının konfigüre edildiği çok önemli bir sınıftır. Projemizde yer alan startup sınıfını düzenleyelim ve biraz bu sınıftan bahsedelim.

ConfigureServices metodu; Dependency Injection yani bağımlılık ekleme adı verilen bir özellik aracılığı ile erişilen ve uygulama boyunca kullanılabilen hizmetler olarak bilinen nesneleri ayarlamak için kullanılmaktadır. Bu metoda bağlı olarak hizmetlerde çağırılan AddControllerWithViews metodu, MVC Framework ve Razor sayfaları kullanan uygulamaların gerektirdiği paylaşılmış nesneleri ayarlamak için kullanılır.

ASP.NET Core, http isteklerini alır ve bunları middleware ile bir istek işlem hattı boyunca iletir. Bu middleware yani ara yazılım komponenetleri Configure metodu içinda kayıtlanmıştır. Her bir middleware komponenti istekleri inceleyebilir, istekleri değiştirebilir veya bir yanıt üretebilir, diğer komponentlerin üretmiş olduğu yanıtları modifiye edebilir. Configure metodu altında tanımladığımız middleware metotlar ASP.NET Core’un kalbidir diyebiliriz. İlerleyen zamanda bunları detaylı açıklayacağım. Ama kısa ve özetle bir açıklama yapmak gerekirse;

  • UseDeveleperExceptionPage() : Extension metot olarak bilinir. Uygulamalarda meyddana gelen istisnaların ayrıntılarını görüntüler. Yazılım geliştirme sürecinde çok yararlıdır. Deploy edilmiş uygulamalar içinde etkinleştirilmemelidir.
  • UseStatusCodePages() : Extension metot olarak bilinir. Bu metot http yanıtlarına basit mesajlar eklemek için kullanılır. Örnek olarak 404 bulunamayan sayfalar gibi.
  • UseStaticFiles() : Extension metot olarak bilinir. Wwwroot klasöründe yer alan içeriğin kullanılabilmesine olanak sağlaması amacı ile kullanılır.

Endpoint routing özelliği UseRouting ve UseEndPoints metotları ile istek hattına bağlanır. Bir MVC Framework kaydetmek için MapDefaultControllerRoute kullanılır.

Projemde mevcut stratup.cs dokümanının şu anki kodları:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace MiniDukkan
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }
            app.UseStaticFiles();

            app.UseRouting();

            app.UseStatusCodePages();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
}


Razor View Engine Yapılandırması:

Razor View yapısı, uygulama içinde yer alan dosyaların işlenmesinden ve HTML cevaplarının üretilmesinden sorumludur. Uygulama için görünüm oluşturmayı kolaylaştırmak amacıyla Razor’u yapılandırmak için bazı başlangıç hazırlıkları gerekir. Projemdeki mevcut _ViewImports.cshtml kod içeriği:

@using MiniDukkan
@using MiniDukkan.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

@using ifadese ile projemizdeki tipleri kullanabiliriz. @addTagHelper yerleşik taghelperleri birleştirir.

Projemde oluşturulan Views klasörü altındaki _ViewStart.cshtml dosyasının kodları:

@{
Layout = "_Layout";
}

Daha sonra buna ilişkin olarak Views/Shared klasörü altındaki _Layout.cshtml dosyasının kodları:

< !DOCTYPE html>
< html lang="tr">
< head>
    
    
    MiniDukkan    
< /head>
< body>
    
    
@RenderBody()
< /body> < /html>

Controller ve View Oluşturma:

HomeController adında bir adet controller Controllers klasörü içinde yer almakta. Daha önceden kullandığımız MapDefaultControllerRoute metodu ASP.NET Core yapısında URL’leri controller sınıfları ile nasıl eşleştireceğini söylemektedir. MapDefaultController tarafından kullanılan yapılandırma ile aslında biz HomeController içinde yer alan Index action metodu ile, ilgili View’i ilişkilendiriyoruz. Mevcut durumda şu anda HomeController içinde yer alan Index actionu herhangi bir şey yapmıyor sadece ilgili View geri döndürülmekte. HomeController’un aynı zamanda Controller base classından miras aldığını da hatırlatmak istiyorum. MVC yapısını kullandığım için View klasörü altında Home klasörü altında Index action’u ile alakalı Index View’da mevcut durumda şu anda. Burada yer alan Index.cshtml dosyasını şöyle değiştirelim.

Mini Dükkanımıza hoşgeldiniz.

Veri Modeli

Bir çok projede veri modelleme vardır. Bizim bu uygulamamızda yavaştan işlemlerimize başlayalım. Projemde Models klasörü içine bir class ekliyorum, adını Urun verdim. Bunun içerisinde ilgili propertyleri tanımlıyorum.

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace MiniDukkan.Models
{
    public class Urun
    {
        public long UrunID { get; set; }
        public string UrunAd { get; set; }
        public string Aciklama { get; set; }

        [Column(TypeName = "decimal(6,2)")]
        public decimal Fiyat { get; set; }
        public string Kategori { get; set; }
    }
}

Burada Fiyat property’si için Column attribut’ü kullandım. Girilecek veri tipinin spesifik olmasını istiyorum çünkü.

Şimdilik yazımız bu kadar dilerseniz videomuzu da izleyebilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir