มีหลายปัจจัยที่เข้าสู่การตัดสินใจในการสร้างเลเยอร์บริการ ฉันได้สร้างเลเยอร์บริการในอดีตด้วยเหตุผลดังต่อไปนี้
- รหัสที่ต้องใช้ซ้ำโดยไคลเอนต์หลายราย
- ห้องสมุดบุคคลที่สามที่เรามีใบอนุญาต จำกัด สำหรับ
- บุคคลที่สามที่ต้องการจุดบูรณาการเข้าสู่ระบบของเรา
- การรวมศูนย์ตรรกะทางธุรกิจซ้ำซ้อน
กรณีที่ 1: คุณกำลังสร้างฟังก์ชั่นพื้นฐานที่จำเป็นต้องใช้กับไคลเอนต์ต่าง ๆ มากมาย Service layer สร้างขึ้นเพื่อการใช้งานสำหรับลูกค้าที่แตกต่างกัน
กรณีที่ 2: โดยปกติคุณจะใช้รหัสโฮสต์ในพื้นที่แอป แต่คุณใช้ห้องสมุดบุคคลที่สามที่คุณมีใบอนุญาต จำกัด ในกรณีนี้คุณมีทรัพยากรที่คุณต้องการใช้ทุกที่ แต่มีจำนวน จำกัด เท่านั้น หากคุณโฮสต์บริการหลังบริการทั้งองค์กรของคุณสามารถใช้งานได้จากแอปพลิเคชันของพวกเขาโดยไม่ต้องซื้อใบอนุญาตสำหรับการโฮสต์แต่ละรายการ
กรณีที่ 3: คุณกำลังสร้างฟังก์ชันการทำงานสำหรับบุคคลที่สามเพื่อสื่อสารกับคุณ ในตัวอย่างของคุณคุณสามารถตั้งค่าจุดสิ้นสุดสินค้าคงคลังเพื่ออนุญาตให้ผู้ขายส่งข้อความถึงคุณเกี่ยวกับการจัดส่งผลิตภัณฑ์ขาเข้า
กรณีที่ 4: คุณได้วิเคราะห์รหัสองค์กรของคุณและพบว่าทีมที่แยกต่างหากได้สร้างสิ่งเดียวกัน (เพิ่งนำไปใช้ต่างกันเล็กน้อย) ด้วยเลเยอร์บริการคุณสามารถเลือกวิธีที่ดีที่สุดและตอนนี้คุณสามารถใช้กระบวนการเดียวกันในทุกทีมโดยให้พวกเขาเรียกใช้บริการ ประโยชน์อีกประการหนึ่งของการรวมศูนย์ตรรกะคือเมื่อพบข้อบกพร่อง ตอนนี้คุณสามารถปรับใช้การแก้ไขครั้งเดียวและลูกค้าทุกคนจะได้รับประโยชน์ในเวลาเดียวกัน
ทั้งหมดนี้ถูกกล่าวว่ามีเชิงลบที่อาจเกิดขึ้นกับชั้นบริการ
- เพิ่มความซับซ้อนของระบบ ซึ่งก่อนหน้านี้คุณมีเพียงแอปพลิเคชั่นเดียวที่จะแก้ไขข้อบกพร่องตอนนี้คุณมีสองใบ ปัญหาการผลิตจำเป็นต้องตรวจสอบการตั้งค่าแอพไคลเอนต์การตั้งค่าแอพบริการหรือปัญหาการสื่อสารระหว่างไคลเอ็นต์การตั้งค่าและแอพเซิร์ฟเวอร์อย่างถูกต้อง นี่อาจเป็นเรื่องยุ่งยากหากคุณไม่เคยทำมาก่อน
- จุดหนึ่งของความล้มเหลว หากคุณมีบริการขัดข้องลูกค้าทั้งหมดจะได้รับผลกระทบ เมื่อรหัสไม่ถูกปรับใช้ในลักษณะนี้ความเสี่ยงอาจน้อยลง (แม้ว่าจะมีวิธีการลดขนาดนี้)
- การกำหนดเวอร์ชันอาจทำได้ยากกว่า เมื่อคุณมีแอพหนึ่งตัวที่ใช้บริการที่ปรับใช้การเปลี่ยนแปลงอินเตอร์เฟสสามารถทำได้พร้อมกันระหว่างสองแอพ เมื่อคุณมีลูกค้าหลายรายตอนนี้คุณต้องจัดการว่าใครอยู่บน V1 ใครอยู่บน V2 และประสานงานการลบ V1 (เมื่อคุณรู้ว่าทุกคนอัปเดตเป็น V2)
ประเด็นหลักคือมันไม่ได้เป็นเรื่องง่ายที่จะทำให้การบริการของคุณเป็นระบบ จากประสบการณ์ของฉันมักจะเป็นความคิดที่ดี (ฉันมักจะจัดโครงสร้างแอปพลิเคชันด้วยวิธีนี้) แต่ไม่ใช่การตัดสินใจอัตโนมัติ ในตอนท้ายของวันคุณต้องชั่งน้ำหนักข้อดีและข้อเสียและทำการตัดสินใจที่เหมาะสมกับสถานการณ์ของคุณ