ในบทความนี้ เราจะพูดถึงการทำงานของรูปแบบ CQRS และ MediatR และการใช้งานทีละขั้นตอนโดยใช้ .NET Core 6 Web API

วาระการประชุม

  • การแนะนำรูปแบบ CQRS
  • เมื่อใดควรใช้ CQRS
  • Mediatร
  • การดำเนินการทีละขั้นตอน

ข้อกำหนดเบื้องต้น

  • วิชวลสตูดิโอ 2022
  • เซิร์ฟเวอร์ SQL
  • .NET คอร์ 6

การแนะนำรูปแบบ CQRS

  • CQRS ย่อมาจาก Command and Query Responsibility Segregation และใช้เพื่อแยกการอ่าน (แบบสอบถาม) และการเขียน (คำสั่ง)
  • ในการนั้น คิวรีดำเนินการอ่าน และคำสั่งดำเนินการเขียน เช่น สร้าง อัปเดต ลบ และส่งคืนข้อมูล

  • ดังที่เราทราบ ในแอปพลิเคชันของเราส่วนใหญ่เราใช้โมเดลข้อมูลเดียวในการอ่านและเขียนข้อมูล ซึ่งจะทำงานได้ดีและดำเนินการ CRUD ได้อย่างง่ายดาย แต่เมื่อแอปพลิเคชันมีขนาดใหญ่ขึ้นในกรณีนั้น การสืบค้นของเราจะส่งคืนข้อมูลประเภทต่างๆ เป็นออบเจ็กต์ ซึ่งทำให้ยากต่อการจัดการด้วยออบเจ็กต์ DTO ที่แตกต่างกัน นอกจากนี้ยังใช้โมเดลเดียวกันในการดำเนินการเขียนอีกด้วย ส่งผลให้โมเดลมีความซับซ้อน
  • นอกจากนี้ เมื่อเราใช้โมเดลเดียวกันสำหรับทั้งการดำเนินการอ่านและเขียน การรักษาความปลอดภัยก็ยากที่จะจัดการเมื่อแอปพลิเคชันมีขนาดใหญ่ และเอนทิตีอาจเปิดเผยข้อมูลในบริบทที่ไม่ถูกต้องเนื่องจากปริมาณงานในโมเดลเดียวกัน
  • CQRS ช่วยแยกการปฏิบัติงานและทำให้แอปพลิเคชันสามารถปรับขนาดและยืดหยุ่นได้มากขึ้นในขนาดใหญ่

เมื่อใดจึงควรใช้ CQRS

  • เราสามารถใช้ Command Query Responsibility Segregation เมื่อแอปพลิเคชันมีขนาดใหญ่และเข้าถึงข้อมูลเดียวกันพร้อมกัน CQRS ช่วยลดข้อขัดแย้งในการผสานในขณะที่ดำเนินการหลายอย่างกับข้อมูล
  • ในคำศัพท์เฉพาะทางของ DDD หากโมเดลข้อมูลโดเมนมีความซับซ้อนและจำเป็นต้องดำเนินการหลายอย่างตามลำดับความสำคัญ เช่น การตรวจสอบความถูกต้อง และการดำเนินการตรรกะทางธุรกิจบางอย่าง ดังนั้นในกรณีนั้น เราต้องการความสอดคล้องที่เราจะทำได้โดยใช้ CQRS

สื่อกลาง

  • รูปแบบ MediatR ช่วยลดการพึ่งพาโดยตรงระหว่างออบเจ็กต์หลายรายการ และทำให้พวกเขาทำงานร่วมกันผ่าน MediatR
  • ใน .NET Core MediatR มีคลาสที่ช่วยในการสื่อสารกับอ็อบเจ็กต์ต่างๆ ได้อย่างมีประสิทธิภาพในลักษณะที่เชื่อมโยงกันอย่างหลวมๆ

การใช้งานทีละขั้นตอน

ขั้นตอนที่ 1

สร้างแอปพลิเคชันใหม่

ขั้นตอนที่ 2

กำหนดค่าแอปพลิเคชันของคุณ

ขั้นตอนที่ 3

ให้ข้อมูลเพิ่มเติม

ขั้นตอนที่ 4

โครงสร้างโครงการ

ขั้นตอนที่ 5

ติดตั้งแพ็คเกจ NuGet ต่อไปนี้

ขั้นตอนที่ 6

สร้างคลาสรายละเอียดนักเรียนภายในโฟลเดอร์โมเดล

ขั้นตอนที่ 7

จากนั้นเพิ่ม DbContextClass ภายในโฟลเดอร์ Data

ขั้นตอนที่ 8

สร้างพื้นที่เก็บข้อมูลของนักเรียนหนึ่งแห่งและชั้นเรียนที่เกี่ยวข้องกับสิ่งนั้น

IStudentRepository

พื้นที่เก็บข้อมูลนักศึกษา

ขั้นตอนที่ 9

หลังจากนั้นให้เพิ่มคำสั่งการอ่าน

รับ StudentListQuery

รับ StudentByIdQuery

ขั้นตอนที่ 10

จากนั้นสร้างคำสั่งต่างๆ

สร้างคำสั่งนักเรียน

อัพเดทคำสั่งนักศึกษา

ลบคำสั่งนักเรียน

ขั้นตอนที่ 11

ตอนนี้เพิ่มตัวจัดการแบบสอบถามและคำสั่ง

รับ StudentListHandler

รับ StudentByIdHandler

สร้าง StudentHandler

อัพเดต StudentHandler

ลบStudentHandler

ขั้นตอนที่ 12

กำหนดค่าสตริงการเชื่อมต่อฐานข้อมูลภายในไฟล์ appsettings.json

ขั้นตอนที่ 13

ลงทะเบียนบริการบางอย่างภายในคลาสโปรแกรม

ขั้นตอนที่ 14

ถัดไป ดำเนินการย้ายฐานข้อมูลและคำสั่งอัปเดต

เพิ่มการโยกย้าย "เริ่มต้น"

อัพเดตฐานข้อมูล

ขั้นตอนที่ 15

หลังจากนั้นให้สร้าง Students Controller และฉีดบริการ MediatR ภายในนั้นเพื่อส่งคำสั่งและคำสั่ง

ขั้นตอนที่ 16

สุดท้าย ให้เรียกใช้แอปพลิเคชันของคุณและเข้าถึงตำแหน่งข้อมูลต่างๆ โดยใช้ UI แบบผยอง

URL ของ GitHub

https://github.com/Jaydeep-007/CQRSAndMediatRDemo.git

บทสรุป

ที่นี่เราได้พูดคุยถึงรูปแบบการออกแบบ CQRS และ MediatR รวมถึงวัตถุประสงค์และคุณประโยชน์ในแอปพลิเคชันขนาดใหญ่และการใช้งานทีละขั้นตอนโดยใช้ .NET Core Web API