ตรรกะทางธุรกิจเทียบกับเลเยอร์บริการ


9

ฉันอ่านคำตอบนี้: https://softwareengineering.stackexchange.com/a/234254/173318โปรดแก้ไขความเข้าใจของฉัน

กฎธุรกิจหมายถึงรายการขั้นตอนของธุรกิจในโลกแห่งความเป็นจริง (ไม่มีรหัส)

ตรรกะทางธุรกิจหมายถึงกระบวนการในการแปลงกฎเกณฑ์ทางธุรกิจเป็นรหัสและรหัส / ประเภทของรหัสที่ระบุว่าเป็น "ตรรกะทางธุรกิจ"

และชั้นบริการใช้ทำอะไร ถ้าฉันอ่านคำตอบนี้ฟังดูไม่ต่างกับตรรกะทางธุรกิจhttps://stackoverflow.com/a/4817935/4190539

ชั้นบริการเป็นที่สำหรับตรรกะทางธุรกิจและที่เก็บซึ่งกันและกันหรือไม่?


1
"เลเยอร์บริการ" เป็นคำทั่วไปสามารถเป็นหรือมีทุกสิ่งที่คุณต้องการ คำถามที่คุณอ้างถึงนั้นกำลังพูดถึง "service layer ใน ASP.NET MVC" ซึ่งให้คำเฉพาะเจาะจงมากขึ้น คุณตั้งใจพูดถึงเรื่องหลังหรือไม่? หรือคุณเพียงแค่พลาดความแตกต่าง?
Doc Brown

นั่นคือสิ่งที่ฉันได้มา แต่ฉันชอบที่จะได้ยินคำอธิบายของคุณเกี่ยวกับพวกเขาทั้งหมด
Kakashi

คำตอบ:


11

"Service layer" เป็นคำศัพท์ทางสถาปัตยกรรม มันหมายถึงส่วนหนึ่งของระบบที่อยู่ที่ไหนสักแห่งในช่วงกลางของสถาปัตยกรรมหลายชั้นด้านล่างชั้นโต้ตอบผู้ใช้ แต่เหนือชั้นการเข้าถึงข้อมูล

ตรรกะทางธุรกิจสามารถนำมาใช้ในชั้นบริการจึงบังคับใช้กฎทางธุรกิจ

โปรดทราบว่ามีบางกรณีที่ตรรกะทางธุรกิจสิ้นสุดลงในเลเยอร์อื่น ตัวอย่างเช่นกฎทางธุรกิจบางอย่างถูกบังคับใช้ในเลเยอร์การโต้ตอบผู้ใช้เพื่อปรับปรุงประสบการณ์ผู้ใช้ (เช่นตัวตรวจสอบความถูกต้องที่เขียนด้วย Javascript เพื่อให้คุณสามารถตรวจสอบได้โดยไม่ต้องเดินทางไปยังเซิร์ฟเวอร์) เมื่อเป็นกรณีนี้ชั้นบริการมักจะทำซ้ำการบังคับใช้

กฎทางธุรกิจอื่น ๆ สามารถบังคับใช้ได้ที่ชั้นฐานข้อมูลเท่านั้นตัวอย่างเช่นเมื่อมีข้อกังวลที่เกิดขึ้นพร้อมกัน (นึกถึงแอปพลิเคชันที่คุณสามารถตรวจสอบหนังสือห้องสมุด) หรือข้อกังวลเกี่ยวกับประสิทธิภาพการทำงาน (จินตนาการว่า โครงสร้างค่าธรรมเนียมที่ซับซ้อน)


มันดีไหมถ้าฉันมีไดเรกทอรีบริการและมีคลาสเป็นสถานที่ที่ฉันใส่ตรรกะทางธุรกิจและฉันฉีดที่เก็บข้อมูล, บริการอื่น, การตรวจสอบที่นั่น?
Kakashi

ใช่มันเป็นเรื่องธรรมดาที่จะฉีดบริการอื่น ๆ รวมถึงการเข้าถึงข้อมูลลงในชั้นบริการ - มันจะต้องเก็บข้อมูลอย่างใดและถ้าเขียนอย่างถูกต้องก็ไม่รู้ว่าจะทำอย่างไรด้วยตัวเอง
John Wu

ที่เก็บข้อมูลต้องไม่มีรหัสธุรกิจใด ๆ ใช่ไหม มันหมายความว่าพื้นที่เก็บข้อมูลจะต้องชัดเจนจากการตรวจสอบตัวกรองหรือการจัดการ Strijg อื่น ๆ เช่น strtolower เช่น?
Kakashi

ไม่จำเป็น (ฉันได้ให้สองตัวอย่างในการโพสต์ของฉัน) แต่มันเป็นการปฏิบัติที่ดีในการย้ายตรรกะทางธุรกิจให้มากที่สุดเท่าที่จะทำได้
John Wu

โอ้ไม่เป็นไรคุณมีรหัสรูปแบบที่เก็บที่ฉันเห็นหรือเปล่า
Kakashi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.