ตัวอย่างโปรเจ็กต์ .NET Core ที่มีฐานข้อมูล MongoDB พร้อมชุดเรพลิกาและธุรกรรมที่เปิดใช้งาน
เป้าหมายของโครงการนี้คือการให้คำตอบในหัวข้อด้านล่าง (ใช้สำหรับการสัมภาษณ์งาน):
Please create a sample .net/C# project that includes the following elements:
- Basic CRUD functionality for a data structure of your choice.
- RESTful APIs to expose that functionality with your framework of choice (ASP.NET Web APIs, ASP.NET Core, ServiceStack (preferred), …etc).
- Uses MongoDB using C# driver.
- Please demonstrate your usage of one of MongoDB advanced features (aggregation, transactions, indexes, …etc) using C# driver.
- Please push your code to a Git repository that you can share with us.
นี่คือโครงการ asp core 3.1 web API ที่มีสถาปัตยกรรม n-tiers:
แต่ละเลเยอร์มีเลเยอร์นามธรรมของตัวเองเพื่อหลีกเลี่ยงการขึ้นต่อกัน ฉันใช้สต็อก .net core IOC และเอ็นจิ้น DI
ฉันไม่ได้ทำการ ทดสอบหน่วย ใดๆ เนื่องจากไม่มีเหตุผลทางธุรกิจ อย่างไรก็ตาม ฉันได้สร้างตัวอย่าง การทดสอบการรวมระบบ โดยใช้ ไลบรารี Microsoft WebHost คุณสามารถเรียกใช้การทดสอบการรวมระบบผ่าน Visual Studio หรือบรรทัดคำสั่งได้ แต่อย่าลืมเรียกใช้ Docker-compose ก่อน (ไม่เช่นนั้นคุณจะไม่มีฐานข้อมูลใด ๆ ที่จะขอ)
การใช้งาน DAL นั้นใช้ไดรเวอร์ MongoDB C# ด้วยการรัน docker-compose ที่แนบมากับโซลูชัน คุณจะได้รับอินสแตนซ์ของเซิร์ฟเวอร์ Mongo ที่เปิดใช้งานชุดแบบจำลอง (เพื่อรองรับธุรกรรม)
เพื่อเป็นการสาธิตการใช้งานหนึ่งในคุณสมบัติขั้นสูงของ MongoDB ฉันได้เลือกธุรกรรม ดังนั้น IClientSessionHandle จึงถูกฉีดเข้าไปในที่เก็บทั้งหมด ฉันยังจัดการเพื่อสร้างมิดเดิลแวร์ชื่อ TransactionFilter ซึ่งสร้างธุรกรรมสำหรับคำขอ HTTP ทั้งหมด ด้วยวิธีนี้ เราจึงสามารถดำเนินการหลายเอกสารบนพื้นที่เก็บข้อมูลที่แตกต่างกัน ซึ่งอาจย้อนกลับได้หากเกิดปัญหา โดยไม่ต้องจัดการกับธุรกรรมหลายเอกสารด้วยตนเอง
ตัวอย่าง :
มันใช้งานได้เหมือนเดิม แต่จะต้องมีการทดสอบโหลดเพิ่มเติมอีก นี่อาจจะยังไม่พร้อมสำหรับการผลิต
การใช้ docker-compose up ใน commandline ดูเหมือนจะใช้งานไม่ได้กับ API ในขณะนี้ ฉันเหลือเวลาไม่มากแล้ว ฉันเลยใช้ VS เขียนต่อไป