"เลเยอร์" กับ "Tiers" ต่างกันอย่างไร
"เลเยอร์" กับ "Tiers" ต่างกันอย่างไร
คำตอบ:
เลเยอร์เชิงตรรกะเป็นเพียงวิธีการจัดระเบียบโค้ดของคุณ เลเยอร์ทั่วไปรวมถึงการนำเสนอธุรกิจและข้อมูล - เหมือนกับโมเดล 3 ระดับทั่วไป แต่เมื่อเราพูดถึงเลเยอร์เรากำลังพูดถึงการจัดระเบียบตรรกะของรหัสเท่านั้น มันไม่ได้หมายความว่าเลเยอร์เหล่านี้อาจทำงานบนคอมพิวเตอร์เครื่องอื่นหรือในกระบวนการที่แตกต่างกันในคอมพิวเตอร์เครื่องเดียวหรือแม้แต่ในกระบวนการเดียวในคอมพิวเตอร์เครื่องเดียว สิ่งที่เรากำลังทำคือการพูดคุยถึงวิธีการจัดระเบียบรหัสเป็นชุดของเลเยอร์ที่กำหนดโดยฟังก์ชั่นเฉพาะ
ระดับชั้นกายภาพเป็นเพียงเกี่ยวกับรหัสที่ทำงาน โดยเฉพาะเทียร์คือสถานที่ที่มีการปรับใช้เลเยอร์และที่ที่เลเยอร์ทำงาน อีกนัยหนึ่งเทียร์คือการปรับใช้เลเยอร์ทางกายภาพ
ที่มา: Rockford Lhotka, แอพทั้งหมดควรเป็นระดับ n หรือไม่?
อ่านโพสต์ของ Scott Hanselman เกี่ยวกับปัญหา: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerAr ArchitectureDesignBroughtToYouByMyLateNightFrrief.aspx
โปรดจำไว้ว่าใน "Scott World" (ซึ่งหวังว่าโลกของคุณจะเป็นเช่นนั้น :)) "Tier" เป็นหน่วยการปรับใช้ในขณะที่ "Layer" เป็นการแยกความรับผิดชอบแบบลอจิคัลภายในโค้ด คุณอาจบอกว่าคุณมีระบบ "3 ระดับ" แต่ใช้งานบนแล็ปท็อปเครื่องเดียว คุณอาจบอกว่าคุณมีระบบ "3 เลเยอร์" แต่มีเพจ ASP.NET ที่พูดคุยกับฐานข้อมูลเท่านั้น มีพลังในความแม่นยำเพื่อน
เลเยอร์อ้างถึงการแยกรหัสแบบลอจิคัล เลเยอร์เชิงตรรกะช่วยให้คุณสามารถจัดระเบียบโค้ดของคุณได้ดีขึ้น ตัวอย่างเช่นแอปพลิเคชันสามารถมีเลเยอร์ต่อไปนี้
1) เลเยอร์การนำเสนอหรือเลเยอร์ UI 2) เลเยอร์ธุรกิจหรือชั้นตรรกะทางธุรกิจ 3) เลเยอร์การเข้าถึงข้อมูลหรือเลเยอร์ข้อมูล
aboove สามชั้นอยู่ในโครงการของตนเองอาจเป็น 3 โครงการหรือมากกว่านั้น เมื่อเรารวบรวมโครงการเราจะได้รับเลเยอร์ DLL ที่เกี่ยวข้อง ตอนนี้เรามี DLL 3 ตัวแล้ว
ขึ้นอยู่กับว่าเราปรับใช้แอปพลิเคชันของเราอย่างไรเราอาจมี 1 ถึง 3 ระดับ เนื่องจากตอนนี้เรามี DLL 3 ตัวหากเราปรับใช้ DLL ทั้งหมดในเครื่องเดียวกันดังนั้นเราจึงมีเพียงฟิสิคัลเทียร์ 1 แต่ 3 เลเยอร์ตรรกะ
ถ้าเราเลือกที่จะปรับใช้ DLL แต่ละเครื่องบนเครื่องที่แยกต่างหากเรามี 3 ชั้นและ 3 ชั้น
ดังนั้นเลเยอร์คือการแยกเชิงตรรกะและเทียร์เป็นการแยกทางกายภาพ เราสามารถพูดได้ว่าชั้นคือการปรับใช้เลเยอร์ทางกายภาพ
ทำไมต้องพยายามใช้คำที่ซับซ้อนอยู่เสมอ
ชั้น = ส่วนหนึ่งของรหัสของคุณถ้าใบสมัครของคุณเค้กนี้เป็นชิ้น
ชั้น = เครื่องกายภาพเซิร์ฟเวอร์
ระดับโฮสต์หนึ่งหรือมากกว่าหนึ่งชั้น
ตัวอย่างของเลเยอร์:
ชั้น:
รหัสของคุณโฮสต์บนเซิร์ฟเวอร์ = รหัสของคุณโฮสต์อยู่ในระดับหนึ่ง
รหัสของคุณโฮสต์บน 2 เซิร์ฟเวอร์ = รหัสของคุณโฮสต์บน 2 ระดับ
ตัวอย่างเช่นเครื่องหนึ่งโฮสต์เว็บไซต์เอง (เลเยอร์การนำเสนอ) เครื่องอื่นที่ปลอดภัยยิ่งขึ้นการโฮสต์ทั้งหมดรหัสความปลอดภัยที่สำคัญมากขึ้น (รหัสธุรกิจจริง - ชั้นธุรกิจชั้นการเข้าถึงฐานข้อมูล ฯลฯ )
มีประโยชน์มากมายในการใช้สถาปัตยกรรมแบบเลเยอร์ นี่เป็นเรื่องยุ่งยากและการใช้งานแอปพลิเคชันแบบเลเยอร์ใช้เวลาอย่างเหมาะสม หากคุณมีบางอย่างดูที่โพสต์นี้จาก Microsoft: http://msdn.microsoft.com/en-gb/library/ee658109.aspx
ฉันได้พบคำจำกัดความที่บอกว่าเลเยอร์เป็นการแยกเชิงตรรกะและระดับเป็นการแยกทางกายภาพ
ในภาษาอังกฤษแบบธรรมดาTier
หมายถึง "แต่ละชุดเรียงเป็นแถวหรือระดับของโครงสร้างหนึ่งวางเหนืออีก" ในขณะที่Layer
หมายถึง "แผ่นจำนวนหรือความหนาของวัสดุโดยทั่วไปหนึ่งในหลาย ๆ ครอบคลุมพื้นผิวหรือร่างกาย "
Tier คือหน่วยทางกายภาพที่โค้ด / กระบวนการทำงาน เช่นไคลเอ็นต์แอปพลิเคชันเซิร์ฟเวอร์ฐานข้อมูลเซิร์ฟเวอร์
Layer เป็นหน่วยทางลอจิคัลวิธีจัดระเบียบรหัส เช่นการนำเสนอ (มุมมอง) ตัวควบคุมรุ่นที่เก็บข้อมูลการเข้าถึง
Tiers แสดงถึงการแยกทางกายภาพของงานนำเสนอธุรกิจบริการและฟังก์ชันข้อมูลของการออกแบบของคุณผ่านคอมพิวเตอร์และระบบที่แยกต่างหาก
เลเยอร์คือการจัดกลุ่มแบบลอจิคัลของส่วนประกอบซอฟต์แวร์ที่ประกอบเป็นแอปพลิเคชันหรือบริการ ช่วยแยกความแตกต่างระหว่างงานประเภทต่าง ๆ ที่ดำเนินการโดยส่วนประกอบทำให้ง่ายต่อการสร้างการออกแบบที่รองรับการใช้งานส่วนประกอบได้ แต่ละชั้นตรรกะประกอบด้วยจำนวนขององค์ประกอบที่ไม่ต่อเนื่องแบ่งออกเป็นกลุ่มย่อยและแต่ละชั้นย่อยดำเนินงานประเภทที่เฉพาะเจาะจง
รูปแบบสองระดับแสดงถึงไคลเอ็นต์และเซิร์ฟเวอร์
ในสถานการณ์สมมตินี้ไคลเอนต์และเซิร์ฟเวอร์อาจมีอยู่บนเครื่องเดียวกันหรืออาจอยู่ในเครื่องที่แตกต่างกันสองเครื่อง รูปด้านล่างแสดงสถานการณ์สมมติทั่วไปของเว็บแอปพลิเคชันที่ไคลเอ็นต์โต้ตอบกับเว็บเซิร์ฟเวอร์ที่อยู่ในระดับลูกค้า เทียร์นี้มีตรรกะเลเยอร์การนำเสนอและตรรกะเลเยอร์ธุรกิจที่จำเป็น เว็บแอปพลิเคชั่นสื่อสารกับเครื่องแยกต่างหากที่เป็นโฮสต์ระดับฐานข้อมูลซึ่งมีตรรกะชั้นข้อมูล
ข้อดีของเลเยอร์และเทียร์:
เลเยอร์ช่วยให้คุณเพิ่มความสามารถในการบำรุงรักษาของรหัสให้สูงสุดเพิ่มประสิทธิภาพวิธีการทำงานของแอปพลิเคชั่นเมื่อนำไปใช้ในรูปแบบที่แตกต่างกัน
การวางเลเยอร์ของคุณบนชั้นทางกายภาพแยกต่างหากสามารถช่วยเพิ่มประสิทธิภาพโดยการกระจายโหลดข้ามเซิร์ฟเวอร์หลายเครื่อง นอกจากนี้ยังสามารถช่วยรักษาความปลอดภัยโดยการแยกส่วนประกอบและเลเยอร์ที่ละเอียดอ่อนมากขึ้นไปยังเครือข่ายที่แตกต่างกันหรือบนอินเทอร์เน็ตกับอินทราเน็ต
แอปพลิเคชัน 1 ชั้นอาจเป็นแอปพลิเคชัน 3 ชั้น
ใช่เพื่อนรักของฉันพูดถูกต้อง Layer เป็นโลจิคัลพาร์ติชันของแอปพลิเคชันในขณะที่ Tier คือฟิสิคัลพาร์ติชันของพาร์ติชันระบบขึ้นอยู่กับชั้นของพาร์ติชัน เช่นเดียวกับแอปพลิเคชันที่ทำงานบนเครื่องเดียว แต่มันเป็นไปตามสถาปัตยกรรม 3 ชั้นดังนั้นเราจึงสามารถพูดได้ว่าสถาปัตยกรรมชั้นนั้นอาจมีอยู่ในสถาปัตยกรรมชั้น ในสถาปัตยกรรมแบบ 3 ชั้นแบบเทอมที่เรียบง่ายสามารถนำไปใช้ในเครื่องเดียวแล้วเราสามารถพูดได้ว่ามันคือสถาปัตยกรรมแบบชั้นเดียว ถ้าเราใช้แต่ละเลเยอร์บนเครื่องที่แยกต่างหากดังนั้นมันเรียกว่าสถาปัตยกรรม 3 ชั้น เลเยอร์อาจสามารถเรียกใช้หลายระดับได้ ในเลเยอร์สถาปัตยกรรมที่เกี่ยวข้องกับองค์ประกอบในการสื่อสารซึ่งกันและกันได้ง่าย
เช่นเดียวกับที่เราทำตามสถาปัตยกรรมด้านล่าง
ลูกค้าสามารถโต้ตอบกับ "เลเยอร์การนำเสนอ" แต่เข้าถึงองค์ประกอบสาธารณะของเลเยอร์ด้านล่างของ (เช่นคอมโพเนนต์สาธารณะของเลเยอร์ตรรกะทางธุรกิจ) กับ "เลเยอร์ตรรกะทางธุรกิจ" เนื่องจากเหตุผลด้านความปลอดภัย
ถาม * ทำไมเราถึงใช้สถาปัตยกรรมเลเยอร์ เพราะถ้าเราใช้สถาปัตยกรรมเลเยอร์แล้วเราจะเพิ่มประสิทธิภาพการใช้งานของเราเช่น
==> การรักษาความปลอดภัย
==> การบริหารจัดการ
==> ความยืดหยุ่น
ความต้องการอื่น ๆ เช่นหลังจากการพัฒนาแอพพลิเคชั่นเราจำเป็นต้องเปลี่ยน dbms หรือแก้ไขตรรกะทางธุรกิจเป็นต้นจากนั้นจำเป็นสำหรับทุกคน
ถาม * ทำไมเราถึงใช้สถาปัตยกรรมแบบเทียร์
เพราะการใช้งานทางกายภาพของแต่ละชั้นให้ประสิทธิภาพที่ดีขึ้นโดยไม่มีสถาปัตยกรรมชั้นเราไม่สามารถใช้สถาปัตยกรรมชั้น เครื่องที่แยกต่างหากเพื่อใช้งานระดับที่แยกต่างหากและระดับที่แยกต่างหากนั้นใช้งานหนึ่งเลเยอร์หรือมากกว่านั้นซึ่งเป็นเหตุผลที่เราใช้งาน
มันใช้เพื่อวัตถุประสงค์ในการยอมรับความผิด ==> บำรุงรักษาง่าย
ตัวอย่างง่ายๆ
เช่นเดียวกับธนาคารที่เปิดในห้องซึ่งพนักงานจัดหมวดหมู่:
พวกเขาทั้งหมดเป็นองค์ประกอบที่เกี่ยวข้องของระบบ
ถ้าเราไปธนาคารเพื่อวัตถุประสงค์ในการกู้อันดับแรกผู้รักษาประตูเปิดประตูด้วยรอยยิ้มหลังจากนั้นเราไปใกล้คนที่แนะนำให้รู้จักกับแผนการกู้ยืมทั้งหมดหลังจากนั้นเราไปที่ห้องผู้จัดการและผ่านการกู้ หลังจากนั้นในที่สุดเราก็ไปที่เคาน์เตอร์แคชเชียร์ นี่คือสถาปัตยกรรมเลเยอร์ของธนาคาร
เทียร์ล่ะ สาขาของธนาคารที่เปิดในเมืองหลังจากนั้นในเมืองอื่นหลังจากนั้นในอีกเมือง แต่สิ่งที่เป็นความต้องการขั้นพื้นฐานของแต่ละสาขา
แนวคิดเดียวกันทั้งหมดของเลเยอร์และเทียร์
เลเยอร์ เป็นการแยกเชิงตรรกะของ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 แยกต่างหากเช่นมือถือแท็บเล็ตพีซี]
ฉันชอบคำอธิบายด้านล่างจากMicrosoft Application Architecture Guide 2
เลเยอร์อธิบายการจัดกลุ่มแบบลอจิคัลของฟังก์ชันและส่วนประกอบในแอปพลิเคชัน ในขณะที่ระดับอธิบายการกระจายทางกายภาพของฟังก์ชันและส่วนประกอบบนเซิร์ฟเวอร์คอมพิวเตอร์เครือข่ายหรือสถานที่ห่างไกล แม้ว่าทั้งเลเยอร์และชั้นจะใช้ชื่อชุดเดียวกัน (งานนำเสนอธุรกิจบริการและข้อมูล) โปรดจำไว้ว่าเพียงชั้นเท่านั้นที่แสดงถึงการแยกทางกายภาพ
ฉันใช้เลเยอร์เพื่ออธิบายสแต็คสถาปนิกหรือเทคโนโลยีภายในส่วนประกอบของโซลูชันของฉัน ฉันใช้เทียร์เพื่อจัดกลุ่มส่วนประกอบเหล่านั้นตามปกติเมื่อมีการสื่อสารเครือข่ายหรือระหว่างกระบวนการ
ในทางเทคนิคแล้วเทียร์อาจเป็นสภาพแวดล้อมขั้นต่ำที่จำเป็นสำหรับการเรียกใช้โค้ด
เช่นสมมุติว่าแอป 3 ชั้นสามารถใช้งานได้
เครื่องจริง 1 เครื่องพร้อม 3 เครื่องเสมือนไม่มีระบบปฏิบัติการ
(นั่นคือแอประดับ 3 (ฮาร์ดแวร์))
เครื่องจริง 1 เครื่องพร้อม 3 เครื่องเสมือน 3 ระบบที่แตกต่างกัน / เดียวกัน
(นั่นเป็นแอประดับ 3 (OS))
1 เครื่องจริงพร้อม 1 เครื่องเสมือนพร้อม 1 OS แต่ 3 AppServers
(นั่นคือแอประดับ 3 (AppServer))
เครื่องที่มีอยู่จริง 1 เครื่องพร้อมเครื่องเสมือน 1 เครื่องที่มี 1 OS พร้อม 1 AppServer แต่ 3 DBMS
(นั่นคือแอประดับ 3 (DBMS))
เครื่องทางกายภาพ 1 เครื่องพร้อมเครื่องเสมือน 1 เครื่องพร้อมระบบปฏิบัติการ 1 เครื่องพร้อม AppServers 1 เครื่องและ DBMS 1 เครื่อง แต่สมุดงาน Excel 3 เล่ม
(นั่นคือแอประดับ 3 (AppServer))
สมุดงาน Excel เป็นสภาพแวดล้อมขั้นต่ำที่จำเป็นสำหรับการเรียกใช้รหัส VBA
สมุดงานทั้งสามเล่มเหล่านี้สามารถนั่งบนคอมพิวเตอร์ที่มีอยู่จริงหรือหลายเครื่อง
ฉันสังเกตเห็นว่าในทางปฏิบัติแล้วผู้คนหมายถึง "OS Tier" เมื่อพวกเขาพูดว่า "Tier" ในบริบทคำอธิบายแอป
นั่นคือหากแอปทำงานบนระบบปฏิบัติการ 3 ระบบแยกกันดังนั้นจึงเป็นแอพ 3 ชั้น
ดังนั้นวิธีที่ถูกต้องอวดรู้อธิบายแอพจะเป็น
"ความสามารถ 1 ต่อ 3 ระดับทำงานบนแอป 2 ชั้น"
:)
เลเยอร์เป็นเพียงรหัสประเภทที่เกี่ยวข้องกับการแยกหน้าที่การทำงานภายในแอพ (เช่นการนำเสนอข้อมูลการรักษาความปลอดภัย ฯลฯ )
เลเยอร์เป็นเอนทิตี้ของแนวคิดและใช้เพื่อแยกฟังก์ชันการทำงานของระบบซอฟต์แวร์ออกจากมุมมองแบบลอจิคัล เมื่อคุณใช้ระบบที่คุณจัดระเบียบเลเยอร์เหล่านี้โดยใช้วิธีการต่าง ๆ ; ในเงื่อนไขนี้เราอ้างถึงพวกมันไม่ใช่ชั้น แต่เป็นชั้น
เมื่อคุณพูดถึงการนำเสนอบริการข้อมูลเลเยอร์เครือข่ายคุณกำลังพูดถึงเลเยอร์ เมื่อคุณ "ปรับใช้แยกต่างหาก" คุณพูดถึงระดับชั้น
Tiers คือทั้งหมดที่เกี่ยวกับการปรับใช้ ใช้วิธีนี้: เรามีแอปพลิเคชันที่มีส่วนหน้าสร้างขึ้นใน Angular มีส่วนหลังเป็น MongoDB และชั้นกลางซึ่งโต้ตอบระหว่างส่วนหน้าและส่วนหลัง ดังนั้นเมื่อแอปพลิเคชันส่วนหน้าแอปพลิเคชันฐานข้อมูลและเลเยอร์กลางทั้งหมดถูกปรับใช้แยกกันเราพูดว่าเป็นแอปพลิเคชัน 3 ชั้น
ประโยชน์ที่ได้รับ: หากเราต้องการขยายส่วนแบ็กเอนด์ของเราในอนาคตเราจะต้องขยายส่วนแบ็คเอนด์อย่างอิสระและไม่จำเป็นต้องขยายส่วนแบ็คเอนด์