N Tier (หลายชั้น), 3 ชั้น, 2 ชั้น Archiการสอนด้วยตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🏗️ ความหมาย: แอปพลิเคชันแบบ N-Tier คือแอปพลิเคชันที่กระจายอยู่บนคอมพิวเตอร์สามเครื่องขึ้นไปในเครือข่ายแบบกระจาย
  • 🧱 สามชั้นหลัก: ชั้นการนำเสนอ (ส่วนติดต่อผู้ใช้), ตรรกะทางธุรกิจ และฐานข้อมูล แยกส่วนการทำงานออกจากกันอย่างชัดเจน
  • 🔢 รูปแบบระดับชั้นต่างๆ: รูปแบบทั่วไปได้แก่ แบบ 1 ระดับ, 2 ระดับ และ 3 ระดับ โดยแบบ 3 ระดับเป็นรูปแบบที่ใช้กันอย่างแพร่หลายที่สุด
  • 🌐 การใช้งานในโลกแห่งความเป็นจริง: เว็บไซต์ต่างๆ เช่น IRCTC, MakeMyTrip และ Amazon พึ่งพาโครงสร้างสถาปัตยกรรมนี้
  • ประโยชน์ที่สำคัญ: ความสามารถในการขยายขนาด ความสมบูรณ์ของข้อมูล การนำกลับมาใช้ใหม่ ความปลอดภัยที่ได้รับการปรับปรุง และความพร้อมใช้งาน
  • ⚠️ การแลกเปลี่ยน: การเพิ่มเลเยอร์มากขึ้นจะทำให้ความพยายามในการพัฒนาเพิ่มขึ้นและทำให้ระบบโดยรวมซับซ้อนขึ้น

N-เทียร์ Archiเทคเจอร์

N-Tier คืออะไร?

An แอปพลิเคชัน N-Tier โปรแกรมคือโปรแกรมที่กระจายระหว่างคอมพิวเตอร์สามเครื่องขึ้นไปในเครือข่ายแบบกระจาย

รูปแบบ n-tier ที่พบบ่อยที่สุดคือแอปพลิเคชัน 3 ระดับ และแบ่งออกเป็นสามประเภท

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

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

In ระดับ N, “N” หมายถึงจำนวนระดับหรือชั้นที่กำลังใช้งานอยู่ เช่น – 2 ชั้น 3 ชั้นหรือ 4 ชั้นเป็นต้น- มันยังถูกเรียกว่า “หลายชั้น Archiเทคเจอร์"

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

N-เทียร์ Archiเทคเจอร์

การแสดงแผนภาพของระบบ n-tier แสดงให้เห็นที่นี่ – เลเยอร์การนำเสนอ แอปพลิเคชัน และฐานข้อมูล

N-เทียร์ Archiเทคเจอร์
เอ็น เทียร์ Archiแผนภาพเทคเจอร์

สามชั้นเหล่านี้สามารถแบ่งย่อยเพิ่มเติมเป็นชั้นย่อยต่างๆ ได้ขึ้นอยู่กับข้อกำหนด

เว็บไซต์ยอดนิยมบางแห่งที่นำสถาปัตยกรรมนี้ไปใช้ ได้แก่:

  • MakeMyTrip.com
  • แอปพลิเคชันระดับองค์กรของฝ่ายขาย
  • การรถไฟอินเดีย – IRCTC
  • Amazon.com ฯลฯ

คำศัพท์พื้นฐานบางคำที่ควรจำไว้ เพื่อให้เข้าใจแนวคิดได้ชัดเจนยิ่งขึ้น:

  • เครือข่ายแบบกระจาย: เป็นสถาปัตยกรรมเครือข่ายที่ส่วนประกอบต่างๆ ที่อยู่บนคอมพิวเตอร์ในเครือข่ายประสานงานและสื่อสารการกระทำของพวกมันโดยการส่งข้อความเท่านั้น มันคือกลุ่มของระบบหลายระบบที่ตั้งอยู่บนโหนดต่างๆ แต่ผู้ใช้จะมองเห็นเป็นระบบเดียว
    • มีเครือข่ายการสื่อสารข้อมูลเดียวซึ่งสามารถจัดการแยกกันโดยเครือข่ายต่างๆ
    • ตัวอย่างหนึ่งของเครือข่ายแบบกระจาย (Distributed Network) คือ เครือข่ายที่ลูกค้าหลายรายเชื่อมต่อกันภายในสถาปัตยกรรม LAN ด้านหนึ่ง และอีกด้านหนึ่งเชื่อมต่อกับสวิตช์ความเร็วสูงพร้อมกับแร็คเซิร์ฟเวอร์ที่มีโหนดบริการ
  • ไคลเอนต์เซิร์ฟเวอร์ Archiเทคเจอร์: นี่คือแบบจำลองทางสถาปัตยกรรมที่โปรแกรมไคลเอ็นต์ (โปรแกรมหนึ่ง) ร้องขอการบริการจากโปรแกรมเซิร์ฟเวอร์ (อีกโปรแกรมหนึ่ง) เช่น เป็นบริการแบบร้องขอและตอบกลับที่ให้บริการผ่านทางอินเทอร์เน็ตหรืออินทราเน็ต ในรูปแบบนี้ ไคลเอนต์ จะทำหน้าที่เป็นชุดโปรแกรม/โค้ดชุดเดียวซึ่งดำเนินการชุดการดำเนินการผ่านเครือข่าย ในขณะที่ เซิร์ฟเวอร์ในทางกลับกันเป็นชุดของโปรแกรมอื่นซึ่งจะส่งชุดผลลัพธ์ไปยังระบบไคลเอ็นต์ตามที่ร้องขอ
    • ในระบบนี้ คอมพิวเตอร์ไคลเอ็นต์จะจัดเตรียมอินเทอร์เฟซให้ผู้ใช้ปลายทางเพื่อร้องขอรับบริการหรือทรัพยากรจากเซิร์ฟเวอร์ และในทางกลับกัน เซิร์ฟเวอร์จะประมวลผลคำขอและแสดงผลลัพธ์ให้ผู้ใช้ปลายทางเห็น
    • ตัวอย่างของโมเดลไคลเอ็นต์-เซิร์ฟเวอร์ คือ เครื่องเอทีเอ็ม ธนาคารเป็นเซิร์ฟเวอร์ที่ประมวลผลแอปพลิเคชันภายในฐานข้อมูลลูกค้าขนาดใหญ่ และเครื่องเอทีเอ็มเป็นไคลเอ็นต์ที่มีส่วนติดต่อผู้ใช้พร้อมแอปพลิเคชันประมวลผลอย่างง่าย
  • แพลตฟอร์ม: ในวิทยาการคอมพิวเตอร์หรืออุตสาหกรรมซอฟต์แวร์ แพลตฟอร์มคือระบบที่โปรแกรมแอปพลิเคชันสามารถทำงานได้ ประกอบด้วยฮาร์ดแวร์และซอฟต์แวร์ที่มีคำสั่งในตัวสำหรับโปรเซสเซอร์/ไมโครโปรเซสเซอร์เพื่อดำเนินการเฉพาะอย่าง
    • กล่าวโดยง่าย แพลตฟอร์มคือระบบหรือฐานที่แอปพลิเคชันใด ๆ ก็สามารถทำงานและดำเนินการเพื่อให้บรรลุเป้าหมายเฉพาะได้
    • ตัวอย่างของแพลตฟอร์ม – เครื่องส่วนบุคคลที่โหลดไว้ Windows 2000 หรือ Mac OS X เป็นตัวอย่างของ 2 แพลตฟอร์มที่แตกต่างกัน
  • ฐานข้อมูล: เป็นการรวบรวมข้อมูลในลักษณะที่เป็นระบบเพื่อให้สามารถเข้าถึง จัดการ และปรับปรุงได้ง่าย
    • ตัวอย่างฐานข้อมูล – MySQL, SQL เซิร์ฟเวอร์และ Oracle Database ฐานข้อมูลเหล่านี้เป็นฐานข้อมูลที่ใช้กันทั่วไปบางประเภท

ประเภทของ N-Tier Archiเทคเจอร์

N-Tier มีหลายประเภท Archiเทคเจอร์เช่น 3 ชั้น Archiเทคเจอร์ 2 ชั้น Archiโครงสร้างและชั้นเดียว Archiเทคเจอร์

ก่อนอื่นเราจะเห็น 3 ชั้น Archiเทคเจอร์ซึ่งมีความสำคัญมาก

3 ชั้น Archiเทคเจอร์

เมื่อดูแผนภาพด้านล่าง คุณจะสามารถระบุสิ่งนั้นได้อย่างง่ายดาย สถาปัตยกรรม 3 ชั้น มีสามชั้นที่แตกต่างกัน

  • เลเยอร์การนำเสนอ
  • เลเยอร์ลอจิกธุรกิจ
  • ชั้นฐานข้อมูล
3 เทียร์ Archiแผนภาพเทคเจอร์
3 เทียร์ Archiแผนภาพเทคเจอร์

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

เลเยอร์ส่วนต่อประสานผู้ใช้หรือเลเยอร์การนำเสนอ

3 ชั้น Archiเทคเจอร์

เลเยอร์การนำเสนอ

private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{
// Object of the Property layer
clsStudent objproperty=new clsStudent();
// Object of the business layer
clsStudentInfo objbs=new clsStudentInfo();
// Object of the dataset in which we receive the data sent by the business layer
DataSet ds=new DataSet();
// here we are placing the value in the property using the object of the
//property layer
objproperty.id=int.Parse(DataGridl.SelectedItem.Cells[1].Text.ToString());

// In this following code we are calling a function from the business layer and
// passing the object of the property layer which will carry the ID till the database.
ds=objbs.GetAllStudentBsIDWise(objproperty);

// What ever the data has been returned by the above function into the dataset
//is being populate through the presentation laye.
txtId.Text=ds.Tables[0].Rows[0][0].ToString();
txtFname.Text=ds.Tables[0].Rows[0][1].ToString();
txtAddress.Text=ds.Tables[0].Rows[0][2].ToString();
txtemail.Text=ds.Tables[0].Rows[0][3].ToString();

Code คำอธิบาย

  • โค้ดข้างต้นกำหนดการออกแบบพื้นฐานของส่วนหน้า (front-end) ของแอปพลิเคชัน รวมถึงการเรียกใช้ฟังก์ชันของเลเยอร์อื่นๆ เพื่อให้สามารถทำงานร่วมกันได้

ชั้นการเข้าถึงธุรกิจ –

นี่คือหน้าที่ของชั้นธุรกิจที่รับข้อมูลจากชั้นแอปพลิเคชันและส่งผ่านไปยังชั้นข้อมูล

  • ตรรกะทางธุรกิจทำหน้าที่เป็นส่วนเชื่อมต่อระหว่างเลเยอร์ไคลเอ็นต์และเลเยอร์การเข้าถึงข้อมูล
  • ตรรกะทางธุรกิจทั้งหมด เช่น การตรวจสอบความถูกต้องของข้อมูล การคำนวณ การแทรก/แก้ไขข้อมูล จะถูกเขียนไว้ในเลเยอร์ตรรกะทางธุรกิจ
  • ทำให้การสื่อสารระหว่างไคลเอ็นต์และเลเยอร์ข้อมูลรวดเร็วและง่ายขึ้น
  • กำหนดกิจกรรมเวิร์กโฟลว์ที่เหมาะสมซึ่งจำเป็นต่อการทำงานให้เสร็จสมบูรณ์
// this is the function of the business layer which accepts the data from the
//application layer and passes it to the data layer.
public class clsStudentInfo
{
	public DataSet GetAllStudentBsIDWise(clsStudent obj)
	{
	 DataSet ds=new DataSet();
	 ds=objdt.getdata_dtIDWise(obj);// Calling of Data layer function
	 return ds;
	}
}

คำอธิบายของรหัส

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

เลเยอร์การเข้าถึงข้อมูล

นี่คือฟังก์ชันชั้นข้อมูลซึ่งรับข้อมูลจากชั้นธุรกิจและดำเนินการที่จำเป็นในฐานข้อมูล

// this is the datalayer function which is receiving the data from the business
//layer and performing the required operation into the database

public class clsStudentData // Data layer class
{
	// object of property layer class
	public DataSet getdata_dtIDUise(clsStudent obj)
	{
	 DataSet ds;
	 string sql;
	 sql="select * from student where Studentld=" +obj.id+ "order by Studentld;
	 ds=new DataSet();
	//this is the datalayer function which accepts the sql query and performs the
	//corresponding operation
		ds=objdt.ExecuteSql(sql);
		return ds;
	}
}

คำอธิบายของรหัส

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

2 ชั้น Archiเทคเจอร์

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

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

ไม่มีเลเยอร์ตรรกะทางธุรกิจหรือเลเยอร์ระดับกลางใดๆ อยู่ระหว่างไคลเอ็นต์และเซิร์ฟเวอร์

ชั้นเดียวหรือ 1 ชั้น Archiเทคเจอร์

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

ชั้นการนำเสนอ ชั้นตรรกะทางธุรกิจ และชั้นข้อมูล ล้วนอยู่ในเครื่องเดียว

ข้อดีและข้อเสียของมัลติเทียร์ Archiเทคเจอร์

เช่นเดียวกับการเลือกใช้การออกแบบใดๆ แนวทางการออกแบบหลายระดับนำมาซึ่งข้อดีที่ชัดเจน พร้อมกับข้อเสียบางประการ ซึ่งสรุปไว้ด้านล่าง

ข้อดี ข้อเสีย
scalability เพิ่มความพยายาม
ข้อมูล Integrity เพิ่มความซับซ้อน
ความสามารถในเรอุส
การกระจายตัวที่ลดลง
ปรับปรุงความปลอดภัย
ปรับปรุงความพร้อมใช้งาน

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

N-เทียร์ Archiคำแนะนำและการพัฒนา

เนื่องจากผู้เชี่ยวชาญด้านซอฟต์แวร์ต้องควบคุมทุกชั้นของสถาปัตยกรรมได้อย่างสมบูรณ์ เคล็ดลับเกี่ยวกับสถาปัตยกรรมแบบหลายชั้นจึงมีดังต่อไปนี้:

  1. พยายามแยกส่วนต่างๆ ออกจากกันให้มากที่สุดเท่าที่จะเป็นไปได้ โดยใช้เทคนิคอย่างเช่น SOAP XML
  2. ใช้เครื่องมืออัตโนมัติบางอย่างเพื่อสร้างแผนที่ping ระหว่างชั้นตรรกะทางธุรกิจและชั้นฐานข้อมูลเชิงสัมพันธ์ (ชั้นข้อมูล) เครื่องมือที่สามารถช่วยในการสร้างแบบจำลองแผนที่เหล่านี้ping เทคนิคที่ใช้ได้แก่ Entity Framework และ Hibernate สำหรับ .Net เป็นต้น
  3. ในเลเยอร์การนำเสนอฝั่งไคลเอ็นต์ ให้แยกโค้ดทั่วไปสำหรับไคลเอ็นต์ทุกประเภทไว้ในไลบรารีที่ต่างหากให้มากที่สุดเท่าที่จะเป็นไปได้ วิธีนี้จะช่วยเพิ่มการนำโค้ดกลับมาใช้ซ้ำได้สูงสุดสำหรับไคลเอ็นต์ทุกประเภท
  4. คุณสามารถเพิ่มเลเยอร์แคชลงในเลเยอร์ที่มีอยู่เพื่อเร่งประสิทธิภาพ

คำถามที่พบบ่อย

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

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

ตัวเลือกที่นิยมใช้กันทั่วไป ได้แก่ .NET Java (Spring) และ Node.js สำหรับตรรกะทางธุรกิจ HTML/Javaเฟรมเวิร์กสคริปต์สำหรับการนำเสนอ และฐานข้อมูลต่างๆ เช่น MySQL, SQL Server หรือ Oracle สำหรับเลเยอร์ข้อมูล ORM เช่น Entity Framework และ Hibernate จะเชื่อมต่อเลเยอร์ต่างๆ เข้าด้วยกัน

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

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

สรุปโพสต์นี้ด้วย: