Contents

มิดเดิลแวร์คืออะไร?

ลิงค์ด่วน

⭐มิดเดิลแวร์หมายถึงหลายสิ่งหลายอย่าง

⭐ มิดเดิลแวร์ทำงานอย่างไร

⭐ มิดเดิลแวร์ประเภทต่างๆ

⭐การใช้มิดเดิลแวร์ในการพัฒนาซอฟต์แวร์

⭐ เหตุใดมิดเดิลแวร์จึงมีประโยชน์

ประเด็นที่สำคัญ

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

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

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

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

มิดเดิลแวร์มีความหมายหลายอย่าง

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

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

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

มิดเดิลแวร์ทำงานอย่างไร?

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

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

ส่วนประกอบมิดเดิลแวร์มักใช้ประโยชน์จากเทคโนโลยี เช่น JSON, REST, XML และ SOAP สิ่งเหล่านี้ถูกสร้างขึ้น ใช้กันอย่างแพร่หลาย และมีลักษณะเป็นข้อความ ช่วยให้การเปลี่ยนหรือแก้ไขส่วนประกอบแต่ละส่วนเป็นไปอย่างราบรื่น นอกจากนี้ โครงสร้างแบบข้อความและเครื่องมือการพัฒนาที่หลากหลายยังช่วยให้การตรวจจับและแก้ไขข้อผิดพลาดทำได้ง่ายและเชื่อถือได้

มิดเดิลแวร์ประเภทต่างๆ

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

การสื่อสารระหว่างกระบวนการสามารถจัดโครงสร้างผ่านนายหน้าข้อความ

⭐เซิร์ฟเวอร์แอปเว็บและเฟรมเวิร์กเว็บ

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

⭐แพลตฟอร์มการสตรีมเหตุการณ์เช่น Apache Kafka

การใช้มิดเดิลแวร์ในการพัฒนาซอฟต์แวร์

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

กรอบงาน Express.js ใช้ประโยชน์จากแนวคิดนี้เพื่ออำนวยความสะดวกในการกำหนดค่าส่วนบุคคล พิจารณาอินสแตนซ์ของฟังก์ชันตัวกลางที่เขียนสคริปต์ใน JavaScript:

 app.use('/user/:id', (req, res, next) => {
  console.log('Request Type:', req.method)
  next()
}) 

ฟังก์ชั่นนี้เรียบง่ายในระดับสูงสุด:

แอปพลิเคชันได้รับการออกแบบมาเพื่อจัดการเส้นทาง URL ที่เป็นไปตามรูปแบบเฉพาะ โดยเริ่มต้นด้วย"/user/“และต่อจากนี้จะเป็นตัวระบุ

ระบบจะรวบรวมข้อมูลเกี่ยวกับลักษณะของวิธีการร้องขอที่ใช้ รวมถึงตัวเลือกต่างๆ เช่น GET หรือ POST

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

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

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

 namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class EnsureTokenIsValid
{
    /**
     * Handle an incoming request.
     */
    public function handle(Request $request, Closure $next): Response
    {
        if ($request->input('token') !== 'my-secret-token') {
            return redirect('home');
        }

        return $next($request);
    }
} 

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

Django ซึ่งเป็นแพลตฟอร์มการพัฒนาเว็บที่ขับเคลื่อนด้วย Python ที่ใช้กันอย่างแพร่หลาย เป็นตัวอย่างการจัดการมิดเดิลแวร์ผ่านการกำหนดส่วนประกอบต่างๆ เช่น “ปลั๊กอิน” คำศัพท์ที่เปรียบเทียบได้ ได้แก่ “hooks” และ “callbacks” ซึ่งทั้งหมดนี้มีส่วนทำให้ความสามารถในการปรับตัวโดยรวมในโครงสร้างมิดเดิลแวร์ของ Django โดยพื้นฐานแล้ว การกำหนดค่านี้มอบตัวอย่างเพิ่มเติมของความคล่องตัวภายในเวิร์กโฟลว์ที่จัดระเบียบอย่างเป็นระบบ

 def simple_middleware(get_response):
    # One-time configuration and initialization.

    def middleware(request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.

        response = get_response(request)

        # Code to be executed for each request/response after
        # the view is called.

        return response

    return middleware 

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

 MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
] 

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

เหตุใดมิดเดิลแวร์จึงมีประโยชน์?

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

ข้อดีของการใช้มิดเดิลแวร์มีมากมายและรวมถึง:

กระบวนการพัฒนาแอปพลิเคชันได้รับการปรับปรุงให้ดีขึ้น ส่งผลให้ระยะเวลาในการนำผลิตภัณฑ์ออกสู่ตลาดสั้นลง

⭐การเชื่อมต่อที่มีประสิทธิภาพ

⭐การเปลี่ยนแปลงการเปลี่ยนแปลงที่เร็วขึ้น

⭐เครื่องมือในที่ทำงานที่เข้าถึงได้ง่าย

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