สถาปัตยกรรม N-Tier คืออะไร?


193

ฉันเห็นการโพสต์งานนักพัฒนาค่อนข้างน้อยเมื่อเร็ว ๆ นี้ที่มีประโยคที่อ่านมากหรือน้อยเช่นนี้: "ต้องมีประสบการณ์กับสถาปัตยกรรม N-Tier" หรือ "ต้องสามารถพัฒนาแอป N-Tier"

สิ่งนี้ทำให้ฉันถามสถาปัตยกรรม N-Tier คืออะไร? เราจะได้รับประสบการณ์กับมันได้อย่างไร?


2
ที่น่าสนใจว่าโพสต์อื่น ๆ นี้ยังถามว่าสถาปัตยกรรม N-Tier คืออะไร แต่คำตอบนั้นต่างออกไป stackoverflow.com/questions/7271165/… . ดูเหมือนว่ามีสถาปัตยกรรม N-Tier สำหรับซอฟต์แวร์และสถาปัตยกรรม N-Tier สำหรับฮาร์ดแวร์
Noremac

คำตอบ:


247

Wikipedia :

ในวิศวกรรมซอฟต์แวร์สถาปัตยกรรมหลายชั้น (มักเรียกว่าสถาปัตยกรรมระดับ n) เป็นสถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์ซึ่งมีการนำเสนอการประมวลผลแอปพลิเคชันและการจัดการข้อมูลเป็นกระบวนการแยกเชิงตรรกะ ตัวอย่างเช่นแอปพลิเคชันที่ใช้มิดเดิลแวร์เพื่อรับบริการข้อมูลระหว่างผู้ใช้และฐานข้อมูลใช้สถาปัตยกรรมแบบหลายชั้น การใช้อย่างแพร่หลายมากที่สุดของ "สถาปัตยกรรมหลายชั้น" หมายถึงสถาปัตยกรรมสามชั้น

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

ข้อความแสดงแทน

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

สำหรับการเขียนโปรแกรม n-tier คุณจำเป็นต้องจัดเก็บข้อมูลในรูปแบบที่สามารถเคลื่อนย้ายได้บางประเภทที่เรียกว่า "ชุดข้อมูล" และบินข้ามสาย คลาสDataSetหรือโปรโตคอล Web Services ของ. NET เช่นSOAPนั้นมีความพยายามน้อยในการเคลื่อนย้ายวัตถุผ่านสาย


6
"3-tiers" และ "N-tiers" มีความแตกต่างหรือไม่?
chakrit

7
มันขึ้นอยู่กับว่าคุณนับว่า "เทียร์" (ตรรกะ, ฟิสิคัลและอื่น ๆ ) แต่คุณสามารถมีกระบวนการมากกว่า 3 ขั้นตอนในการเขียนแอพ UI, แพลตฟอร์ม UI (เช่น Eclipse RCP), บริการเว็บ, BLL, DAL, ฐานข้อมูล, บริการการตรวจสอบสิทธิ์, บริการรายงาน, บริการวิเคราะห์ ...
Eugene Yokota

6
@ จักรกฤษ: ในเวลาของฉัน (ฉันแก่แล้ว) มากกว่านั้นอีก 2 ชั้น (ไคลเอนต์เซิร์ฟเวอร์) ถูกอ้างถึงโดยอัตโนมัติในระดับ n
Eduardo Molteni

@EugeneYokota - มันก็บอกว่าชั้นจะแทนส่วนทางกายภาพในงานสถาปัตยกรรม (ซึ่งอาจจะหรืออาจจะไม่ได้รับการ patitioned เพิ่มเติมเช่นในคลัสเตอร์) และชั้นจะหมายถึงกลุ่มตรรกะของส่วนประกอบของแอพลิเคชัน
Eliran Malka

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

20

ขึ้นอยู่กับว่าคุณแยกเลเยอร์การนำเสนอออกจากตรรกะทางธุรกิจหลักและการเข้าถึงข้อมูล ( Wikipedia ) อย่างไร

  • 3 ชั้นหมายถึงเลเยอร์การนำเสนอ + เลเยอร์คอมโพเนนต์ + เลเยอร์การเข้าถึงข้อมูล
  • N-tier คือเมื่อมีการเพิ่มเลเยอร์เพิ่มเติมนอกเหนือจากเหล่านี้โดยปกติจะใช้สำหรับโมดูริตี้เพิ่มเติมการกำหนดค่าหรือการทำงานร่วมกันกับระบบอื่น

12
จริงถ้าหนึ่งในชั้นผู้เป็นเจ้าภาพโดยบุคคลที่ห่างไกลเช่นการประมวลผลการชำระเงินชั้นที่ไม่อาจจะเป็นอย่างนั้น "ไม่จำเป็น"
แซค

1
อืมมม มีความแตกต่างอย่างมากระหว่าง 'เลเยอร์' และ 'บริการ' โดยปกติแล้ว N-Tier จะใช้เพื่อระบุว่าสำหรับระดับที่กำหนดสิ่งที่เหนือกว่านั้นจะต้องผ่านเพื่อเข้าถึงบริการระดับล่าง หากพวกเขาอยู่ในแนวขนานฉันจะเรียกพวกเขาบริการมากกว่าชั้น
Dak

เมื่อสร้าง MCV ตามปกติ (สถาปัตยกรรม 3 ชั้น) หนึ่งสามารถตัดสินใจที่จะใช้ MCV ด้วยอินเทอร์เฟซสองชั้นซึ่งในความเป็นจริงสามารถแทนที่ชั้นหนึ่งโดยไม่ต้องแก้ไขแม้แต่หนึ่งบรรทัดของรหัส เรามักจะเห็นประโยชน์ของสิ่งนี้เช่นในสถานการณ์ที่คุณต้องการใช้ฐานข้อมูลมากกว่าหนึ่งฐาน (ในกรณีนี้คุณมีอินเทอร์เฟซสองครั้งระหว่างตัวควบคุมและชั้นข้อมูล) เมื่อคุณวางลงใน View-layer (งานนำเสนอ) จากนั้นคุณสามารถ (กดค้างไว้ที่ !!) แทนที่ USER Interface ด้วยเครื่องอื่นดังนั้นจะทำการป้อนข้อมูลอัตโนมัติ (!!!) โดยอัตโนมัติ
David Svarrer

15

เป็น buzzword ที่อ้างถึงสิ่งต่าง ๆ เช่นสถาปัตยกรรมเว็บปกติเช่น Javascript - ASP.Net - Middleware - เลเยอร์ฐานข้อมูล แต่ละสิ่งเหล่านี้คือ "ระดับ"


4

แอ็พพลิเคชันข้อมูล N-tier เป็นแอ็พพลิเคชันข้อมูลที่แบ่งออกเป็นหลายระดับ เรียกอีกอย่างว่า "แอพพลิเคชั่นแบบกระจาย" และ "แอพพลิเคชั่นแบบหลายชั้น" แอพพลิเคชั่น n-tier แยกการประมวลผลออกเป็นชั้นแบบแยกซึ่งกระจายระหว่างไคลเอนต์และเซิร์ฟเวอร์ เมื่อคุณพัฒนาแอปพลิเคชันที่เข้าถึงข้อมูลคุณควรมีการแยกชัดเจนระหว่างระดับต่าง ๆ ที่ประกอบขึ้นเป็นแอปพลิเคชัน

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

ที่นำมาจากไมโครซอฟท์เว็บไซต์


4

ถ้าฉันเข้าใจคำถามดูเหมือนว่าผู้ถามกำลังถามจริง ๆ ว่า "ตกลงดังนั้น 3 ชั้นจึงเป็นที่เข้าใจกันดี แต่ดูเหมือนว่ามีการผสมผสานระหว่าง hype ความสับสนและความไม่แน่นอนเกี่ยวกับสิ่งที่ 4 ระดับหรือ พูดคุยกันทั่วไปสถาปัตยกรรม N-tier หมายถึงดังนั้น ... คำจำกัดความของ N-Tier ที่เข้าใจและยอมรับกันอย่างกว้างขวางคืออะไร "

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

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

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

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

ตอนนี้ไปและอ่านคำอธิบายอื่น ๆ ของตัวอย่างของสถาปัตยกรรม N-tier ด้วยแนวคิดนี้ในใจและคุณจะเริ่มเข้าใจปัญหา มุมมองอื่น ๆ รวมถึงวิธีการที่อิงกับผู้ขาย (เช่น NGINX), ตัวโหลดบาลานซ์ที่รับรู้เนื้อหา, การแยกข้อมูลและบริการด้านความปลอดภัย (เช่น IBM Datapower) ซึ่งทั้งหมดนี้อาจเพิ่มมูลค่าให้กับสถาปัตยกรรมการปรับใช้และกรณีใช้งาน


3

ฉันเข้าใจว่า N-Tier แยกตรรกะทางธุรกิจการเข้าถึงลูกค้าและข้อมูลจากกันโดยใช้เครื่องแยกทางกายภาพ ทฤษฎีคือหนึ่งในนั้นสามารถปรับปรุงเป็นอิสระจากคนอื่น ๆ


3

แอ็พพลิเคชันข้อมูล N-tier เป็นแอ็พพลิเคชันข้อมูลที่แบ่งออกเป็นหลายระดับ เรียกอีกอย่างว่า "แอพพลิเคชั่นแบบกระจาย" และ "แอพพลิเคชั่นแบบหลายชั้น" แอพพลิเคชั่น n-tier แยกการประมวลผลออกเป็นชั้นแบบแยกซึ่งกระจายระหว่างไคลเอนต์และเซิร์ฟเวอร์ เมื่อคุณพัฒนาแอปพลิเคชันที่เข้าถึงข้อมูลคุณควรมีการแยกชัดเจนระหว่างระดับต่าง ๆ ที่ประกอบขึ้นเป็นแอปพลิเคชัน

และอื่น ๆ ในhttp://msdn.microsoft.com/en-us/library/bb384398.aspx


3

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

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

เมื่อคุณวางลงใน View-layer (งานนำเสนอ) คุณสามารถ (กดค้างไว้ที่ !!) แทนที่ USER interface ด้วยเครื่องอื่นดังนั้นจะทำการป้อนข้อมูลจริงโดยอัตโนมัติ (!!!) - และคุณสามารถทดสอบการใช้งานที่น่าเบื่อได้หลายพันรายการ ครั้งโดยผู้ใช้ไม่ต้องแตะแล้วแตะซ้ำแล้วแตะซ้ำสิ่งเดิมซ้ำ ๆ

บางคนอธิบายสถาปัตยกรรม 3 ชั้นที่มีอินเทอร์เฟซ 1 หรือ 2 คู่เป็นสถาปัตยกรรม4 ชั้นหรือ5 ชั้นซึ่งหมายถึงการเชื่อมต่อสองทางโดยนัย

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

ตัวอย่างมือถือ

ดังนั้น multi-tier - หรือ N-tier - มีการตีความไม่กี่อย่างแน่นอนในขณะที่ฉันจะยึดติดกับเทียร์ 3 ชั้น + พิเศษซึ่งประกอบด้วยอินเตอร์เฟซดิสก์บาง ๆ ที่ได้รับการรับรองในระหว่างการเปิดใช้งาน Tier-swaps ดังกล่าวและในแง่ของ การทดสอบ (โดยเฉพาะอย่างยิ่งใช้กับอุปกรณ์พกพา) ตอนนี้คุณสามารถรันการทดสอบผู้ใช้กับซอฟต์แวร์จริงโดยจำลองผู้ใช้แตะในรูปแบบที่ตรรกะการควบคุมไม่สามารถแยกความแตกต่างจากการแตะผู้ใช้จริง นี่เป็นสิ่งสำคัญที่สุดในการจำลองการทดสอบผู้ใช้จริงโดยที่คุณสามารถบันทึกอินพุตทั้งหมดจากผู้ใช้ OTA แล้วใช้อินพุตเดียวกันอีกครั้งเมื่อทำการทดสอบการถดถอย


2

เมื่อเราพูดถึงเทียร์เรามักพูดถึงกระบวนการทางกายภาพ (มีพื้นที่หน่วยความจำที่แตกต่างกัน)

ดังนั้นในกรณีที่เลเยอร์ของแอปพลิเคชันถูกปรับใช้ในกระบวนการที่แตกต่างกันกระบวนการที่แตกต่างกันจะเป็นระดับที่แตกต่างกัน

ตัวอย่างเช่นในแอปพลิเคชัน 3 ระดับชั้นธุรกิจจะพูดคุยกับเมนเฟรม (กระบวนการแยก) และพูดคุยกับบริการรายงาน (กระบวนการแยกต่างหาก) ดังนั้นแอปพลิเคชันนั้นจะเป็น 5 ระดับ

ดังนั้นชื่อสามัญคือ n-tier


2

จากhttps://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier

สถาปัตยกรรม N-ชั้นแบ่งยางแอพลิเคชันลงในยางตรรกะและชั้นกายภาพส่วนใหญ่ของพวกเขาและมีการแบ่งไปยังส่วนย่อย ป้อนคำอธิบายรูปภาพที่นี่

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

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

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

แอปพลิเคชัน N-tier สามารถมีสถาปัตยกรรมแบบเลเยอร์ปิดหรือสถาปัตยกรรมแบบเลเยอร์แบบเปิด:

In a closed layer architecture, a layer can only call the next layer immediately down.
In an open layer architecture, a layer can call any of the layers below it.

สถาปัตยกรรมเลเยอร์ที่ปิด จำกัด การพึ่งพาระหว่างเลเยอร์ อย่างไรก็ตามมันอาจสร้างทราฟฟิกเครือข่ายที่ไม่จำเป็นหากเลเยอร์เพียงแค่ส่งคำขอไปยังเลเยอร์ถัดไป


1

แอปพลิเคชัน N-tier เป็นแอปพลิเคชันที่มีองค์ประกอบมากกว่าสามรายการที่เกี่ยวข้อง ส่วนประกอบเหล่านั้นคืออะไร?

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

แอปพลิเคชั่นโซเชียลทั้งหมดเช่น Instagram, Facebook, บริการอุตสาหกรรมขนาดใหญ่เช่น Uber, Airbnb, เกมผู้เล่นหลายคนออนไลน์ขนาดใหญ่เช่น Pokemon Go, แอปพลิเคชั่นที่มีคุณสมบัติแปลกใหม่คือแอปพลิเคชั่นระดับ n


0

Martin Fowler แสดงให้เห็นอย่างชัดเจน:

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

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

การแบ่งระบบเป็นเลเยอร์มีประโยชน์ที่สำคัญมากมาย

•คุณสามารถเข้าใจเลเยอร์เดียวในภาพรวมที่ต่อเนื่องกันโดยไม่ต้องรู้อะไรมากเกี่ยวกับเลเยอร์อื่น คุณสามารถเข้าใจวิธีการสร้างบริการ FTP บน TCP โดยไม่ทราบรายละเอียดว่าอีเธอร์เน็ตทำงานอย่างไร

•คุณสามารถแทนที่เลเยอร์ด้วยการใช้งานทางเลือกของบริการพื้นฐานเดียวกัน บริการ FTP สามารถทำงานได้โดยไม่ต้องเปลี่ยนผ่านอีเธอร์เน็ต, PPP หรืออะไรก็ตามที่ บริษัท เคเบิลใช้

•คุณลดการพึ่งพาระหว่างเลเยอร์ หาก บริษัท เคเบิลเปลี่ยนระบบส่งสัญญาณจริงเพื่อให้พวกเขาทำงาน IP ได้เราไม่จำเป็นต้องเปลี่ยนบริการ FTP ของเรา

•เลเยอร์ทำให้สถานที่ที่ดีสำหรับการสร้างมาตรฐาน TCP และ IP เป็นมาตรฐานเพราะพวกเขากำหนดวิธีการทำงานของเลเยอร์

•เมื่อคุณมีเลเยอร์ที่สร้างขึ้นแล้วคุณสามารถใช้มันสำหรับบริการระดับสูงกว่ามากมาย ดังนั้น TCP / IP จึงถูกใช้โดย FTP, telnet, SSH และ HTTP มิฉะนั้นโปรโตคอลระดับสูงทั้งหมดเหล่านี้จะต้องเขียนโปรโตคอลระดับล่างของตัวเอง จาก Library of Kyle Geoffrey Passarelli

Layering เป็นเทคนิคสำคัญ แต่มีข้อเสีย

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

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

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