การสร้างเลเยอร์บริการมีความสำคัญอย่างไร


68

ฉันเริ่มสร้างแอพใน 3 เลเยอร์ (DAL, BL, UI) [ส่วนใหญ่จัดการกับ CRM, รายงานการขายและสินค้าคงคลัง]

เพื่อนร่วมงานคนหนึ่งบอกฉันว่าฉันต้องย้ายไปที่รูปแบบเลเยอร์บริการซึ่งนักพัฒนาซอฟต์แวร์มาจากรูปแบบการบริการจากประสบการณ์ของพวกเขาและเป็นวิธีที่ดีกว่าในการออกแบบแอปพลิเคชันส่วนใหญ่ เขากล่าวว่าจะง่ายกว่ามากในการรักษาแอพพลิเคชั่นในอนาคต

โดยส่วนตัวแล้วฉันได้รับความรู้สึกว่ามันเป็นเพียงการสร้างสิ่งที่ซับซ้อนมากขึ้นและฉันก็ไม่สามารถเห็นผลประโยชน์มากมายจากสิ่งนี้ที่จะพิสูจน์ได้

แอพนี้มี UI ขนาดเล็กเพิ่มเติมที่ใช้ฟังก์ชั่นแอปพลิเคชั่นเดสก์ท็อปบางส่วน (แต่มีเพียงไม่กี่) ดังนั้นฉันจึงพบว่าตัวเองทำซ้ำรหัสบางส่วน (แต่ไม่มาก) เพียงเพราะการทำซ้ำรหัสบางอย่างฉันจะไม่แปลงเป็นบริการที่มุ่งเน้น แต่เขาบอกว่าฉันควรใช้ต่อไปเพราะโดยทั่วไปแล้วมันเป็นสถาปัตยกรรมที่ดีมากทำไมโปรแกรมเมอร์จึงหลงใหลในบริการ

ฉันพยายาม google บนมัน แต่ฉันยังคงสับสนและไม่สามารถตัดสินใจได้ว่าจะทำอย่างไร

คำตอบ:


58

หนังสือของ Martin Fowler ระบุ "รูปแบบของสถาปัตยกรรมองค์กร":

คำถามที่ตอบง่ายกว่าอาจเป็นเมื่อไม่ใช้ คุณอาจไม่จำเป็นต้องใช้ Service Layer หากตรรกะทางธุรกิจของแอปพลิเคชันของคุณจะมีลูกค้าประเภทเดียว - กล่าวคือส่วนติดต่อผู้ใช้ - และการใช้การตอบสนองกรณีไม่เกี่ยวข้องกับทรัพยากรการทำธุรกรรมหลายรายการ [ ... ]

แต่ทันทีที่คุณเห็นลูกค้าประเภทที่สองหรือทรัพยากรการทำธุรกรรมครั้งที่สองในการตอบสนองกรณีการใช้งานก็จะจ่ายให้กับการออกแบบในชั้นบริการจากจุดเริ่มต้น

ประโยชน์ที่ Service Layer จัดไว้ให้คือการกำหนดชุดการดำเนินการของแอปพลิเคชันทั่วไปที่มีให้กับไคลเอ็นต์ที่แตกต่างกันและประสานการตอบสนองในแต่ละการดำเนินการ ที่คุณมีแอปพลิเคชั่นที่มีไคลเอนต์มากกว่าหนึ่งประเภทที่ใช้ตรรกะทางธุรกิจและมีกรณีการใช้งานที่ซับซ้อนที่เกี่ยวข้องกับทรัพยากรการทำธุรกรรมหลายรายการ - มันสมเหตุสมผลที่จะรวม Service Layer กับธุรกรรมที่ได้รับการจัดการ

ด้วย CRM การขายและสินค้าคงคลังจะมีกรณีการใช้งาน CRUD จำนวนมากซึ่งมักจะมีการติดต่อแบบตัวต่อตัวกับการดำเนินงานของเลเยอร์บริการเกือบทุกครั้ง การตอบสนองต่อการสร้างอัปเดตหรือลบวัตถุโดเมนควรมีการประสานงานและทำธุรกรรมแบบอะตอมโดย Service Layer

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

โดยสรุปเป็นเรื่องดีที่จะใช้ Service Layer - ยิ่งกว่านั้นฉันคิดว่าในตัวอย่างที่คุณให้มาเพราะดูเหมือนว่าคุณมีลูกค้าหลายรายที่มีตรรกะทางธุรกิจ


2
น่าสนใจมาร์ตินฟาวเลอร์สนับสนุนการใช้อินเทอร์เฟซแบบเดียวกันสำหรับการเรียกใช้ในพื้นที่และระยะไกลโดยอ้างว่าความแตกต่างด้านประสิทธิภาพที่ยิ่งใหญ่ในการเรียกใช้จากระยะไกลทำให้อินเทอร์เฟซหยาบ
psr

ฉันไม่เข้าใจย่อหน้าของคุณมากWith CRM, Sales and Inventory there will be a lot of CRUD-type use cases of which there is almost always a one-to-one correspondence with Service Layer operations- ถ้ามันเกี่ยวกับ UIs หลายอันดังนั้น CRUD จะเข้ามาที่นี่ได้อย่างไร? และถ้าฉันไม่ต้องการ UIs หลายตัวถึงแม้ว่า CRUD จะไปได้ดีกับบริการฉันก็ยังไม่ได้ทำเลเยอร์บริการถ้าฉันเข้าใจถูกต้องและฉันหวังว่าฉันจะทำเพราะฉันชอบที่จะทำให้สิ่งต่าง ๆ เป็นเรื่องง่าย ยุ่งกับความเห็นที่ไม่มีประสบการณ์ของฉัน)
BornToCode

4
ในกรณีดังกล่าวเป็นเรื่องยากที่จะมีลูกค้าเพียงรายเดียวเท่านั้นที่สามารถใช้ประโยชน์จากมันได้ หากคุณมีเพียงหนึ่ง UI ฉันสามารถนึกถึงสองเหตุผลที่คุณยังอาจต้องการเลเยอร์บริการ: ความปลอดภัยและการใช้ซ้ำ การตั้งค่าองค์กรทั่วไปจะมีแอป UI ให้ลูกค้าภายนอกและเลเยอร์บริการของคุณมีเฉพาะในเครือข่าย ดังนั้นเว็บเซิร์ฟเวอร์จะแยกงานเป็นส่วนที่ถูกล็อคของเครือข่ายของคุณ ในตัวอย่างการขายคุณสามารถนำกลับมาใช้ใหม่ได้หากคุณขายสินค้าจากเว็บไซต์ของคุณและขยายไปยัง eBay หรือ Amazon ตอนนี้คุณมีหนึ่ง UI แต่ยังมีลูกค้าหลายราย
Phil Patterson

5
เพียงแค่เพิ่มความคิดเห็นจาก @PhilPatterson ลูกค้าหลายรายไม่เพียงแค่ต้องใช้ UI คิดว่าบริการเว็บหรือห้องสมุด - พวกเขาสามารถเป็นลูกค้า ส่วนหน้า UI ของคุณอาจใช้เลเยอร์บริการเช่นเดียวกับบริการซอฟต์แวร์ที่คุณจัดทำและให้บุคคลอื่นใช้
Deco

คุณสามารถให้ตัวอย่างของ Service Layer ได้หรือไม่
user962206

34

การเพิ่มเลเยอร์บริการเนื่องจากคุณได้ประเมินแนวคิดและสรุปแนวทางที่ดีที่สุด: ดี

การเพิ่มเลเยอร์บริการเพราะนั่นคือสิ่งที่เด็กเจ๋ง ๆ ทำ: เลวร้าย

หากลำไส้ของคุณบอกว่าคุณไม่ต้องการมันก็ไม่ควรทำ

หนึ่งในการพัฒนาที่น่าผิดหวังในโลกแห่งการเขียนโปรแกรมตลอด 10 ปีที่ผ่านมาคือมันกลายเป็น 'แฟชั่น' ที่น่ารำคาญโดยผู้คนติดตามแนวโน้มและ bandwagons ราวกับว่าพวกเขาเป็นรองเท้าของฤดูกาลนี้ อย่าตกหลุมพรางนั้น เพราะฤดูกาลหน้า 'ทุกคน' จะบอกคุณว่าคุณควรออกแบบมันด้วยวิธีอื่น

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


27
สิ่งนี้ไม่ได้กล่าวถึงประเด็นทั้งหมดมันแค่สร้างคำแถลงการณ์ / คำหยาบเกี่ยวกับแนวทางปฏิบัติด้านการพัฒนาที่สามารถนำไปใช้กับคำถามใด ๆ ในเว็บไซต์นี้ได้ จากการอ่านคำตอบนี้ฉันไม่มั่นใจด้วยซ้ำว่าคุณจะรู้ว่าเลเยอร์บริการคืออะไร
Aaronaught

12
แน่นอนมันสามารถนำไปใช้กับคำถามอื่น ๆ ... ไม่ได้ทำให้มันน้อยลงจริง ความจริงไม่ใช่ทั้งคุณและฉันไม่มีที่ใดก็ได้ใกล้กับบริบทที่จำเป็นในการระบุสิ่งที่เขาต้องการในโครงการของเขาดังนั้นบอกเขาว่าใช่เขาต้องการหรือไม่เขาไม่ได้เป็นเพียงการคาดเดาและไม่เป็นมืออาชีพ สิ่งที่ OP ต้องการคือการสนับสนุนทางศีลธรรมเล็กน้อยในการตัดสินใจที่เขารู้ว่าเป็นสิ่งที่ถูกต้อง
GrandmasterB

5
@Aaraught โดยไม่คำนึงถึงความถูกต้องของคำตอบเขายังคงต้องตอบคำถามหลักว่า "เลเยอร์บริการมีความสำคัญอย่างไร" เขาอ้างว่าไม่จำเป็นเลยและมันอาจจะเป็นแค่แฟชั่น หากคุณไม่เห็นด้วยกับคำตอบกรุณาลงคะแนน
maple_shaft

2
@ แกรนด์มาสเตอร์บีฉันขอยืนยันว่าแฟชั่นเป็นสิ่งที่ดีในการพัฒนาซอฟต์แวร์ นักพัฒนาซอฟต์แวร์ส่วนใหญ่สดใหม่หรือไร้ความสามารถเกินกว่าที่จะทำการออกแบบและตัดสินใจเกี่ยวกับสถาปัตยกรรมได้อย่างดี เรายังคงคาดหวังให้พวกเขาหันมาใช้ซอฟแวร์การทำงานบางอย่างเพื่อให้พวกเขากระโดดบน bandwagon และสอดคล้องกับตัวเลือกการออกแบบที่ไม่ดีเป็นที่นิยมและบำรุงรักษาได้ดีกว่าวิธีที่ทำมาหลายปีที่ผ่านมา ไม่เข้าใจหรือเห็นคุณค่า
maple_shaft

10
@maple_shaft เพียงเพื่อชี้แจงฉันไม่ได้พูดว่าเลเยอร์บริการเป็นแฟชั่น ฉันกำลังพูดตามวิธีการถามคำถามที่ดูเหมือนว่ามีพฤติกรรมแปลก / แฟชั่น / bandwagon ในส่วนของเพื่อนร่วมงานของเขาที่จะผลักดันให้เขาใช้สถาปัตยกรรมที่เขาไม่คิดว่ารับประกันในโครงการของเขา ฉันทำให้ชัดเจนในคำตอบของฉันฉันดู Service Layers (หรือแนวคิดอื่น ๆ ) เป็นเพียงแค่ - แนวคิดที่เป็นกลางที่ควรประเมินความเหมาะสมในการทำบุญของแต่ละโครงการ พวกเขาไม่ควรใช้ / ใช้เมื่อการตัดสินของตนเองบอกว่าพวกเขาไม่ต้องการ
GrandmasterB

22

มีหลายปัจจัยที่เข้าสู่การตัดสินใจในการสร้างเลเยอร์บริการ ฉันได้สร้างเลเยอร์บริการในอดีตด้วยเหตุผลดังต่อไปนี้

  1. รหัสที่ต้องใช้ซ้ำโดยไคลเอนต์หลายราย
  2. ห้องสมุดบุคคลที่สามที่เรามีใบอนุญาต จำกัด สำหรับ
  3. บุคคลที่สามที่ต้องการจุดบูรณาการเข้าสู่ระบบของเรา
  4. การรวมศูนย์ตรรกะทางธุรกิจซ้ำซ้อน

กรณีที่ 1: คุณกำลังสร้างฟังก์ชั่นพื้นฐานที่จำเป็นต้องใช้กับไคลเอนต์ต่าง ๆ มากมาย Service layer สร้างขึ้นเพื่อการใช้งานสำหรับลูกค้าที่แตกต่างกัน

กรณีที่ 2: โดยปกติคุณจะใช้รหัสโฮสต์ในพื้นที่แอป แต่คุณใช้ห้องสมุดบุคคลที่สามที่คุณมีใบอนุญาต จำกัด ในกรณีนี้คุณมีทรัพยากรที่คุณต้องการใช้ทุกที่ แต่มีจำนวน จำกัด เท่านั้น หากคุณโฮสต์บริการหลังบริการทั้งองค์กรของคุณสามารถใช้งานได้จากแอปพลิเคชันของพวกเขาโดยไม่ต้องซื้อใบอนุญาตสำหรับการโฮสต์แต่ละรายการ

กรณีที่ 3: คุณกำลังสร้างฟังก์ชันการทำงานสำหรับบุคคลที่สามเพื่อสื่อสารกับคุณ ในตัวอย่างของคุณคุณสามารถตั้งค่าจุดสิ้นสุดสินค้าคงคลังเพื่ออนุญาตให้ผู้ขายส่งข้อความถึงคุณเกี่ยวกับการจัดส่งผลิตภัณฑ์ขาเข้า

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

ทั้งหมดนี้ถูกกล่าวว่ามีเชิงลบที่อาจเกิดขึ้นกับชั้นบริการ

  1. เพิ่มความซับซ้อนของระบบ ซึ่งก่อนหน้านี้คุณมีเพียงแอปพลิเคชั่นเดียวที่จะแก้ไขข้อบกพร่องตอนนี้คุณมีสองใบ ปัญหาการผลิตจำเป็นต้องตรวจสอบการตั้งค่าแอพไคลเอนต์การตั้งค่าแอพบริการหรือปัญหาการสื่อสารระหว่างไคลเอ็นต์การตั้งค่าและแอพเซิร์ฟเวอร์อย่างถูกต้อง นี่อาจเป็นเรื่องยุ่งยากหากคุณไม่เคยทำมาก่อน
  2. จุดหนึ่งของความล้มเหลว หากคุณมีบริการขัดข้องลูกค้าทั้งหมดจะได้รับผลกระทบ เมื่อรหัสไม่ถูกปรับใช้ในลักษณะนี้ความเสี่ยงอาจน้อยลง (แม้ว่าจะมีวิธีการลดขนาดนี้)
  3. การกำหนดเวอร์ชันอาจทำได้ยากกว่า เมื่อคุณมีแอพหนึ่งตัวที่ใช้บริการที่ปรับใช้การเปลี่ยนแปลงอินเตอร์เฟสสามารถทำได้พร้อมกันระหว่างสองแอพ เมื่อคุณมีลูกค้าหลายรายตอนนี้คุณต้องจัดการว่าใครอยู่บน V1 ใครอยู่บน V2 และประสานงานการลบ V1 (เมื่อคุณรู้ว่าทุกคนอัปเดตเป็น V2)

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


2
+1 ขอบคุณสำหรับคำตอบที่ให้ข้อมูล ฉันสงสัยว่าอากาศจะยอมรับคำตอบของคุณหรือคำตอบของ Deco ในที่สุดเพราะฉันไม่มีประสบการณ์มากเกินไปฉันจึงตัดสินใจเลือกคำตอบที่ได้รับการโหวตมากที่สุด ฉันยังรู้สึกว่าคำตอบของคุณควรได้รับการโหวตมากขึ้น ไม่ว่าในกรณีใด ๆ ฉันขอขอบคุณที่คุณแบ่งปันความรู้และประสบการณ์ ขอขอบคุณ!
BornToCode

1
ยินดีต้อนรับ! ประเด็นหลักที่จะหลีกเลี่ยงทั้งสองคำตอบก็คือนี่คือ (ส่วนใหญ่) เกี่ยวกับการแก้ปัญหาการบำรุงรักษาโดยมีลูกค้าหลายรายที่ต้องทำสิ่งเดียวกัน จำนวนลูกค้าที่ใช้บริการมากขึ้นยิ่งได้รับการบำรุงรักษามากขึ้นสำหรับคุณ
Phil Patterson

1
นอกจากนี้ยังมีการรักษาความปลอดภัย - เลเยอร์การบริการสามารถเป็นอีกหนึ่งกำแพงให้แฮกเกอร์ฝ่าฝืนเพื่อไปสู่ขุมทรัพย์ในฐานข้อมูล การขาดเลเยอร์บริการอาจเป็นสาเหตุที่ทำให้เว็บไซต์จำนวนมากมีช่องโหว่ขนาดใหญ่ด้วยบริการที่อยู่ตรงกลางแฮกเกอร์จะได้รับข้อมูลน้อยลงอย่างมากก่อนที่จะถูกตรวจพบ
gbjbaanb

6

เลเยอร์บริการส่วนใหญ่ที่ฉันเห็นเป็นเรื่องยุ่งเหยิง บริการมักจะมีวิธีการที่แตกต่างกันมาก 1,500 LOC ไม่ใช่เรื่องยาก วิธีการต่าง ๆ นั้นไม่มีอะไรเหมือนกัน แต่ใช้รหัสร่วมกัน ซึ่งจะส่งผลในระดับสูงมีเพศสัมพันธ์ต่ำการทำงานร่วมกัน นอกจากนี้ยังละเมิดOCPด้วยเนื่องจากทุกครั้งที่ต้องการการดำเนินการใหม่คุณต้องแก้ไขรหัสแทนที่จะขยายฐานรหัส เลเยอร์บริการที่สร้างขึ้นอย่างดีนั้นเป็นไปได้ในทางทฤษฎี แต่ฉันไม่เคยเห็นมันมาก่อนในทางปฏิบัติ

CQRSแก้ปัญหาเหล่านี้และป้องกันไม่ให้คุณต้องสร้างหนึ่งในเลเยอร์บริการขั้นตอนเหล่านั้น


2
สร้างโดยมาตรฐานที่ดี แน่นอนว่าด้วยมาตรฐาน OO ส่วนต่อประสานการให้บริการเป็นความผิดพลาดที่สมบูรณ์ จากมุมมองด้านการใช้งานหรือขั้นตอนแล้วมันสนับสนุนวิธีการออกแบบชั้นที่สวยงาม ฉันคิดว่าคนที่มีสายที่ใหญ่ที่สุดในชั้นบริการคือพวกเขาสนับสนุนแอปพลิเคชันที่ใช้การทำธุรกรรมแบบไร้รัฐและไม่สนับสนุนวิธีการเชิงวัตถุที่บริสุทธิ์ ฉันสามารถเข้าใจการโต้แย้งทั้งสองด้าน
maple_shaft

6

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

ในองค์กรส่วนใหญ่ถ้าคุณไปสปอนเซอร์ทางธุรกิจของคุณและถามพวกเขาว่า "คุณต้องการให้แผนกอื่น ๆ ได้รับประโยชน์จากระบบนี้ที่เรากำลังพัฒนาด้วยงบประมาณของคุณหรือไม่" พวกเขาจะหัวเราะเยาะคุณ ทำให้มันทำงานให้กับสปอนเซอร์ธุรกิจของคุณก่อนจากนั้นเริ่ม twiddling ด้วยการนำรหัสนั้นกลับมาใช้ใหม่ (ตามเวลาของแผนกของคุณ)

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

ป.ล. ถ้าคุณกำลังทำงานใน Java, Joshua Bloch มีคำแนะนำเกี่ยวกับอินเทอร์เฟซที่ยอดเยี่ยมมากมายตลอดทั้งเล่ม Effective Java ของเขา


คำตอบที่ดีโดยไม่มีทฤษฎีที่ผ่านการฆ่าเชื้อ
danilo

2

ฉันเห็นด้วยกับคุณ. ไม่จำเป็นต้องรวมอีกหนึ่งเลเยอร์หากคุณใช้ UI เดียว

DAL, BL และ UI / Controller เป็นการผสมผสานที่ดีในการออกแบบแอปพลิเคชัน หากคุณวางแผนที่จะใช้ UI เดียวไม่จำเป็นต้องเตรียมเลเยอร์เพิ่มเติม การรวมเลเยอร์เพิ่มเติมลงในแอปพลิเคชันจะเพิ่มความพยายามในการพัฒนา / เวลาเท่านั้น

schenerio อื่นคือการใช้ UIs หลายรายการในแอปพลิเคชันของคุณมันเป็นการดีที่จะมีเลเยอร์บริการเพื่อจัดการกับ UIs ในกรณีนี้

Stack Overflow: การสนทนาเกี่ยวกับรูปแบบเลเยอร์บริการ


ดังนั้นคุณแนะนำว่าในทุก ๆ แอปพลิเคชั่นที่ซับซ้อนตัวใดตัวหนึ่งที่พัฒนาขึ้นมาเขาควรใช้เซอร์วิสเลเยอร์และไม่เพียงแค่สร้างเลเยอร์ DAL, BL, UI?
BornToCode

ในกรณีที่มี UIs หลายตัวเราจะต้องรวมชั้นบริการ ในกรณีของคุณฉันไม่คิดว่าจำเป็นต้องเตรียมเลเยอร์ใหม่ เพิ่มความซับซ้อนของแอปพลิเคชันเท่านั้น
Satish Pandey

0

ฉันจะประกวดว่า BL ของคุณเป็นเลเยอร์บริการของคุณ ศูนย์กลางที่ตรรกะทางธุรกิจของคุณตั้งอยู่ นี่ควรเป็น DLL ที่สามารถใช้ได้กับทุกสิ่งที่ต้องการตรรกะนั้น จากนั้นคุณสามารถวางเลเยอร์เว็บ API ไว้ด้านบนหากแอปของคุณมี UI ที่แตกต่างกัน

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