อะไรคือความแตกต่างระหว่าง“ เลเยอร์” และ“ เทียร์”?


215

"เลเยอร์" กับ "Tiers" ต่างกันอย่างไร


4
เกือบทุกคนที่ฉันเคยพบในโลกซอฟต์แวร์ใช้สองคำนี้แทนกันได้ราวกับว่าพวกเขาเหมือนกันทุกประการ
RBT

คำตอบ:


260

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

ระดับชั้นกายภาพเป็นเพียงเกี่ยวกับรหัสที่ทำงาน โดยเฉพาะเทียร์คือสถานที่ที่มีการปรับใช้เลเยอร์และที่ที่เลเยอร์ทำงาน อีกนัยหนึ่งเทียร์คือการปรับใช้เลเยอร์ทางกายภาพ

ที่มา: Rockford Lhotka, แอพทั้งหมดควรเป็นระดับ n หรือไม่?


43

อ่านโพสต์ของ Scott Hanselman เกี่ยวกับปัญหา: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerAr ArchitectureDesignBroughtToYouByMyLateNightFrrief.aspx

โปรดจำไว้ว่าใน "Scott World" (ซึ่งหวังว่าโลกของคุณจะเป็นเช่นนั้น :)) "Tier" เป็นหน่วยการปรับใช้ในขณะที่ "Layer" เป็นการแยกความรับผิดชอบแบบลอจิคัลภายในโค้ด คุณอาจบอกว่าคุณมีระบบ "3 ระดับ" แต่ใช้งานบนแล็ปท็อปเครื่องเดียว คุณอาจบอกว่าคุณมีระบบ "3 เลเยอร์" แต่มีเพจ ASP.NET ที่พูดคุยกับฐานข้อมูลเท่านั้น มีพลังในความแม่นยำเพื่อน


36

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

1) เลเยอร์การนำเสนอหรือเลเยอร์ UI 2) เลเยอร์ธุรกิจหรือชั้นตรรกะทางธุรกิจ 3) เลเยอร์การเข้าถึงข้อมูลหรือเลเยอร์ข้อมูล

aboove สามชั้นอยู่ในโครงการของตนเองอาจเป็น 3 โครงการหรือมากกว่านั้น เมื่อเรารวบรวมโครงการเราจะได้รับเลเยอร์ DLL ที่เกี่ยวข้อง ตอนนี้เรามี DLL 3 ตัวแล้ว

ขึ้นอยู่กับว่าเราปรับใช้แอปพลิเคชันของเราอย่างไรเราอาจมี 1 ถึง 3 ระดับ เนื่องจากตอนนี้เรามี DLL 3 ตัวหากเราปรับใช้ DLL ทั้งหมดในเครื่องเดียวกันดังนั้นเราจึงมีเพียงฟิสิคัลเทียร์ 1 แต่ 3 เลเยอร์ตรรกะ

ถ้าเราเลือกที่จะปรับใช้ DLL แต่ละเครื่องบนเครื่องที่แยกต่างหากเรามี 3 ชั้นและ 3 ชั้น

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


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

@MazharKhan คุณอาจต้องการใช้บริการเพื่อแสดงฟังก์ชันการทำงานของชั้นธุรกิจไปยังชั้นการนำเสนอ
Amit Saxena

32

ทำไมต้องพยายามใช้คำที่ซับซ้อนอยู่เสมอ

ชั้น = ส่วนหนึ่งของรหัสของคุณถ้าใบสมัครของคุณเค้กนี้เป็นชิ้น

ชั้น = เครื่องกายภาพเซิร์ฟเวอร์

ระดับโฮสต์หนึ่งหรือมากกว่าหนึ่งชั้น


ตัวอย่างของเลเยอร์:

  • เลเยอร์การนำเสนอ = มักจะเป็นรหัสทั้งหมดที่เกี่ยวข้องกับส่วนต่อประสานผู้ใช้
  • Data Access layer = รหัสทั้งหมดที่เกี่ยวข้องกับการเข้าถึงฐานข้อมูลของคุณ

ชั้น:

รหัสของคุณโฮสต์บนเซิร์ฟเวอร์ = รหัสของคุณโฮสต์อยู่ในระดับหนึ่ง

รหัสของคุณโฮสต์บน 2 เซิร์ฟเวอร์ = รหัสของคุณโฮสต์บน 2 ระดับ

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


มีประโยชน์มากมายในการใช้สถาปัตยกรรมแบบเลเยอร์ นี่เป็นเรื่องยุ่งยากและการใช้งานแอปพลิเคชันแบบเลเยอร์ใช้เวลาอย่างเหมาะสม หากคุณมีบางอย่างดูที่โพสต์นี้จาก Microsoft: http://msdn.microsoft.com/en-gb/library/ee658109.aspx


13

ฉันได้พบคำจำกัดความที่บอกว่าเลเยอร์เป็นการแยกเชิงตรรกะและระดับเป็นการแยกทางกายภาพ


10
  1. ในภาษาอังกฤษแบบธรรมดาTierหมายถึง "แต่ละชุดเรียงเป็นแถวหรือระดับของโครงสร้างหนึ่งวางเหนืออีก" ในขณะที่Layerหมายถึง "แผ่นจำนวนหรือความหนาของวัสดุโดยทั่วไปหนึ่งในหลาย ๆ ครอบคลุมพื้นผิวหรือร่างกาย "

  2. Tier คือหน่วยทางกายภาพที่โค้ด / กระบวนการทำงาน เช่นไคลเอ็นต์แอปพลิเคชันเซิร์ฟเวอร์ฐานข้อมูลเซิร์ฟเวอร์

    Layer เป็นหน่วยทางลอจิคัลวิธีจัดระเบียบรหัส เช่นการนำเสนอ (มุมมอง) ตัวควบคุมรุ่นที่เก็บข้อมูลการเข้าถึง

  3. Tiers แสดงถึงการแยกทางกายภาพของงานนำเสนอธุรกิจบริการและฟังก์ชันข้อมูลของการออกแบบของคุณผ่านคอมพิวเตอร์และระบบที่แยกต่างหาก

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

รูปแบบสองระดับแสดงถึงไคลเอ็นต์และเซิร์ฟเวอร์

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

เลเยอร์กับเทียร์

ข้อดีของเลเยอร์และเทียร์:

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

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

แอปพลิเคชัน 1 ชั้นอาจเป็นแอปพลิเคชัน 3 ชั้น


6

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

  1. เลเยอร์การนำเสนอ
  2. ชั้นตรรกะทางธุรกิจ
  3. ชั้นการเข้าถึงข้อมูล

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

==> การรักษาความปลอดภัย

==> การบริหารจัดการ

==> ความยืดหยุ่น

ความต้องการอื่น ๆ เช่นหลังจากการพัฒนาแอพพลิเคชั่นเราจำเป็นต้องเปลี่ยน dbms หรือแก้ไขตรรกะทางธุรกิจเป็นต้นจากนั้นจำเป็นสำหรับทุกคน

ถาม * ทำไมเราถึงใช้สถาปัตยกรรมแบบเทียร์

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

ตัวอย่างง่ายๆ

เช่นเดียวกับธนาคารที่เปิดในห้องซึ่งพนักงานจัดหมวดหมู่:

  1. ผู้รักษาประตู
  2. คนเป็นเงินสด
  3. บุคคลที่มีหน้าที่รับผิดชอบในการแนะนำรูปแบบการธนาคาร
  4. ผู้จัดการ

พวกเขาทั้งหมดเป็นองค์ประกอบที่เกี่ยวข้องของระบบ

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

เทียร์ล่ะ สาขาของธนาคารที่เปิดในเมืองหลังจากนั้นในเมืองอื่นหลังจากนั้นในอีกเมือง แต่สิ่งที่เป็นความต้องการขั้นพื้นฐานของแต่ละสาขา

  1. ผู้รักษาประตู
  2. คนเป็นเงินสด
  3. บุคคลที่มีหน้าที่รับผิดชอบในการแนะนำรูปแบบการธนาคาร
  4. ผู้จัดการ

แนวคิดเดียวกันทั้งหมดของเลเยอร์และเทียร์


คำอธิบายที่ดีที่รัก
Dulaj Kulathunga

6

เลเยอร์ เป็นการแยกเชิงตรรกะของrelated-functionality[code] ภายในแอปพลิเคชันการสื่อสารระหว่างเลเยอร์นั้นชัดเจนและมีการรวมตัวกันอย่างหลวม ๆ [ตรรกะการนำเสนอตรรกะแอปพลิเคชันตรรกะการเข้าถึงข้อมูล]

Tiers เป็นการแยกทางกายภาพของlayers[ซึ่งโฮสต์บนเซิร์ฟเวอร์ส่วนบุคคล] ในคอมพิวเตอร์แต่ละเครื่อง (กระบวนการ)

ป้อนคำอธิบายรูปภาพที่นี่

ดังแสดงในแผนภาพ:

1-Tier & 3-Layers « App Logic  with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer  « Browser View[php], App Logic[jsp], DataStorage

การละลายของเงินกองทุนชั้นที่ข้อดี:
ดีกว่าการรักษาความปลอดภัย
Scalability : ในฐานะองค์กรของคุณเติบโตขึ้นคุณสามารถไต่ขึ้น DB-Tier ของคุณกับ DB-Clustering ที่มีออกมาชั้นอื่น ๆ ที่สัมผัส
การบำรุงรักษา : นักออกแบบเว็บไซต์สามารถเปลี่ยนรหัสมุมมองโดยไม่ต้องสัมผัสเลเยอร์อื่น ๆ ในชั้นอื่น ๆ อัปเกรดหรือปรับปรุงได้
อย่างง่ายดาย[ตัวอย่าง: คุณสามารถเพิ่มรหัสแอปพลิเคชันเพิ่มเติมอัปเกรดพื้นที่เก็บข้อมูลหรือแม้แต่เพิ่มเลเยอร์การนำเสนอหลายรายการสำหรับ devises แยกต่างหากเช่นมือถือแท็บเล็ตพีซี]


6

ฉันชอบคำอธิบายด้านล่างจากMicrosoft Application Architecture Guide 2

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


5

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


1

ในทางเทคนิคแล้วเทียร์อาจเป็นสภาพแวดล้อมขั้นต่ำที่จำเป็นสำหรับการเรียกใช้โค้ด

เช่นสมมุติว่าแอป 3 ชั้นสามารถใช้งานได้

  1. 3 เครื่องที่ไม่มีระบบปฏิบัติการ
  2. เครื่องจริง 1 เครื่องพร้อม 3 เครื่องเสมือนไม่มีระบบปฏิบัติการ

    (นั่นคือแอประดับ 3 (ฮาร์ดแวร์))

  3. เครื่องจริง 1 เครื่องพร้อม 3 เครื่องเสมือน 3 ระบบที่แตกต่างกัน / เดียวกัน

    (นั่นเป็นแอประดับ 3 (OS))

  4. 1 เครื่องจริงพร้อม 1 เครื่องเสมือนพร้อม 1 OS แต่ 3 AppServers

    (นั่นคือแอประดับ 3 (AppServer))

  5. เครื่องที่มีอยู่จริง 1 เครื่องพร้อมเครื่องเสมือน 1 เครื่องที่มี 1 OS พร้อม 1 AppServer แต่ 3 DBMS

    (นั่นคือแอประดับ 3 (DBMS))

  6. เครื่องทางกายภาพ 1 เครื่องพร้อมเครื่องเสมือน 1 เครื่องพร้อมระบบปฏิบัติการ 1 เครื่องพร้อม AppServers 1 เครื่องและ DBMS 1 เครื่อง แต่สมุดงาน Excel 3 เล่ม

    (นั่นคือแอประดับ 3 (AppServer))

สมุดงาน Excel เป็นสภาพแวดล้อมขั้นต่ำที่จำเป็นสำหรับการเรียกใช้รหัส VBA

สมุดงานทั้งสามเล่มเหล่านี้สามารถนั่งบนคอมพิวเตอร์ที่มีอยู่จริงหรือหลายเครื่อง

ฉันสังเกตเห็นว่าในทางปฏิบัติแล้วผู้คนหมายถึง "OS Tier" เมื่อพวกเขาพูดว่า "Tier" ในบริบทคำอธิบายแอป

นั่นคือหากแอปทำงานบนระบบปฏิบัติการ 3 ระบบแยกกันดังนั้นจึงเป็นแอพ 3 ชั้น

ดังนั้นวิธีที่ถูกต้องอวดรู้อธิบายแอพจะเป็น

"ความสามารถ 1 ต่อ 3 ระดับทำงานบนแอป 2 ชั้น"

:)


เลเยอร์เป็นเพียงรหัสประเภทที่เกี่ยวข้องกับการแยกหน้าที่การทำงานภายในแอพ (เช่นการนำเสนอข้อมูลการรักษาความปลอดภัย ฯลฯ )


0

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


0

เมื่อคุณพูดถึงการนำเสนอบริการข้อมูลเลเยอร์เครือข่ายคุณกำลังพูดถึงเลเยอร์ เมื่อคุณ "ปรับใช้แยกต่างหาก" คุณพูดถึงระดับชั้น

Tiers คือทั้งหมดที่เกี่ยวกับการปรับใช้ ใช้วิธีนี้: เรามีแอปพลิเคชันที่มีส่วนหน้าสร้างขึ้นใน Angular มีส่วนหลังเป็น MongoDB และชั้นกลางซึ่งโต้ตอบระหว่างส่วนหน้าและส่วนหลัง ดังนั้นเมื่อแอปพลิเคชันส่วนหน้าแอปพลิเคชันฐานข้อมูลและเลเยอร์กลางทั้งหมดถูกปรับใช้แยกกันเราพูดว่าเป็นแอปพลิเคชัน 3 ชั้น

ประโยชน์ที่ได้รับ: หากเราต้องการขยายส่วนแบ็กเอนด์ของเราในอนาคตเราจะต้องขยายส่วนแบ็คเอนด์อย่างอิสระและไม่จำเป็นต้องขยายส่วนแบ็คเอนด์

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