Middleware چیست؟ در ادامه بیشتر بخوانید.
. Middleware پروتکلهای ساختار یافته را برای اتصال برنامهها، سادهسازی توسعه و امکان اتصال کارآمد فراهم میکند.
. Middleware امکان انتقال سریعتر تغییرات را فراهم میکند و ابزارهای محل کار به راحتی قابل دسترسی است.
. Middleware نوعی از ماژولار بودن است که به همه انواع برنامهنویسی، از سطح بالا تا سطح پایین، سود میرساند.
ممکن است شنیده باشید که مردم از اصطلاح “Middleware” در زمینه های مختلف استفاده می کنند و تعجب کرده اید که آنها در مورد چه چیزی صحبت می کنند. مجموعه گسترده و غنی از فناوریها و فرآیندهایی را که میتوان به آنها اشاره کرد، کشف کنید.
Middleware به معنای چیزهای زیادی است
Middleware یک اصطلاح انعطاف پذیر است که مردم از آن برای معانی مختلف استفاده می کنند. در گسترده ترین معنای ممکن، می توانید آن را به عنوان “برنامه هایی که در بین برنامه های دیگر اجرا می شوند” در نظر بگیرید. به عبارت دیگر، هر نرم افزاری که برای ارائه ورودی و پردازش خروجی خود به کد جداگانه وابسته است.
برخی از Middleware ها بهعنوان یک برنامه کاربردی کامل وجود دارند که دادهها را از حالتی به حالت دیگر تبدیل میکنند، با پروتکلها و فرمتهای داده به خوبی تعریف شده برای استفاده از کدهای دیگر، اما Middleware همچنین میتواند به اندازه یک تابع واحد باشد و به مجموعهای از توابع دیگر که یک فریم ورک اجرا میکند متصل شود.
مانند بسیاری از نرمافزارها، Middleware از مفهوم ماژولار بودن استفاده میکند: تجزیه یک فرآیند پیچیده به قطعات کوچکتر و قابل مدیریتتر.
Middleware چگونه کار می کند؟
Middleware معمولاً به اندازه پروتکلها و رفتار تعریفشده عمومی قوی است. پروتکل های سختگیرانه برای ارتباط به برنامه نویسان اجازه می دهد تا نرم افزارهایی بنویسند که استانداردها را رعایت کنند تا به درستی کار کنند.
یک سرور برنامه وب به عنوان Middleware عمل می کند تا تجربه کاربر از یک وب سایت را با مدل منطقی و داده ای که یک برنامه کاربردی و پایگاه داده پشتیبان ارائه می دهد، متصل کند. از آنجایی که به طور محکم با سیستمهایی که با آن ارتباط برقرار میکنند مرتبط نیست، میتوانید – حداقل در تئوری – یک سرور برنامه را با یک سرور سازگار بدون نیاز به بازنویسی کد برنامه یا بازسازی پایگاه داده خود تعویض کنید.
اجزای Middleware اغلب از فناوریهایی مانند JSON، REST، XML و SOAP استفاده میکنند. اینها همه بالغ، محبوب و مبتنی بر متن هستند، که تعویض یا سفارش مجدد اجزا را بسیار آسانتر میکند. فرمت مبتنی بر متن و طیف وسیعی از مجموعه ابزارها نیز اشکال زدایی آسانتر و قابل اطمینان تری را ممکن می سازد.
انواع مختلف Middleware
از آنجایی که این اصطلاح بسیار گسترده است، نمونههای مختلفی از Middleware و کاربردهای آن وجود دارد. برخی از رایج ترین عبارتند از:
. کارگزاران پیام، که ساختاری را به ارتباطات بین فرآیندی اضافه می کنند.
.سرور برنامه های وب و چارچوب های وب.
. موتورهای بازی، که رفتار پیشفرضی را ارائه میکنند که میتوانید از آن استفاده کنید، گسترش دهید یا جایگزین کنید.
. پلتفرم های پخش رویداد مانند آپاچی کافکا.
استفاده از Middleware در توسعه نرم افزار
یکی از ملموس ترین کاربردهای میان افزار (Middleware) از طریق چارچوب های وب است. اکثر فریمورکها یک محیط اصلی را ارائه میکنند که میتوانید آن را سفارشی کنید و مطابق با نیازهای خود گسترش دهید. این مدل اغلب شامل ارسال درخواست های HTTP از طریق یک سری توابع داخلی و سفارشی، به ترتیب تعریف شده، و بازگرداندن یک پاسخ HTTP در پایان است.
چارچوب Express.js از این مدل برای پشتیبانی از سفارشی سازی استفاده می کند. این مثال از یک تابع میان افزار نوشته شده در جاوا اسکریپت را در نظر بگیرید:
app.use('/user/:id', (req, res, next) => {
console.log('Request Type:', req.method)
next()
})
عملکرد بسیار ساده است:
1. URL های خاصی را که با “/user/” شروع می شود، و سپس یک شناسه را پردازش می کند.
2. نوع روش درخواست را که ممکن است GET، POST و غیره باشد ثبت می کند.
3. سپس یک تابع ارائه شده را برای ادامه پردازش زنجیره توابع میان افزار فراخوانی می کند.
این فراخوان نهایی یک مرحله حیاتی در فرآیند میان افزار (Middleware) است و نشان می دهد که این رویکرد چقدر می تواند همه کاره باشد. تا زمانی که هر تابع میانافزار بهطور مستقل رفتار میکند، میتوانید آنها را در داخل و خارج عوض کنید و رفتار کل زنجیره را به راحتی تغییر دهید.
چارچوب PHP، لاراول، دارای تنظیمات میانافزار (Middleware) تقریباً یکسانی است. توجه کنید که چگونه فضای نام به صراحت این کلاس را به عنوان “Middleware” تعریف می کند.
namespaceApp\Http\Middleware;useClosure;
useIlluminate\Http\Request;
useSymfony\Component\HttpFoundation\Response;
classEnsureTokenIsValid
{
/**
* Handle an incoming request.
*/
publicfunctionhandle(Request $request, Closure $next): Response
{
if ($request->input('token') !== 'my-secret-token') {
return redirect('home');
}
return $next($request);
}
}
باز هم، نقش این کلاس خاص بسیار خاص است: تنها کاری که انجام می دهد این است که درخواست را بررسی کند تا ببیند آیا حاوی یک نشانه است یا خیر. در این حالت، تابع میانافزار میتواند زنجیره را بشکند، از فراخوانی تابع بعدی خودداری کند و در عوض، یک تغییر مسیر ارسال کند. تابع تغییر مسیر یک شی Response مناسب را برمی گرداند که تابع میان افزار باید به عنوان بخشی از قرارداد امضای خود برگرداند.
این مثال نهایی نشان می دهد که جنگو، یک چارچوب وب مبتنی بر پایتون، چگونه میان افزار را مدیریت می کند. جنگو از اصطلاح «پلاگین» برای توصیف معماری میانافزار خود استفاده میکند، که شبیه به سایر اصطلاحات مرتبطی است که ممکن است مانند «قلاب» یا «بازگشت به تماس» بشنوید. در اصل، این یک مورد دیگر از راهاندازی میانافزار است که انعطاف پذیری را در طول یک فرآیند ساختاریافته فراهم میکند.
defsimple_middleware(get_response):
# One-time configuration and initialization.
defmiddleware(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",
]
جنگو رفتار پیشفرضی مانند کلاس CommonMiddleware را ارائه میکند که اکثر برنامهها از آن سود میبرند. دسترسی به برخی از عوامل کاربر “بد” را ممنوع می کند و عادی سازی URL را کنترل می کند. بسیار معمول است که میانافزارهای حیاتی و متمرکز بر امنیت در مراحل اولیه اجرا شوند، اما این انعطافپذیری به شما امکان میدهد تا سفارش را بسته به نیاز برنامه خود سفارشی کنید.
چرا Middleware مفید است؟
Middleware اتصال برنامه هایی را که برای اتصال طراحی نشده اند آسان تر می کند. این قابلیت برای ادغام آنها، همراه با پروتکل های قوی و ساختار یافته ای را فراهم می کند که توسط آنها می توانند ارتباط برقرار کنند.
در نتیجه، میان افزار Middleware مزایای مهمی دارد، از جمله:
. توسعه ساده برنامه و کاهش زمان ورود به بازار.
. اتصال کارآمد.
. انتقال سریعتر تغییرات.
. ابزارهای محل کار با دسترسی آسان.
در نهایت، میانافزار(Middleware) شکلی از ماژولار بودن است، مفهومی که برای همه اشکال برنامهنویسی، از بالاترین سطح تا پایینترین، کاربرد دارد.