Bu proje, modern yazılım geliştirme prensiplerini, İleri Seviye C# (Reflection, Attributes) konularını ve ASP.NET Core Middleware/Filter mimarisini kapsamlı bir senaryo üzerinde uygular.
Proje iki ana modülden oluşmaktadır:
- Console Application: C# temelleri, bellek yönetimi (Struct) ve Reflection ile metadata analizi.
- Web API: "Headless" mimari, özel Middleware entegrasyonu, AOP (Aspect Oriented Programming) benzeri filtrelemeler ve sistem haritasını çıkaran dinamik endpointler.
C# dilinin derinliklerine inilen bu modülde aşağıdaki yapılar uygulanmıştır:
- Struct & Value Types: Referans tipleri yerine
Structkullanılarak bellek yönetimi (Stack vs Heap) simüle edildi. - Advanced Exception Handling:
Try-Catch-Finallyblokları ileDivideByZeroveFormathataları yönetildi. - Custom Attributes: Kod parçalarını etiketlemek için
[DeveloperInfo]isminde özel bir nitelik (attribute) geliştirildi. - Reflection Reporting: Çalışma zamanında (Runtime) kodun kendisi analiz edilerek; hangi sınıfı kimin yazdığını raporlayan bir Reflection Motoru yazıldı.
RESTful prensiplerine uygun, genişletilebilir bir backend mimarisi kuruldu:
- Custom Middleware (Pipeline): Her gelen isteği (Request) ve dönen yanıtı (Response) araya girerek yakalayan ve loglayan bir yapı kuruldu.
- Action Filters (Performance): Metotların çalışma sürelerini milisaniye cinsinden ölçen bir performans monitörü entegre edildi.
- Global Exception Filter: API genelinde oluşabilecek tüm hataları tek bir merkezde yakalayıp, istemciye standart bir JSON hata formatı dönen mekanizma.
- System Reflection Endpoint: Projedeki tüm Controller ve Action'ları tarayıp, sistemin "Haritasını" JSON olarak sunan akıllı bir endpoint (
/api/System/attribute-map) geliştirildi.
- Dil: C# 10/11
- Framework: .NET 6.0 / 7.0
- API: ASP.NET Core Web API
- Documentation: Swagger UI
- Tools: Visual Studio 2022
Projeyi yerel makinenizde çalıştırmak için:
- Repoyu klonlayın:
git clone [https://github.com/Afsarsyusuf]
- Projeyi Visual Studio ile açın (
Odev09Solution.sln). - Odev09.WebApi projesine sağ tıklayıp "Set as Startup Project" deyin.
- Projeyi çalıştırın (
F5veyaCtrl+F5). - Tarayıcıda Swagger UI açılacaktır.
**Ad Soyad:**Sami Yusuf Afşar