ฉันเจอการออกแบบการจัดหากิจกรรมและฉันต้องการใช้ในแอปพลิเคชันที่ต้องการให้ไคลเอ็นต์ REST (RESTful แม่นยำ) อย่างไรก็ตามฉันล้มเหลวในการเชื่อมต่อสิ่งเหล่านี้เข้าด้วยกันเนื่องจาก REST ค่อนข้างคล้ายกับ CRUD และการจัดหากิจกรรมเป็นงานที่ต้องทำ ฉันสงสัยว่าคุณจะออกแบบการสร้างคำสั่งตามคำขอไปยังเซิร์ฟเวอร์ REST ได้อย่างไร ลองพิจารณาตัวอย่างนี้:
ด้วย REST คุณสามารถกำหนดสถานะใหม่ให้กับทรัพยากรที่เรียกว่าไฟล์ ในคำขอเดียวคุณสามารถส่งชื่อไฟล์ใหม่คุณสามารถเปลี่ยนโฟลเดอร์หลักและ / หรือเปลี่ยนเจ้าของไฟล์และอื่น ๆ
วิธีสร้างเซิร์ฟเวอร์เพื่อให้ฉันสามารถใช้การจัดหากิจกรรมได้ ฉันคิดถึงความเป็นไปได้เหล่านี้:
ตรวจสอบบนเซิร์ฟเวอร์ซึ่งสาขาที่มีการเปลี่ยนแปลงและสร้างคำสั่งที่เหมาะสม (
RenameFileCommand
,MoveFileCommand
,ChangeOwnerCommand
, ... ) และจัดส่งเหล่านี้ที อย่างไรก็ตามในการตั้งค่านี้แต่ละคำสั่งสามารถล้มเหลวในการปล่อยให้ผู้อื่นออกจากการทำธุรกรรมและจากการเปลี่ยนแปลง "atomic" เป็นทรัพยากรส่งเพียงหนึ่งคำสั่ง (
UpdateFileCommand
) และในการจัดการคำสั่งอย่างแม่นยำมากขึ้นในการรวม, ตรวจสอบว่ามีการเปลี่ยนแปลงเขตและส่งแต่ละเหตุการณ์แทน (FileRenamedEvent
,FileMovedEvent
,OwnerChangedEvent
, ... )อันนี้ฉันไม่ชอบเลย: ในคำขอไปยังเซิร์ฟเวอร์ฉันจะระบุในส่วนหัวของคำสั่งที่จะใช้เพราะ UI ยังคงเป็นงานที่ใช้ (การสื่อสารจะทำผ่าน REST) อย่างไรก็ตามมันจะล้มเหลวในการใช้งานการสื่อสาร REST อื่น ๆ (เช่นในแอพภายนอก) เนื่องจากพวกเขาไม่ผูกพันที่จะเปลี่ยนเพียงหนึ่งฟิลด์ในคำขอเดียว นอกจากนี้ฉันได้นำการเชื่อมต่อที่ค่อนข้างใหญ่เข้ากับแบ็กเอนด์ UI, REST และ ES
คุณจะเลือกอันไหนดีหรือมีวิธีไหนที่ดีกว่าในการจัดการกับสิ่งนี้?
หมายเหตุด้าน: แอพที่เขียนใน Java และ Axon Framework สำหรับการจัดหากิจกรรม