ฉันได้ยินคนพูดถึงตรรกะทางธุรกิจมากมายในที่ทำงานและออนไลน์และฉันได้อ่านคำถามหลายข้อเกี่ยวกับเว็บไซต์นี้ แต่คำนี้ยังไม่สมเหตุสมผลสำหรับฉัน ตัวอย่างเช่นต่อไปนี้เป็นคำสั่ง (ถอดความ) ที่ฉันมักจะเห็น:
"ตรรกะทางธุรกิจเป็นส่วนหนึ่งของโปรแกรมของคุณที่เข้ารหัสกฎเกณฑ์ทางธุรกิจที่แท้จริง" คำจำกัดความส่วนใหญ่ที่ฉันได้อ่านเป็นคำวงกลมเช่นนี้
"ตรรกะทางธุรกิจคือทุกสิ่งที่ไม่เหมือนใครสำหรับแอปพลิเคชันของคุณโดยเฉพาะ" ฉันไม่เห็นว่าสิ่งนี้แตกต่างจาก "แอปพลิเคชันของคุณโดยเฉพาะคืออะไร แต่เป็นตรรกะทางธุรกิจ" เว้นแต่ว่าเราจะมีการคิดค้นใหม่โดยบังเอิญ ดังนั้นชื่อคำถาม
"ควรมี Business Logic Layer เหนือ Data Access Layer ของคุณและต่ำกว่า GUI Layer ของคุณ" ในรหัสที่ฉันเขียนตัวเข้าถึงฐานข้อมูลต้องทราบว่าข้อมูลใดที่พวกเขาควรจะเข้าถึงและรหัส UI ต้องรู้มากมายเกี่ยวกับสิ่งที่กำลังแสดงเพื่อแสดงอย่างถูกต้องและไม่มีอะไรทำระหว่าง ทั้งสองแห่งนั้นไม่ใช่การส่งข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์ ดังนั้นสิ่งที่ควรจะเป็น Business Logic Layer?
"ตรรกะทางธุรกิจควรแยกออกจากตรรกะการนำเสนอ" คำขอคุณสมบัติส่วนใหญ่ที่เราได้รับคือการเปลี่ยนตรรกะการนำเสนอด้วยเหตุผลทางธุรกิจ หากหนึ่งในกฎเกณฑ์ทางธุรกิจคือการแสดงราคาพันธบัตรรัฐบาลสหรัฐฯในรูปแบบที่ 32 โดยค่าเริ่มต้น (ในขณะเดียวกันก็ให้ UI สำหรับผู้ใช้ในการกำหนดค่านั้น) ตรรกะการนำเสนอต้องมีอย่างน้อยต้องรู้ว่ามีกฎนี้อยู่หรือไม่ นอกจากนี้ดูเหมือนว่าส่วนสำคัญของการออกแบบ UX ช่วยให้ผู้ใช้เข้าใจกฎเกณฑ์ทางธุรกิจซอฟต์แวร์ของเราพยายามนำไปใช้
เป็นไปได้หรือไม่ที่ฉันอยู่ในทีมที่ทำแค่ตรรกะทางธุรกิจและตรรกะอื่น ๆ ที่ไม่ใช่ธุรกิจกำลังทำโดยทีมอื่น ๆ ? หรือแนวคิดทั้งหมดของ "ตรรกะทางธุรกิจ" เป็นเอนทิตีแยกต่างหากสามารถใช้งานได้สำหรับแอปพลิเคชันหรือสถาปัตยกรรมบางอย่างเท่านั้น
เพื่อช่วยให้คำตอบที่เป็นรูปธรรม: แกล้งคุณต้องนำแอป Pizza ของ Domino มาใช้อีกครั้ง ตรรกะทางธุรกิจคืออะไรและตรรกะที่ไม่ใช่ธุรกิจของแอพนั้นคืออะไร และเป็นไปได้อย่างไรที่จะวางตรรกะทางธุรกิจที่สั่งพิซซ่าใน "เลเยอร์" ของโค้ดโดยไม่มีข้อมูลพิซซ่าส่วนใหญ่ตกอยู่ในการเข้าถึงข้อมูลและเลเยอร์การนำเสนอ
อัปเดต:ฉันได้ข้อสรุปว่าทีมของฉันอาจใช้รหัส UI 90% และส่วนใหญ่ แต่ไม่ใช่ทั้งหมดที่คุณเรียกว่าตรรกะทางธุรกิจมาจากทีมหรือ บริษัท อื่น ๆ โดยทั่วไปแอปพลิเคชันของเรามีไว้สำหรับตรวจสอบข้อมูลทางการเงินและคุณลักษณะเกือบทั้งหมดเป็นวิธีการที่ผู้ใช้สามารถกำหนดข้อมูลที่พวกเขาเห็นและดูได้อย่างไร ไม่มีการซื้อหรือขายที่เกิดขึ้น (แม้ว่าเราจะรวมเข้ากับแอพอื่น ๆ จาก บริษัท ของเราที่ทำเช่นนั้น) และข้อมูลจริงจะได้รับจากแหล่งข้อมูลภายนอกจำนวนมาก แต่เราอนุญาตให้ผู้ใช้ทำสิ่งต่าง ๆ เช่นส่งสำเนาของ "จอภาพ" ไปยังผู้ใช้รายอื่นดังนั้นรายละเอียดวิธีที่เราจัดการที่อาจมีคุณสมบัติเป็นตรรกะทางธุรกิจ มีแอพมือถือที่ปัจจุบันพูดถึงโค้ดแบ็กเอนด์ของเราอยู่บ้างและฉันรู้ว่าส่วนใดของโค้ดส่วนหน้าของฉันที่ฉันต้องการให้มันแบ่งปันกับ UI ของเราในโลกอุดมคติ (โดยทั่วไป M ใน quasi-MVC ของเรา) ฉันเดาว่านั่นคือ BLL สำหรับเรา
ฉันยอมรับคำตอบของผู้ใช้ 61852 เนื่องจากมันทำให้ฉันเข้าใจอย่างชัดเจนมากขึ้นว่า "ตรรกะทางธุรกิจ" ทำอะไรและไม่ได้อ้างถึง