App server, Web server: อะไรคือความแตกต่าง?

23 สิงหาคม 2545

ถาม:แอพพลิเคชั่นเซิร์ฟเวอร์และเว็บเซิร์ฟเวอร์ต่างกันอย่างไร

A:

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

มาดูรายละเอียดเพิ่มเติมกัน

เว็บเซิร์ฟเวอร์

เว็บเซิร์ฟเวอร์จัดการโปรโตคอล HTTP เมื่อเว็บเซิร์ฟเวอร์ได้รับคำขอ HTTP เซิร์ฟเวอร์จะตอบสนองด้วยการตอบกลับ HTTP เช่นการส่งกลับเพจ HTML ในการดำเนินการตามคำขอเว็บเซิร์ฟเวอร์อาจตอบสนองด้วยเพจ HTML แบบคงที่หรือรูปภาพส่งการเปลี่ยนเส้นทางหรือมอบหมายการสร้างการตอบกลับแบบไดนามิกให้กับโปรแกรมอื่น ๆ เช่นสคริปต์ CGI, JSPs (JavaServer Pages), servlets, ASPs (Active Server Pages ), JavaScripts ฝั่งเซิร์ฟเวอร์หรือเทคโนโลยีฝั่งเซิร์ฟเวอร์อื่น ๆ ไม่ว่าจุดประสงค์ใดโปรแกรมฝั่งเซิร์ฟเวอร์ดังกล่าวจะสร้างการตอบสนองซึ่งส่วนใหญ่มักเป็น HTML สำหรับการดูในเว็บเบราว์เซอร์

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

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

แอ็พพลิเคชันเซิร์ฟเวอร์

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

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

ในกรณีส่วนใหญ่เซิร์ฟเวอร์จะแสดงตรรกะทางธุรกิจนี้ผ่าน Component API เช่นโมเดลคอมโพเนนต์ EJB (Enterprise JavaBean) ที่พบบนแอ็พพลิเคชันเซิร์ฟเวอร์ J2EE (Java 2 Platform, Enterprise Edition) ยิ่งไปกว่านั้นแอ็พพลิเคชันเซิร์ฟเวอร์ยังจัดการทรัพยากรของตนเอง หน้าที่รักษาประตูดังกล่าวรวมถึงการรักษาความปลอดภัยการประมวลผลธุรกรรมการรวมทรัพยากรและการส่งข้อความ เช่นเดียวกับเว็บเซิร์ฟเวอร์แอ็พพลิเคชันเซิร์ฟเวอร์อาจใช้เทคนิคการปรับขนาดและการยอมรับข้อผิดพลาดต่างๆ

ตัวอย่าง

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

สถานการณ์ที่ 1: เว็บเซิร์ฟเวอร์ที่ไม่มีแอ็พพลิเคชันเซิร์ฟเวอร์

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

สรุปได้ว่าเว็บเซิร์ฟเวอร์เพียงแค่ประมวลผลคำขอ HTTP โดยตอบสนองด้วยเพจ HTML

สถานการณ์ที่ 2: เว็บเซิร์ฟเวอร์ที่มีแอ็พพลิเคชันเซิร์ฟเวอร์

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

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

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

ข้อควรระวัง

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

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

Tony Sintes เป็นที่ปรึกษาอิสระและเป็นผู้ก่อตั้ง First Class Consulting ซึ่งเป็น บริษัท ที่ปรึกษาที่เชี่ยวชาญด้านการเชื่อมโยงระบบองค์กรและการฝึกอบรม นอกเหนือจากการให้คำปรึกษาชั้นหนึ่งโทนี่ยังเป็นนักเขียนอิสระที่กระตือรือร้นเช่นเดียวกับผู้เขียนโปรแกรมเชิงวัตถุของ Sams Teach Yourself ใน 21 วัน (Sams, 2001; ISBN: 0672321092)

เรียนรู้เพิ่มเติมเกี่ยวกับหัวข้อนี้

  • สำหรับบทความเพิ่มเติมเกี่ยวกับแอ็พพลิเคชันเซิร์ฟเวอร์ให้เรียกดูส่วนJava Application ServersของดัชนีเฉพาะของJavaWorld

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • ต้องการมากขึ้น? ดูหน้าดัชนีQ&A Javaสำหรับแค็ตตาล็อก Q&A แบบเต็ม

    //www.javaworld.com/columns/jw-qna-index.shtml

  • เป็นเวลากว่า 100 เคล็ดลับ Java ลึกซึ้งจากบางส่วนของจิตใจที่ดีที่สุดในธุรกิจการเยี่ยมชมJavaWorld' s Java เคล็ดลับหน้าดัชนี

    //www.javaworld.com/columns/jw-tips-index.shtml

  • เรียนรู้เพิ่มเติมเกี่ยวกับแอ็พพลิเคชันเซิร์ฟเวอร์และเว็บเซิร์ฟเวอร์ในการอภิปรายEnterprise Javaของเรา

    //forums.idg.net/[email protected]@.ee6b80a

  • ลงทะเบียนเพื่อรับจดหมายข่าวอีเมลEnterprise Javaรายสัปดาห์ฟรีของJavaWorld

    //www.javaworld.com/subscribe

  • คุณจะพบบทความเกี่ยวกับไอทีมากมายจากสิ่งพิมพ์ในเครือของเราที่. net

เรื่องนี้ "App server, Web server: ต่างกันอย่างไร" เผยแพร่ครั้งแรกโดย JavaWorld