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


202

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

หรือคุณมีตัวอย่างของเครื่องที่ไม่ใช่มิดเดิลแวร์?

คำตอบ:


219

สมมติว่า บริษัท ของคุณสร้างผลิตภัณฑ์ที่แตกต่างกัน 4 แบบลูกค้าของคุณมีอีก 3 ผลิตภัณฑ์ที่แตกต่างจากอีก 3 บริษัท ที่แตกต่างกัน

สักวันลูกค้าคิดว่าทำไมเราไม่รวมระบบทั้งหมดของเราเป็นระบบขนาดใหญ่ สิบนาทีต่อมาฝ่ายไอทีของพวกเขากล่าวว่าจะใช้เวลา 2 ปี

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

ยังคงอธิบายถึงผู้จัดการที่ไม่ใช่เทคโนโลยี
ด้วยเฟรมเวิร์ก Middleware ที่อยู่ตรงกลางระบบแรกจะผลิตสิ่ง X ระบบ Y และ Z จะใช้ผลลัพธ์เหล่านั้นและอื่น ๆ


ตัวอย่างที่ดี! ด้วยวิธีนี้มันจะไม่กลายเป็นสภาพแวดล้อมที่ต่างกันหรือไม่? ไม่เป็นเนื้อเดียวกัน
Rabia Naz khan

Middleware เป็นส่วนประกอบข้อมูล (การรวมกัน + การแปลง)
แลกเปลี่ยนที่มากเกินไป

92

Middleware เป็นคำที่คลุมเครือมาก "มิดเดิลแวร์" คืออะไรในกรณีหนึ่งจะไม่อยู่ในที่อื่น โดยทั่วไปคุณสามารถคาดหวังสิ่งที่จัดเป็นมิดเดิลแวร์เพื่อให้มีลักษณะดังต่อไปนี้:

  • ซอฟต์แวร์ส่วนใหญ่ (โดยปกติแล้ว) มักไม่ต้องการฮาร์ดแวร์พิเศษใด ๆ

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

  • เกือบจะเชื่อมต่อแอพพลิเคชั่นสองตัวและส่งผ่านข้อมูลระหว่างกัน

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

ตัวอย่างของมิดเดิลแวร์:

  • แคชแบบกระจาย
  • คิวข้อความ
  • ตรวจสอบการทำธุรกรรม
  • packet rewriter
  • ระบบสำรองข้อมูลอัตโนมัติ

20

Wikipedia มีคำอธิบายที่ดีมาก: http://en.wikipedia.org/wiki/Middleware

มันเริ่มต้นด้วย

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

Middleware คืออะไรให้ตัวอย่างเล็ก ๆ น้อย ๆ


1
ฉันพบว่าตัวเองพร้อมแล้ว แต่ดูเหมือนว่าวิกิพีเดียบอกว่าทุกอย่างเป็นมิดเดิลแวร์หรือคุณมีตัวอย่างของเครื่องที่ไม่เป็นมิดเดิลแวร์
มิเชล

2
ฉันจะอธิบายโดยการเพิ่ม ... "อย่างน้อยหนึ่งเครื่องเพื่อโต้ตอบที่ไม่สามารถทำได้" มิฉะนั้นเห็นด้วยไม่มีอะไรผิดปกติกับคำตอบนั้น
jeriley

1
ดีกว่าที่จะพูดว่า "หนึ่งอย่างหรือมากกว่า [กระบวนการ] ในการโต้ตอบที่ไม่สามารถทำได้"
fstuijt

19

มีอย่างน้อยสามคำนิยามต่างกันที่ฉันรู้

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

  • ในการเล่นเกมมิดเดิลแวร์นั้นค่อนข้างดีทุกอย่างที่จัดหาโดยบุคคลที่สาม

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


15

เพียงแค่ใส่ Middleware เป็นส่วนประกอบซอฟต์แวร์ที่ให้บริการเพื่อรวมระบบที่แตกต่างกันเข้าด้วยกัน

ในสภาพแวดล้อมขององค์กรที่ซับซ้อนมีความท้าทายมากมายเมื่อคุณต้องการรวมระบบองค์กรสองระบบขึ้นไปเข้าด้วยกันเพื่อพูดคุยกัน โดยปกติระบบเหล่านี้จะไม่เข้าใจภาษาอื่น ๆ เนื่องจากพัฒนาบนแพลตฟอร์มที่แตกต่างกันโดยใช้ภาษาที่แตกต่างกัน (เช่น C ++, Java, Cobol ฯลฯ )

ดังนั้นนี่คือซอฟต์แวร์มิดเดิลแวร์ในรูปซึ่งให้บริการเช่น

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

ตัวอย่างทั่วไปของมิดเดิลแวร์คือผลิตภัณฑ์ESBเช่น IBM message broker (WMB / IIB), WESB, Datapower XI50, Oracle Fusion, Mule และอื่น ๆ อีกมากมาย

ดังนั้นมิดเดิลแวร์จึงอยู่ในระหว่างแอพที่ใช้บริการและแอพผู้ให้บริการและช่วยให้แอพเหล่านี้คุยกันได้


14

Middlewareเป็นเรื่องเกี่ยวกับวิธีที่แอปพลิเคชันของเราตอบสนองต่อคำขอขาเข้า Middlewares จะตรวจสอบคำขอที่เข้ามาและทำการตัดสินใจตามคำขอนี้ เราสามารถสร้างแอปพลิเคชันทั้งหมดโดยใช้มิดเดิลแวร์ ตัวอย่างเช่น ASP.NET เป็นเฟรมเวิร์กทางเว็บที่ประกอบด้วยส่วนประกอบมิดเดิลแวร์ HTTP หลักดังต่อไปนี้

  1. การจัดการข้อยกเว้น / ข้อผิดพลาด
  2. ไฟล์เซิร์ฟเวอร์คงที่
  3. การรับรอง
  4. MVC middlewares

ดังที่แสดงในแผนภาพด้านบนมีส่วนประกอบมิดเดิลแวร์ต่างๆใน ASP.NET ที่ได้รับคำขอขาเข้าและเปลี่ยนเส้นทางไปยังคลาส C # (ในกรณีนี้คือคลาสคอนโทรลเลอร์)


10

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


6

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

ตัวอย่างของงานที่มิดเดิลแวร์ใช้งานทั่วไป:

  • การบีบอัดการตอบสนอง Gzip
  • การตรวจสอบ HTTP
  • ขอเข้าสู่ระบบ

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

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

โดยส่วนตัวแล้วฉันเกลียดคำว่า "มิดเดิลแวร์" สำหรับความมีตัวตน แต่ก็เป็นเรื่องที่ใช้กันทั่วไป

นี่คือคำอธิบายเพิ่มเติมที่ใช้กับ Ruby on Rails โดยเฉพาะ


6

Middleware ย่อมาจากเว็บแอปพลิเคชันและบริการเว็บที่ไม่สามารถสื่อสารได้และมักจะเขียนในภาษา / กรอบงานต่าง ๆ

ตัวอย่างหนึ่งคือOWIN middleware for .NETสภาพแวดล้อมก่อน owin IISคนถูกบังคับให้ปพลิเคชันเว็บโฮสต์ในซอฟแวร์ไมโครซอฟท์ที่เรียกว่าโฮสติ้ง หลังจากที่ Owin ได้รับการพัฒนามันได้เพิ่มขีดความสามารถในการโฮสต์ทั้งใน IIS และโฮสต์ของตัวเองใน IIS นั้นเพิ่งเพิ่มการรองรับสำหรับ Owin ซึ่งทำหน้าที่เป็นอินเทอร์เฟซ นอกจากนี้ยังเป็นไปได้ที่จะhost .NET web apps on Linux via Monoเพิ่มการสนับสนุนสำหรับ Owin อีกครั้ง

นอกจากนี้ยังเพิ่มขีดความสามารถในการสร้างSingle Page ApplicationsOwin จัดการHttpบริบทคำขอ / การตอบสนองดังนั้นนอกเหนือจาก Owin คุณสามารถเพิ่มauthentication/authorizationตรรกะผ่าน OAuth2 เช่นคุณสามารถกำหนดค่ามิดเดิลแวร์เพื่อลงทะเบียนคลาสที่มีตรรกะของการตรวจสอบผู้ใช้ (เช่นการใช้ OAuth2) หรือ คลาสที่มีตรรกะของวิธีการจัดการข้อความร้องขอ / ตอบกลับ http วิธีที่คุณสามารถทำให้แอปพลิเคชันหนึ่งสื่อสารกับแอปพลิเคชัน / บริการอื่น ๆ ผ่านรูปแบบข้อมูลที่แตกต่างกัน (เช่น json, xml เป็นต้นหากคุณกำหนดเป้าหมายเป็นเว็บ)


3

ตัวอย่างของมิดเดิลแวร์: CORBA, Remote Method Invocation (RMI), ...

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


2

จากประสบการณ์ของฉันกับ webwork มิดเดิลแวร์เป็นสิ่งระหว่างผู้ใช้ (เว็บเบราว์เซอร์) และฐานข้อมูลส่วนหลัง มันเป็นซอฟต์แวร์ที่นำสิ่งที่ผู้ใช้ใส่ (ตัวอย่างเช่น: คำสั่งซื้อไอแพด, ทำตรรกะทางธุรกิจที่น่าอัศจรรย์เช่นตรวจสอบว่ามีไอแพดเพียงพอที่จะเติมคำสั่งซื้อ) และปรับปรุงฐานข้อมูลแบ็กเอนด์เพื่อสะท้อนการเปลี่ยนแปลงเหล่านั้น


2

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

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

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

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

หวังว่าข้อมูลที่ให้ไว้จะช่วยได้


2

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


0

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


0

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

  • อะแดปเตอร์
  • เจลทำความสะอาด
  • ตรวจสอบ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.