Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
30 posts found #Backend
API Versioning: Evolving Your API Without Breaking Old Clients
Backend PART 18

API Versioning: Evolving Your API Without Breaking Old Clients

We cover how not to break old clients while evolving the API over time: what a breaking change is, why versioning is needed, the URL/header/query methods, and setting up versioning in .NET.

15 Aug 2026 12 min 119
Pagination, Filtering and Sorting: Returning Large Lists Efficiently
Backend PART 17

Pagination, Filtering and Sorting: Returning Large Lists Efficiently

We cover returning a list with thousands of records efficiently: pagination, filtering, and sorting; the lazy nature of IQueryable, the Skip/Take logic, and running the query in the database.

15 Aug 2026 13 min 49
Async/await: Correct Asynchronous Usage in an API
Backend PART 16

Async/await: Correct Asynchronous Usage in an API

We cover what async/await actually does: the difference between sync and async, what a Task is, why an API should be asynchronous, its effect on scalability, and common mistakes.

15 Aug 2026 13 min 78
Configuration and the Options Pattern: appsettings Layers and Separating Settings from Code
Backend PART 15

Configuration and the Options Pattern: appsettings Layers and Separating Settings from Code

We cover separating settings from code: appsettings files and environment layers, managing connection strings safely, reading settings with strong types via the Options pattern, and keeping secrets out of code.

8 Aug 2026 12 min 69
Logging: ILogger, Serilog and Structured Logging
Backend PART 14

Logging: ILogger, Serilog and Structured Logging

We cover logging: the basics of ILogger, log levels, the difference between plain-text and structured logging, and why Serilog makes this job much more powerful in serious projects.

8 Aug 2026 12 min 100
Global Error Handling: Catching All Errors in a Single Place
Backend PART 13

Global Error Handling: Catching All Errors in a Single Place

We cover catching unexpected errors from anywhere in the app in a single place: escaping scattered try-catch blocks, setting up exception middleware, and returning a clean, safe response to the user.

8 Aug 2026 12 min 56
Dependency Injection in Depth: Singleton, Scoped and Transient Lifetimes
Backend PART 12

Dependency Injection in Depth: Singleton, Scoped and Transient Lifetimes

We cover the lifetime concept at the heart of dependency injection. The difference between singleton, scoped and transient, when to use each, and the subtle bugs a wrong choice causes.

8 Aug 2026 13 min 107
DTO-Entity Conversion: Writing It by Hand or Using AutoMapper?
Backend PART 11

DTO-Entity Conversion: Writing It by Hand or Using AutoMapper?

We discuss the conversion between entity and DTO. The upsides of manual mapping, when AutoMapper is a convenience and when a hidden cost, and a practical look at which to choose in your project.

8 Aug 2026 12 min 71
Is the Repository Pattern Really Necessary? Let's Talk About the Service Layer
Backend PART 10

Is the Repository Pattern Really Necessary? Let's Talk About the Service Layer

We discuss placing a layer between the controller and DbContext instead of using it directly. What the service layer is for, whether the repository pattern is really necessary, and when it pays off.

2 Aug 2026 13 min 89
Introduction to Entity Framework Core: DbContext and Your First Migration
Backend PART 09

Introduction to Entity Framework Core: DbContext and Your First Migration

We start storing our data in a real database. What EF Core is, what DbContext represents, how tables are defined with DbSet, and how the database is created with the first migration, step by step.

2 Aug 2026 13 min 113
Model Validation: Validating Incoming Data with Data Annotations and FluentValidation
Backend PART 08

Model Validation: Validating Incoming Data with Data Annotations and FluentValidation

We cover validating incoming data: defining quick rules with Data Annotations, the automatic validation of [ApiController], and FluentValidation for complex rules. What to choose and when?

2 Aug 2026 12 min 79
What Is a DTO and Why Shouldn't We Return the Entity Directly?
Backend PART 07

What Is a DTO and Why Shouldn't We Return the Entity Directly?

We cover what DTOs are and why you shouldn't return database objects directly: the concrete benefits of using DTOs for security, privacy, flexibility, and contract stability.

2 Aug 2026 11 min 100
Blog Map