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

3
ตรรกะทางธุรกิจที่ควรนั่งในสถาปัตยกรรมบริการไมโคร?
ยังคงพยายามคลุมหัวของฉันรอบ ๆ สถาปัตยกรรมไมโครบริการเนื่องจากฉันคุ้นเคยกับวิธีการแบบเสาหิน สมมติว่าเราพยายามสร้างระบบการจอง Uber ที่ง่ายมาก เพื่อลดความซับซ้อนของสิ่งที่เราสมมติว่าเรามี 3 บริการและ API ประตูสำหรับไคลเอนต์: Booking, Drivers, Notificationและเรามีขั้นตอนการทำงานต่อไปนี้: เมื่อสร้างการจองใหม่: ตรวจสอบว่าผู้ใช้ปัจจุบันมีการจองแล้ว รับรายการไดรเวอร์ที่มี ส่งการแจ้งเตือนไปยังผู้ขับขี่เพื่อรับการจอง คนขับรับการจอง สมมติว่าการส่งข้อความทั้งหมดทำได้ผ่านการโทร http แทนที่จะส่งข้อความบัสเช่นคาฟคาเพื่อให้ทุกอย่างง่ายขึ้น ดังนั้นในกรณีนี้ฉันคิดว่าBookingบริการสามารถทำการตรวจสอบการจองที่มีอยู่ แต่ใครจะได้รับรายชื่อของไดรเวอร์และการแจ้งเตือนที่มีอยู่ ฉันกำลังคิดที่จะทำในระดับเกตเวย์ แต่ตอนนี้ตรรกะแบ่งออกเป็นสองที่: Gateway - รับรายการไดรเวอร์ที่มีอยู่ + ส่งการแจ้งเตือน Booking - ตรวจสอบการจองที่มีอยู่ และฉันค่อนข้างแน่ใจว่าเกตเวย์ไม่ใช่สถานที่ที่เหมาะสมที่จะทำ แต่ฉันรู้สึกว่าถ้าเราทำในBookingบริการมันจะกลายเป็นคู่แน่น? เพื่อให้มันซับซ้อนยิ่งขึ้นจะเกิดอะไรขึ้นถ้าเรามีโครงการอื่นที่ต้องการนำระบบการจองกลับมาใช้ใหม่ แต่ด้วยตรรกะทางธุรกิจของมันเอง นั่นเป็นเหตุผลที่ฉันคิดว่าจะทำในระดับเกตเวย์เพื่อให้เกตเวย์โครงการใหม่สามารถมีตรรกะทางธุรกิจของตัวเองแยกต่างหากจากที่มีอยู่ อีกวิธีหนึ่งในการทำฉันคิดว่าแต่ละโครงการมีบริการจองของตัวเองที่จะพูดคุยกับบริการจองหลัก แต่ฉันไม่แน่ใจว่าวิธีที่ดีที่สุดที่นี่ :-)

3
Entity Framework และการหลีกเลี่ยง Anemic Domain Model
ในตรรกะทางธุรกิจของเราบางครั้งเรามีวิธีการที่กำหนดไว้ดังนี้: User.ResetCourse(Course courseToReset) ปัญหาคือทั้งผู้ใช้และหลักสูตรเป็นวัตถุพร็อกซี Entity Framework ซึ่งหมายความว่าเมื่อเราเข้าสู่คุณสมบัติการนำทางทั้งผู้ใช้หรือหลักสูตรมันสามารถทำให้เกิดความนิยมอย่างมากในฐานข้อมูลเพราะวัตถุเหล่านั้นไม่ได้เป็น IQueryable ดังนั้นจึงวนซ้ำผ่านพวกเขาตามปกติ เพื่อแก้ปัญหานี้เราเปลี่ยนลายเซ็นเป็น: User.ResetCourse(MyDBContext db, Course courseToReset) ซึ่งหมายความว่าเราสามารถสอบถามฐานข้อมูลโดยตรงเพื่อทำการเปลี่ยนแปลงที่เราต้องการอย่างมีประสิทธิภาพ แต่การส่งบริบทฐานข้อมูลไปยังวัตถุทางธุรกิจดูเหมือนจะผิดพลาด หลังจากนั้นเราย้ายไปยังชั้นบริการที่ให้ผู้ใช้ซึ่งหมายความว่าเรามีสิ่งที่ชอบ: CourseService.ResetForUser(Course courseToReset, User forUser) บริการนี้มีการอ้างอิงถึง DBContext ที่ถูกสร้าง แต่ตอนนี้วัตถุธุรกิจของเราเป็นเพียงถุงข้อมูลที่ไม่มีพฤติกรรม (เช่นรุ่น Anemic Domain Model) เราจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร

4
ตรรกะทางธุรกิจเป็นของเซิร์ฟเวอร์หรือไม่
สแต็กทั่วไปสำหรับเว็บแอ็พพลิเคชันคือฐานข้อมูลเซิร์ฟเวอร์ที่มีโค้ดฝั่งเซิร์ฟเวอร์และผู้ใช้ที่มีเบราว์เซอร์ที่มี HTML / CSS / JavaScript ก่อนที่จะ AJAX ที่กว้างขวาง MVC ซึ่งคอนโทรลเลอร์เป็นโค้ดฝั่งเซิร์ฟเวอร์ rulled เซิร์ฟเวอร์ต้องกำหนดเส้นทางการร้องขอคำตอบสำหรับหน้าเว็บแบบไดนามิก (เช่นโซลูชัน html templated เช่น JSP และ ASP) เซิร์ฟเวอร์เพื่อประสานการโทรไปยังฐานข้อมูลและตัดสินใจว่าจะใช้เพจแบบไดนามิกใดเพื่อตอบคำขอหน้า ผลลัพธ์ทั้งหมดนี้คือเซิร์ฟเวอร์นั้นมีตรรกะทางธุรกิจแม้ว่าตรรกะทางธุรกิจจะไม่เชื่อมโยงกับแนวคิดในการแสดงหน้าเว็บ ตอนนี้เรากำลังจะย้ายไปที่ "Web 2.0" เซิร์ฟเวอร์คงที่หน้าเซิร์ฟเวอร์ที่ใช้ JavaScript เพื่อเติมเต็มตัวเองและเปลี่ยนสิ่งที่พวกเขากำลังนำเสนอ สามารถอยู่ใน JavaScript JavaScript มักจะใช้บริการ RESTful ซึ่งหมายความว่าจะระบุแบบสอบถามฐานข้อมูล ดังนั้นเซิร์ฟเวอร์จึงอยู่ในบทบาทของการให้บริการไฟล์จริงและรับสาย AJAX และการตอบรับการโทร AJAX เป็นเพียงการจัดการเซสชันและให้ความปลอดภัย และจริงๆแล้วสิ่งที่ผู้ใช้ควรจะเห็นก็คือข้อมูลที่ควรระบุในฐานข้อมูล ดังนั้นจากที่นั่นเซิร์ฟเวอร์ควรถูกผลักไสให้เข้ากับบทบาทของคนกลางที่โง่เง่าที่บางครั้งจะทำอะไรบางอย่างเช่นส่งอีเมลออกไปหรือดับเว็บเซอร์? ตรรกะทางธุรกิจทั้งหมดอยู่ใน JavaScript (เมื่อไม่เป็นความลับ) หรืออยู่ในกระบวนงานที่เก็บไว้เมื่อเป็นเช่นนั้นหรือไม่ มันจะสมเหตุสมผลหรือไม่ที่จะรวมเซิร์ฟเวอร์และฐานข้อมูลหรือสร้างโซลูชัน ERP เช่นฟังก์ชัน SAP เป็นเซิร์ฟเวอร์

2
ฉันควรใช้คำว่า "ตรรกะทางธุรกิจ" เมื่อพูดถึงแอปพลิเคชันที่ไม่ใช่ธุรกิจหรือไม่
สมมติว่ามีส่วนหนึ่งของโปรแกรมที่ไม่ได้จัดการกับการเริ่มต้น, อินพุต, เอาต์พุต เพียงระบุสิ่งที่ควรทำสิ่งที่ได้รับอนุญาตหรือไม่ ฉันใช้คำว่า "ตรรกะทางธุรกิจ" สำหรับสิ่งนี้ แต่แอปพลิเคชันไม่สามารถทำอะไรกับธุรกิจได้ ตัวอย่าง: เกม สมมติว่ามีชิ้นส่วนต่อไปนี้: การประมวลผลอินพุต การตรวจจับการชน, ฟิสิกส์, การควบคุมผู้เล่น การแสดงผลเอาท์พุท AI - NPCs บรรลุเป้าหมายที่ระบุอย่างไร "ตรรกะทางธุรกิจ" - จะเกิดอะไรขึ้นเมื่อผู้เล่นแตะวัตถุบางอย่าง มี NPC ประเภทใดและทำอะไรเมื่อ ... แนวคิดของ "ชีวิต", "กระสุน", "ระดับ", "คะแนน" แต่มันไม่ใช่ธุรกิจมันเป็นแค่เกม Wikipediaไม่ชัดเจนเกี่ยวกับเรื่องนี้

1
ตรรกะทางธุรกิจเทียบกับเลเยอร์บริการ
ฉันอ่านคำตอบนี้: https://softwareengineering.stackexchange.com/a/234254/173318โปรดแก้ไขความเข้าใจของฉัน กฎธุรกิจหมายถึงรายการขั้นตอนของธุรกิจในโลกแห่งความเป็นจริง (ไม่มีรหัส) ตรรกะทางธุรกิจหมายถึงกระบวนการในการแปลงกฎเกณฑ์ทางธุรกิจเป็นรหัสและรหัส / ประเภทของรหัสที่ระบุว่าเป็น "ตรรกะทางธุรกิจ" และชั้นบริการใช้ทำอะไร ถ้าฉันอ่านคำตอบนี้ฟังดูไม่ต่างกับตรรกะทางธุรกิจhttps://stackoverflow.com/a/4817935/4190539 ชั้นบริการเป็นที่สำหรับตรรกะทางธุรกิจและที่เก็บซึ่งกันและกันหรือไม่?

4
การแยกการดึงข้อมูลและวัตถุธุรกิจระหว่างชั้น DAL และ BLL
ฉันได้ทำการวิจัยก่อนโพสต์คำถามนี้ ในบรรดาคำถามหรือโพสต์อื่น ๆ ข้อใดข้อหนึ่งมีให้ด้านล่าง ฉันไม่สามารถทราบวิธีการกำหนด .. วัตถุธุรกิจภายใน Data Access Layer ฉันมีที่เก็บและชั้นธุรกิจเรียกที่เก็บเพื่อเรียกข้อมูล ตัวอย่างเช่นสมมติว่าฉันมีคลาสต่อไปนี้สำหรับ BLL และ DAL: class BllCustomer { public int CustomerId {get; set;} public String Name {get; set;} public BllAddress Address {get; set;} } class BllAddress { public int AddressId {get; set;} public String Street {get; set;} public String City …

3
กระบวนการคิดเชิงวัตถุคืออะไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังศึกษา OOP ร่วมกับการใช้ MVC ของ Zend ในช่วงไม่กี่เดือนที่ผ่านมา โดยทั่วไปฉันค่อนข้างใหม่กับการเขียนโปรแกรม แต่ฉันรู้สึกอย่างยิ่งว่าฉันควรเรียนรู้สิ่งต่าง ๆ ในแบบที่ 'ถูกต้อง' ซึ่งสำหรับฉันหมายถึงการทำให้แน่ใจว่าฉันเข้าใจว่าทำไมสิ่งต่าง ๆ ถึงถูกต้อง คือฉันได้พบว่าในการเรียนรู้วิธีทำบางสิ่ง (พูดอะไรเพลง) วิธีที่ดีที่สุดในการเรียนรู้วิธีทำบางสิ่งคือรู้ว่าทำไมมันถึงทำแบบนั้นตั้งแต่แรก อย่างไรก็ตามฉันพยายามอย่างหนักกับความเข้าใจในการพัฒนารูปแบบธุรกิจของตัวเอง (เช่น M ของ MVC) และฉันตัดสินใจว่าไม่ใช่เพราะฉันไม่เข้าใจ OOP โดยทั่วไปเพราะฉันศึกษามาหลายครั้ง เดือนและฉันไม่คิดว่าแนวคิดจะยากมากที่จะเข้าใจ ฉันพบตัวอย่างที่ฉันได้ศึกษาอย่างเข้าใจง่าย ฉันคิดว่าปัญหาสำหรับฉันนั้นอยู่ในขั้นตอนการแปลปัญหาของฉันเองไปสู่การแก้ปัญหาเชิงวัตถุ ตัวอย่างในหนังสือ (ที่ฉันอ่านมาแล้ว) ชัดเจนเกินไปดังนั้นกระบวนการแปลปัญหาเป็นวัตถุไม่ยากมาก สิ่งที่ฉันคิดว่าฉันอาจขาดหายไปคือกระบวนการที่เป็นนามธรรมระดับสูง รายการขั้นตอนหรือคำถามบางประเภทที่โซลูชันเชิงวัตถุทุกตัวต้องตอบในระดับสูงสุด หากคุณต้องอธิบายกระบวนการดังกล่าวในไม่เกินห้าขั้นตอนพวกเขาจะเป็นอย่างไรและเพราะอะไร กระบวนการที่มีประสิทธิภาพที่สุดในการแปลปัญหาใด ๆ ให้เป็นโซลูชันเชิงวัตถุคืออะไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.