มารู้จัก Application Architecture กันดีกว่า


อัปเดท : 30 ตุลาคม พ.ศ.2547 , แสดง : 48,693 , ความคิดเห็น : 22

Application Architecture คิดว่าใช้ทับศัพท์มันอธิบายความหมายได้กระชับพออยู่แล้ว จริงๆแล้วมันเป็นการใช้ Hardware ลักษณะการต่อ ที่แบ่งภาระงาน ในบทความนี้คุณจะได้พบกับ คำหลายๆ คำในด้าน Network เช่น Tier ,Client-server และอื่นๆ
ก่อนที่จะมาพูดถึง Application Architecture ขอพูดถึง Application Program ก่อน เจ้าตัวนี้แหละเป็น Keyword สำคัญเพื่อ จะแบ่งหมวดหมู่ของ Application Architecture โดยเจ้า Application Program มีอยู่ 4 ระดับคือ

1. Presentation logic นำผลที่ได้จาก Application logic มาแสดง
2. Application logic ทำประมวลผลต่าง ๆ ตามที่กำหนด เช่น เปรียบเทียบ, ตัดสินใจ ,ฟังก์ชั่นทางคณิตศาสตร์
3. Data access logic เป็นตัวที่เข้าถึงข้อมูลได้ จริง ทำการสืบค้น, แก้ไขจัดเก็บข้อมูลได้
4. Data storage เป็นที่เก็บข้อมูลจริงๆ

ขอยกตัวอย่าง เวบนี้นะครับ (ไม่ได้ไปไหนไกลเลย !@!!)

ที่คุณเห็นอยู่ตอนนี้ ผ่าน Internet Explorer ที่คุณใช้ ถ้าเทียบกับ Application Program ที่พูดถึงมันก็คือ Presentation logic ซื่งเป็นชั้นบนสุด ไกล้ user ที่สุด นำผลที่ได้จาก Application logic ก็คือ HTML มาแสดงผล และ รับคำสั่งจาก User ส่งให้ Application logic เพื่อประมวลผลด้วย ส่วนต่อไป Application logic ก็คือ Web Application ซึ่งเขียน เพื่อประมวลผลต่างๆ ตามต้องการ ถ้าพูดถึงเวบนี้ Application logic ถูกพัฒนาด้วย ASP.net สามารถกำหนดรูปแบบการทำงานได้ ประมวลผลต่าง ๆ ตามที่กำหนด เช่น เปรียบเทียบ, ตัดสินใจ ,ฟังก์ชั่นทางคณิตศาสตร์ ติดต่อฐานข้อมูล เป็นต้น แต่ตัว ASP.net มันก็ไม่ใช่ DBMS(โปรแกรมจัดการฐานข้อมูล) มันเข้าถึงหรือจัดเก็บข้อมูลตรง ๆ ไม่ได้ ต้องผ่านตัวกลาง ซึ่งก็คือ Data access logic ซึ่งในที่นี้เป็น MS SQL หรือ MS Access เป็น ฐานข้อมูล ดังนั้นต้องติดต่อผ่านตัวกลาง ที่ MS SQL จัดเตรียมไว้ให้ เช่น OLEDB หรือจะมอง Data access เป็นตัว DBMS(โปรแกรมจัดการฐานข้อมูล) ทั้งก้อนเลยก็ได้ เห็นได้ว่า ตัว Data access logic เป็นตัวที่เข้าถึงข้อมูลได้จริง ๆ แต่มันก็ไม่ได้เก็บข้อมูลนั้น ๆ เอง มันไม่ใช่ Hardware มันไม่รู้เลยว่า Sector ของ Harddisk เป็นอย่างไร แต่ตัวที่เก็บข้อมูลจริง เป็นอะไรไปไม่ได้นอกจาก Data storage ซึ่งจะเป็น Hardware (กว่าจะโม้จบ ไม่รู้ว่างง กันหรือเปล่า เข้าใจว่าคงจะงงกันถ้วนหน้า)

  
 


ต่อไปก็จะพูดถึง Application Architecture
Application Architecture มี 3 แบบแบ่งตาม Application Program คือ

1. Host-based Architecture
2. Client-based Architecture
3. Client-Server Architecture
ต้องขยายความสักหน่อย

1. Host-based Architecture
เป็น Architecture แบบแรก ๆ การทำงานทุกอย่างจะอยู่ที่ Server และ Client ทำหน้าที่เป็นเพียง Terminal ทำหน้าที่ แสดงผล และรับข้อมูลจาก User เท่านั้น ภาระงานการประมวลผลยกให้ Host ทั้งหมด โดย เครื่อง Terminal จะเป็น Terminal จริง ๆ หรือ PC ที่จำลองตัวเองเป็น Terminal ก็ได้ 2 แบบนี้ต่างกันตรงที่ ถ้า Host ปิด(Down) Terminal จริง ๆ จะไม่สามารถทำงานใด ๆ ได้เลย แต่ถ้าเป็น PC ที่จำลองเป็น Terminal จะยังสามารถทำงานเป็น PC ธรรมดาได้ เราควรใช้ Host-based Architecture เมื่อต้องการควบคุมข้อมูลหรือ ฐานข้อมูลเพียงที่เดียว และ งานมีขนาดใหญ่มาก

ข้อดี :
1. เมื่อเป็น Centralized control จะทำให้ง่ายต่อการ Code, Debug โปรแกรม
ข้อเสีย :
1. เกิดคอขวดที่ Server เนื่องจากงานทั้งหมดถูกทำที่ Server ซึ่งจะส่งผลให้มี Performance จำกัด
2. Upgrade ยุ่งยาก และมีราคาแพง(Mainframe)
** สถาปัตยกรรมแบบนี้จะเรียกเครื่องแม่ข่ายว่า Host ซึ่งมีความหมายเดียวกันกับ คำว่า Server

2. Client-based Architecture การทำงานทุกอย่างจะอยู่ที่ Client และ Server ทำหน้าที่เป็น Data Storage แบบนี้ไม่ค่อยเป็นที่นิยม เนื่องจากคอขวดของระบบอยู่ที่เครือข่ายเพราะสถาปัตยกรรมแบบนี้ ใช้ Bandwidth ค่อนข้างสูง

ยกตัวอย่างเช่น ต้องการ Query ข้อมูลใช้ภาษา SQL ตัวข้อมูลจริง ต้อง Load ผ่าน Network มาที่เครื่อง Client ทั้งก้อนเพื่อประมวลผล ในการ update ก็เช่นกัน ต้องส่งข้อมูลทั้งก้อน ไปที่ Server ในการใช้จริง จะมี Client หลาย เครื่องคอขวดของระบบจะเกิดที่ เครือข่าย (Network) ซึ่งแออัดไปด้วยข้อมูล

3. Client-Server Architecture การทำงานจะแบ่งกันทำ โดยงานใดอยู่ใกล้ User ก็จะนำไปไว้ในฝั่ง Client เช่น Presentation logic และ Application logic ส่วนงานที่เกี่ยวข้องกับ Server เช่น Data storage และ Data access logic จะนำไปไว้ในฝั่ง Server ในการ Update ข้อมูล Application logic จะส่ง SQL ไปที่ Server เพื่อให้ Update record ให้ ดังนั้น Traffic จะน้อยกว่าแบบ Client-based

ข้อดี :
1. Performance ดีกว่าแบบอื่น ๆ เนื่องจากกระจายงานกันทำ
ข้อเสีย :
1. การพัฒนา SOFTWARE ยากกว่าเพราะต้อง Debug ข้าม Network
2. ในการแบ่งงานกันทำ บางครั้ง Application logic กับ Data access logic มาจากคนละยี่ห้อกัน จึงอาจไม่ Match กัน ทำให้ต้องมี Middleware เกิดขึ้น

ใหน ๆ พูดถึง Application Architecture แล่ว ขอต่ออีกนิด กับ Middleware และTier อีกสักหน่อยนะครับ

Middleware เป็น SOFTWARE ที่ทำหน้าที่ให้มาตรฐานในการแปลงระหว่าง SOFTWARE จากผู้ผลิตต่าง ๆ (ทำหน้าที่คล้ายล่าม) เช่น จัดการการส่งคำขอต่าง ๆ ระหว่าง Client กับ Server โดยมันจะเป็นตัวกลางในการรับส่ง เมื่อมีการเปลี่ยนแปลง ทั้ง Client และ Server จะไม่ได้รับผลกระทบใด ๆ เพราะการเปลี่ยนแปลงเกิดขึ้นที่ Middleware (ได้แก่ ODBC,JDBC เป็นต้น)

Tier เป็น Client-Server Architecture ที่มีการ แบ่ง Application Program ตามภาระงานของแต่ละส่วน

- Two-Tier Architecture จะมองเป็นสอง Component คือ Client(ทำ Presentation, Application) กับ Server(ทำ Data storage, Data access) ตัวอย่างดังรูปด้านล่าง

- Three-Tier Architecture มองเป็นสาม Component หลัก อาจประกอบด้วย Client, Middleware, Appliaction Server ,Database Server หรืออื่นๆ ตัวอย่างดังรูปด้านล่าง

 

- N-Tier Architecture จะมีมากกว่า สาม Component ประกอบด้วย Client, Server ที่ทำงานต่างๆ, Database Server แบ่งภาระงาน บางครั้ง อาจมี เครื่องที่ทำในส่วนของ Appliaction Logic 2 ตัวเลยก็ได้ ตัวอย่างดังรูปด้านล่าง

** Thin client คือ Client ที่มี Application Program อยู่ไม่มากหรือไม่มีเลย เช่น Web browser
** Thick client คือ Client ที่ทำ Application Program ทุกอย่าง(คล้าย ๆ Client Base)

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


ผู้เขียน/อ้างอิง : จักรกฤษณ์ แร่ทอง

ระบบเครือข่ายและความมั่นคง

ความคิดเห็น/แนะนำ/ติชม/อื่นๆ

  • Tiger [19 May 2005 , 10:42 PM]

    พึ่งได้เข้าเว็บ มาอ่าน เป็นครั้งแรก ดีครับ มีความรู้เพิ่มขึ้นอีกแล้วเรา

  • rawitee [23 Aug 2005 , 02:08 PM]

    อยากทราบว่า Bisiness Logic อยู่ส่วนไหนค่ะ

  • จักรกฤษณ์ [24 Aug 2005 , 08:05 AM]

    ถ้ามอง Bisiness Logic ซึ่งอยู่สูงกว่า Application Program ทั้งหมด เพราะมันเป็นระบบงาน มันจะถูกวิเคราะห์ และ นำพัฒนาเป็น Application Logic เป็นหลักครับ แต่ส่วนต่าง ๆ ทั้ง 4 ก็เกี่ยวข้องด้วยครับ

  • por [14 ธ.ค. 2548 , 09:23 PM]

    อยากได้ข้อมูลของ client-base architecture ไม่ทราบว่าจะไปหามาได้จากไหนค่ะ

  • Rounnachai [20 ธ.ค. 2548 , 09:30 AM]

    พึ่งเคยเข้าเว็บนี้เป็นครั้งแรกเว็บนี้ดีมากครับให้ความรู้เยอะแยะมากมาย

  • เอก [20 ม.ค. 2549 , 02:32 PM]

    data Dictionary Storage -Indexing -Hashing มันคืออะไรหรอครับช่วยตอบด้วนนะครับ

  • จักรกฤษณ์ แร่ทอง [26 ม.ค. 2549 , 08:02 AM]

    -Indexing -Hashing ถ้าอยู่ในเรื่องของ data Dictionary เป็นเทคนิคในการจัดเรียงข้อมูลและค้นหา ที่นำมาใช้กับตัวจัดการฐานข้อมุล(DBMS)ครับ โจทก์มันมีอยู่ว่าทำอย่างไรจึงค้นหาได้เร็ว ถ้ามีข้อมูลจะนวนมหาศาล ผมแนะนำว่าลองศึกษาเพิ่มเติมในเรื่อง Data Structure และ Algorithm ก่อนเพื่อทราบถึง Index -Hash Function ก่อน แล้วค่อยศึกษาเพิ่มว่าใน DBMS นะมาใช้อย่างไร และก็จะพบว่า -Indexing -Hashing เป็นแค่ส่วนนึงของเทคนิคที่ใช้เท่านั้น --- ขอบคุณครับ

  • Ben [03 ก.พ. 2549 , 10:34 PM]

    อยากได้ข้อมูล Firebird database หาข้อมูลได้ที่ไหนคะ

  • นา [23 มี.ค. 2549 , 09:56 AM]

    อยากได้ข้อมูลเพิ่มเติม N-Tier Architecture

  • chalida [02 เม.ย. 2549 , 08:16 AM]

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

  • จักรกฤษณ์ [05 เม.ย. 2549 , 09:53 AM]

    ที่นิยมใช้กันก็มี SQL Server ,MS Access ,Oracle ,MySQL ,Interbase ,DB2 ,Sybase ,Informix , Mimer SQL ,DBF / FoxPro ,Pervasive ประมาณนี้ครับ

  • zea_wizard [13 ก.ย. 2549 , 06:32 PM]

    อยากทราบข้อมูล sybase ใครมีข้อมูล หรือทราบแหล่งข้อมูลที่น่าสนใจ กรุณาตอบด้วยน๊า จาเปนพระคุรอย่างยิ่งเรย เพราะจาเอาไปใช้ทำรายงานวิชา database น่ะ

  • boui [27 ก.ย. 2549 , 11:10 AM]

    web application ถือว่าอยู่ใน สถาปัตยกรรมแบบไหนคับ

  • ปัทมาวดี บุญมาก [12 ธ.ค. 2549 , 06:52 AM]

    เครือข่ายแบบ client และ server มีข้อดีข้อเสียอย่างไร

  • ian [07 มิ.ย. 2550 , 12:03 PM]

    อยากทราบ Server, Work station, Clicent, Terminal ทำหน้าที่อะไร

  • นู๋ นันท์ [27 ส.ค. 2553 , 07:31 PM]

    ขอบคุณมาก ค่ะ ความรู้ ส่วนนี้ คงจะเป็น ประโยชน์ ในการสอบ ของ หนู มากๆ เลย ล่ะ ค่ะ

  • Aum [25 ก.พ. 2554 , 02:46 AM]

    สุูดยอดเลยครับ

  • janya_sattanako [27 ก.พ. 2554 , 01:10 PM]

    thx 2 much, so much, very much

  • someone [06 ส.ค. 2554 , 10:28 AM]

    ที่บริษัทให้ศึกษาเรื่องของ application architecture concept มันมีอะไรบ้างที่สำคัญค่ะ

  • อ้น [30 ส.ค. 2554 , 11:19 AM]

    เม้นๆ

  • Ly [18 พ.ค. 2555 , 07:21 PM]

    เจ๋งอ่ะ. กะลังจะbrief. เกี่ยวกะmiddelware. พอดีรอดตายแร่ะเรา. ขอบคุนมากเรยนะค่ะ

  • Leng [22 ก.ย. 2555 , 10:27 AM]

    ขอบคุณมากๆนะคะผ่านไปหลายปีแต่ข้อมูลอ่่นง่่บเข้าใจมากขอบคุณมากคะ