คำถามติดแท็ก business-logic-layer

10
การแยกตรรกะทางธุรกิจและการเข้าถึงข้อมูลใน django
ฉันจะเขียนโครงการใน Django และผมเห็นว่า 80% models.pyของรหัสที่อยู่ในแฟ้ม รหัสนี้ทำให้เกิดความสับสนและหลังจากช่วงเวลาหนึ่งฉันหยุดที่จะเข้าใจสิ่งที่เกิดขึ้นจริง นี่คือสิ่งที่รบกวนจิตใจฉัน: ฉันพบว่าน่าเกลียดที่ระดับโมเดลของฉัน (ซึ่งควรจะรับผิดชอบในการทำงานกับข้อมูลจากฐานข้อมูลเท่านั้น) ก็กำลังส่งอีเมลการเดินบน API ไปยังบริการอื่น ๆ เป็นต้น นอกจากนี้ฉันพบว่าไม่สามารถวางตรรกะทางธุรกิจในมุมมองได้เนื่องจากวิธีนี้เป็นการยากที่จะควบคุม ตัวอย่างเช่นในแอปพลิเคชันของฉันมีอย่างน้อยสามวิธีในการสร้างอินสแตนซ์ใหม่ของUserแต่ในทางเทคนิคมันควรสร้างพวกเขาอย่างสม่ำเสมอ ฉันไม่ได้สังเกตเสมอเมื่อวิธีการและคุณสมบัติของแบบจำลองของฉันไม่เป็นตัวกำหนดและเมื่อพวกเขาพัฒนาผลข้างเคียง นี่คือตัวอย่างง่ายๆ ตอนแรกUserแบบจำลองเป็นแบบนี้: class User(db.Models): def get_present_name(self): return self.name or 'Anonymous' def activate(self): self.status = 'activated' self.save() เมื่อเวลาผ่านไปมันกลายเป็นสิ่งนี้: class User(db.Models): def get_present_name(self): # property became non-deterministic in terms of database # data is taken …

4
"เลเยอร์ตรรกะทางธุรกิจ" อยู่ตรงไหนในแอปพลิเคชัน MVC
ก่อนอื่นก่อนที่ใครจะกรีดร้องหลอกลวงฉันมีช่วงเวลาที่ยากลำบากในการสรุปเป็นชื่อเรื่องง่ายๆ ชื่ออื่นอาจเป็น "โมเดลโดเมนกับโมเดล MVC ต่างกันอย่างไร" หรือ "โมเดลคืออะไร" ตามแนวคิดแล้วฉันเข้าใจ Model เป็นข้อมูลที่มุมมองและผู้ควบคุมใช้ นอกเหนือจากนั้นดูเหมือนว่าจะมีความคิดเห็นที่แตกต่างกันมากมายเกี่ยวกับสิ่งที่ประกอบเป็นโมเดล โมเดลโดเมนคืออะไรเทียบกับโมเดลแอปเทียบกับโมเดลมุมมองเทียบกับโมเดลบริการ ฯลฯ ตัวอย่างเช่นในคำถามล่าสุดที่ฉันถามเกี่ยวกับรูปแบบพื้นที่เก็บข้อมูลฉันได้รับแจ้งว่าพื้นที่เก็บข้อมูลเป็นส่วนหนึ่งของโมเดล อย่างไรก็ตามฉันได้อ่านความคิดเห็นอื่น ๆ ว่าควรแยกโมเดลออกจากโมเดลการคงอยู่และเลเยอร์ตรรกะทางธุรกิจ ท้ายที่สุดแล้วรูปแบบพื้นที่เก็บข้อมูลไม่ควรแยกวิธีการคงอยู่ของคอนกรีตออกจากแบบจำลองหรือไม่? คนอื่น ๆ บอกว่ามีความแตกต่างระหว่างโมเดลโดเมนและโมเดล MVC ลองยกตัวอย่างง่ายๆ AccountController ที่มาพร้อมกับโครงการเริ่มต้น MVC ฉันได้อ่านความคิดเห็นหลายประการว่ารหัสบัญชีที่รวมอยู่มีการออกแบบที่ไม่ดีละเมิด SRP ฯลฯ .. ฯลฯ หากมีการออกแบบรูปแบบการเป็นสมาชิกที่ "เหมาะสม" สำหรับแอปพลิเคชัน MVC จะเป็นอย่างไร คุณจะแยกบริการ ASP.NET (ผู้ให้บริการสมาชิกผู้ให้บริการบทบาท ฯลฯ ) ออกจากโมเดลอย่างไร หรือคุณจะทำเลย? วิธีที่ฉันเห็นแบบจำลองควร "บริสุทธิ์" บางทีอาจจะมีตรรกะการตรวจสอบความถูกต้อง .. แต่ควรแยกออกจากกฎทางธุรกิจ (นอกเหนือจากการตรวจสอบความถูกต้อง) ตัวอย่างเช่นสมมติว่าคุณมีกฎทางธุรกิจที่ระบุว่าจะต้องมีคนได้รับอีเมลเมื่อสร้างบัญชีใหม่ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.