# Clean Architecture (.NET) > สถาปัตยกรรมแบบเลเยอร์, CQRS, MediatR, repository pattern, การแยกความรับผิดชอบ, ความสามารถในการทดสอบ - 20 คำถามสัมภาษณ์ - Mid-Level - [คำถามสัมภาษณ์: .NET](https://sharpskill.dev/th/technologies/dotnet/interview-questions.md) ## 1. หลักการของ Clean Architecture คืออะไร? **คำตอบ** Clean Architecture จัดระเบียบโค้ดเป็นเลเยอร์ที่ซ้อนกันเป็นวงกลม โดยที่การพึ่งพา (dependencies) ชี้เข้าด้านในเท่านั้น (ไปยัง Domain) เลเยอร์ Domain (เอนทิตี กฎทางธุรกิจ) ไม่มีการพึ่งพา infrastructure เลเยอร์ภายนอก (UI, Database, API) พึ่งพา abstraction ของ Domain ผ่าน Dependency Inversion สิ่งนี้รับประกันความสามารถในการทดสอบ ความเป็นอิสระจาก framework และความสามารถในการบำรุงรักษาโค้ด ## 2. เลเยอร์หลักของ Clean Architecture มีอะไรบ้าง? **คำตอบ** Clean Architecture มี 4 เลเยอร์หลัก: Domain (เอนทิตี กฎทางธุรกิจ interface ของ repository), Application (use case, DTO, ลอจิกของแอปพลิเคชัน), Infrastructure (การ implement repository, DbContext, บริการภายนอก) และ Presentation (API controller, UI) Domain อยู่ตรงกลางและไม่พึ่งพาสิ่งใด Application พึ่งพา Domain ส่วน Infrastructure และ Presentation พึ่งพา Application และ Domain ## 3. รูปแบบ CQRS คืออะไร? **คำตอบ** CQRS (Command Query Responsibility Segregation) แยกการดำเนินการอ่าน (Queries) และเขียน (Commands) ออกจากกัน Commands จะเปลี่ยนสถานะและคืนค่า void หรือผลลัพธ์อย่างง่าย ส่วน Queries จะคืนค่าข้อมูลโดยไม่เปลี่ยนสถานะ การแยกนี้ช่วยให้สามารถปรับแต่งการอ่าน (Dapper, view SQL) และการเขียน (EF Core, aggregate DDD) ได้อย่างอิสระ และปรับขนาดแต่ละด้านได้แตกต่างกัน ## มีอีก 17 คำถาม - บทบาทของ MediatR ใน Clean Architecture คืออะไร? - จะกำหนด Command ใน MediatR อย่างไร? สมัครฟรี: https://sharpskill.dev/th/login ## หัวข้อสัมภาษณ์ .NET อื่นๆ - [พื้นฐาน C#](https://sharpskill.dev/th/technologies/dotnet/interview-questions/csharp-basics.md): 25 คำถาม, Junior - [LINQ & Delegates](https://sharpskill.dev/th/technologies/dotnet/interview-questions/csharp-linq-delegates.md): 20 คำถาม, Junior - [พื้นฐานสำคัญของภาษา C#](https://sharpskill.dev/th/technologies/dotnet/interview-questions/csharp-language-essentials.md): 15 คำถาม, Junior - [พื้นฐาน ASP.NET Core](https://sharpskill.dev/th/technologies/dotnet/interview-questions/aspnet-core-fundamentals.md): 18 คำถาม, Junior - [วงจรชีวิตของ request ใน ASP.NET Core](https://sharpskill.dev/th/technologies/dotnet/interview-questions/aspnet-core-request-lifecycle.md): 20 คำถาม, Junior - [Configuration & Settings](https://sharpskill.dev/th/technologies/dotnet/interview-questions/configuration-settings.md): 20 คำถาม, Junior - [วงจรชีวิตของแอปพลิเคชัน](https://sharpskill.dev/th/technologies/dotnet/interview-questions/application-lifecycle.md): 20 คำถาม, Junior - [Dependency Injection](https://sharpskill.dev/th/technologies/dotnet/interview-questions/dependency-injection.md): 24 คำถาม, Mid-Level - [Entity Framework Core](https://sharpskill.dev/th/technologies/dotnet/interview-questions/entity-framework-core.md): 25 คำถาม, Mid-Level - [Minimal APIs](https://sharpskill.dev/th/technologies/dotnet/interview-questions/minimal-apis.md): 18 คำถาม, Mid-Level - [การพัฒนา Web API](https://sharpskill.dev/th/technologies/dotnet/interview-questions/web-api-development.md): 22 คำถาม, Mid-Level - [Async ใน ASP.NET Core](https://sharpskill.dev/th/technologies/dotnet/interview-questions/async-aspnet-core.md): 20 คำถาม, Mid-Level - [Authentication & Authorization](https://sharpskill.dev/th/technologies/dotnet/interview-questions/authentication-authorization.md): 18 คำถาม, Mid-Level - [HttpClient & Networking](https://sharpskill.dev/th/technologies/dotnet/interview-questions/httpclient-networking.md): 20 คำถาม, Mid-Level - [การซีเรียลไลซ์ JSON](https://sharpskill.dev/th/technologies/dotnet/interview-questions/json-serialization.md): 20 คำถาม, Mid-Level - [Entity Framework Core ขั้นสูง](https://sharpskill.dev/th/technologies/dotnet/interview-questions/ef-core-advanced.md): 25 คำถาม, Mid-Level - [ฟีเจอร์ขั้นสูงของ C#](https://sharpskill.dev/th/technologies/dotnet/interview-questions/csharp-advanced-features.md): 20 คำถาม, Mid-Level - [Logging, Monitoring & Observability](https://sharpskill.dev/th/technologies/dotnet/interview-questions/logging-monitoring.md): 22 คำถาม, Mid-Level - [Unit Testing และ xUnit](https://sharpskill.dev/th/technologies/dotnet/interview-questions/unit-testing-xunit.md): 20 คำถาม, Mid-Level - [การทดสอบแบบบูรณาการ](https://sharpskill.dev/th/technologies/dotnet/interview-questions/integration-testing.md): 18 คำถาม, Mid-Level - [Docker & Containerization](https://sharpskill.dev/th/technologies/dotnet/interview-questions/docker-containerization.md): 16 คำถาม, Mid-Level - [การจัดการแพ็กเกจ NuGet](https://sharpskill.dev/th/technologies/dotnet/interview-questions/nuget-package-management.md): 16 คำถาม, Mid-Level - [Memory Management & GC](https://sharpskill.dev/th/technologies/dotnet/interview-questions/memory-management-gc.md): 22 คำถาม, Senior - [การเขียนโปรแกรมแบบรีแอกทีฟ](https://sharpskill.dev/th/technologies/dotnet/interview-questions/reactive-programming.md): 24 คำถาม, Senior - [Async/await และรูปแบบ](https://sharpskill.dev/th/technologies/dotnet/interview-questions/async-await-patterns.md): 26 คำถาม, Senior - [.NET Design Patterns](https://sharpskill.dev/th/technologies/dotnet/interview-questions/dotnet-design-patterns.md): 24 คำถาม, Senior - [การเพิ่มประสิทธิภาพการทำงาน](https://sharpskill.dev/th/technologies/dotnet/interview-questions/performance-optimization.md): 22 คำถาม, Senior - [ความปลอดภัยและ Best Practices](https://sharpskill.dev/th/technologies/dotnet/interview-questions/security-best-practices.md): 24 คำถาม, Senior - [SignalR และเรียลไทม์](https://sharpskill.dev/th/technologies/dotnet/interview-questions/signalr-realtime.md): 22 คำถาม, Senior - [สถาปัตยกรรม Microservices](https://sharpskill.dev/th/technologies/dotnet/interview-questions/microservices-architecture.md): 25 คำถาม, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/th/technologies/dotnet/interview-questions/clean-architecture