با این کلمه رایج رایج آشنا شوید و یاد بگیرید که چگونه می توانید از میان افزار در پروژه های خود استفاده کنید.
خلاصه عناوین
- Middleware به معنای چیزهای زیادی است
- Middleware چگونه کار می کند؟
- انواع مختلف میان افزار
- استفاده از Middleware در توسعه نرم افزار
- چرا Middleware مفید است؟
تعاریف کلیدی
- Middleware پروتکلهای ساختار یافته را برای اتصال برنامهها، سادهسازی توسعه و امکان اتصال کارآمد فراهم میکند.
- میانافزار امکان انتقال سریعتر تغییرات را فراهم میکند و ابزارهای محل کار به راحتی قابل دسترسی است.
- میانافزار شکلی از ماژولار بودن است که به همه اشکال برنامهنویسی، از سطح بالا تا سطح پایین، سود میرساند.
ممکن است شنیده باشید که مردم از اصطلاح “Middleware” در زمینه های مختلف استفاده می کنند و تعجب کرده اید که آنها در مورد چه چیزی صحبت می کنند. مجموعه گسترده و غنی از فناوریها و فرآیندهایی را که میتوان به آنها اشاره کرد، کشف کنید.
Middleware به معنای چیزهای زیادی است
Middleware یک اصطلاح انعطاف پذیر است که مردم از آن برای معانی مختلف استفاده می کنند. در گسترده ترین معنای ممکن، می توانید آن را به عنوان “برنامه هایی که در بین برنامه های دیگر اجرا می شوند” در نظر بگیرید. به عبارت دیگر، هر نرم افزاری که برای ارائه ورودی و پردازش خروجی خود به کد جداگانه وابسته است.
برخی از میانافزارها بهعنوان یک برنامه کاربردی کامل وجود دارند که دادهها را از حالتی به حالت دیگر، با پروتکلها و فرمتهای داده کاملاً تعریفشده برای کدهای دیگر، تبدیل میکنند. اما میانافزار همچنین میتواند به اندازه یک تابع واحد باشد و به مجموعهای از توابع دیگر که یک فریم ورک اجرا میکند متصل شود.
مانند بسیاری از نرمافزارها، میانافزار از مفهوم ماژولار بودن استفاده میکند: تجزیه یک فرآیند پیچیده به قطعات کوچکتر و قابل مدیریتتر.
Middleware چگونه کار می کند؟
میانافزار معمولاً به اندازه پروتکلها و رفتار تعریفشده عمومی قوی است. پروتکل های سختگیرانه برای ارتباط به برنامه نویسان اجازه می دهد تا نرم افزارهایی را بنویسند که استانداردها را رعایت کنند تا به درستی کار کنند.
یک سرور برنامه وب به عنوان میان افزار عمل می کند تا تجربه کاربر از یک وب سایت را با مدل منطقی و داده ای که یک برنامه کاربردی و پایگاه داده پشتیبان ارائه می دهد، متصل کند. از آنجایی که به طور محکم با سیستمهایی که با آن ارتباط برقرار میکنند مرتبط نیست، میتوانید – حداقل در تئوری – یک سرور برنامه را با یک سرور سازگار بدون نیاز به بازنویسی کد برنامه یا بازسازی پایگاه داده خود تعویض کنید.
اجزای میانافزار اغلب از فناوریهایی مانند JSON، REST، XML و SOAP استفاده میکنند. اینها همه بالغ، محبوب و مبتنی بر متن هستند، که تعویض یا سفارش مجدد اجزا را بسیار آسانتر میکند. فرمت مبتنی بر متن و طیف وسیعی از مجموعه ابزارها نیز اشکال زدایی آسانتر و قابل اطمینان تری را ممکن می سازد.
انواع مختلف میان افزار
از آنجایی که این اصطلاح بسیار گسترده است، نمونههای مختلفی از میانافزار و کاربردهای آن وجود دارد. برخی از رایج ترین عبارتند از:
- کارگزاران پیام، که ساختاری را به ارتباطات بین فرآیندی اضافه می کنند.
- سرور برنامه وب و چارچوب های وب.
- موتورهای بازی، که رفتار پیشفرضی را ارائه میکنند که میتوانید از آن استفاده کنید، گسترش دهید یا جایگزین کنید.
- پلتفرم های پخش رویداد مانند آپاچی کافکا.
استفاده از Middleware در توسعه نرم افزار
یکی از ملموس ترین کاربردهای میان افزار از طریق چارچوب های وب است. اکثر فریمورکها یک محیط اصلی را ارائه میکنند که میتوانید آن را سفارشی کنید و مطابق با نیازهای خود گسترش دهید. این مدل اغلب شامل ارسال درخواست های HTTP از طریق یک سری توابع داخلی و سفارشی، به ترتیب تعریف شده، و بازگرداندن یک پاسخ HTTP در پایان است.
چارچوب Express.js از این مدل برای پشتیبانی از سفارشی سازی استفاده می کند. این مثال از یک تابع میان افزار نوشته شده در جاوا اسکریپت را در نظر بگیرید:
app.use('/user/:id', (req, res, next) => {
console.log('Request Type:', req.method)
next()
})
عملکرد بسیار ساده است:
- URL های خاصی را که با “/user/” شروع می شود، و سپس یک شناسه را پردازش می کند.
- نوع روش درخواست را که ممکن است GET، POST و غیره باشد ثبت می کند.
- سپس یک تابع ارائه شده را برای ادامه پردازش زنجیره توابع میان افزار فراخوانی می کند.
این فراخوان نهایی یک مرحله حیاتی در فرآیند میان افزار است و نشان می دهد که این رویکرد چقدر می تواند همه کاره باشد. تا زمانی که هر تابع میانافزار بهطور مستقل رفتار میکند، میتوانید آنها را در داخل و خارج عوض کنید و رفتار کل زنجیره را به راحتی تغییر دهید.
چارچوب PHP، لاراول، دارای تنظیمات میانافزار تقریباً یکسانی است. توجه کنید که چگونه فضای نام به صراحت این کلاس را به عنوان “Middleware” تعریف می کند.
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);
}
}
باز هم، نقش این کلاس خاص بسیار مشخص است: تنها کاری که انجام می دهد این است که درخواست را بررسی کند تا ببیند آیا حاوی یک نشانه است یا خیر. در این حالت، تابع میانافزار میتواند زنجیره را بشکند، از فراخوانی تابع بعدی خودداری کند و در عوض، یک تغییر مسیر ارسال کند. تابع تغییر مسیر یک شی Response مناسب را برمی گرداند که تابع میان افزار باید به عنوان بخشی از قرارداد امضای خود برگرداند.
این مثال نهایی نشان می دهد که جنگو، یک چارچوب وب مبتنی بر پایتون، چگونه میان افزار را مدیریت می کند. جنگو از اصطلاح «پلاگین» برای توصیف معماری میانافزار خود استفاده میکند، که مشابه سایر اصطلاحات مرتبطی است که ممکن است مانند «قلاب» یا «بازگشت به تماس» بشنوید. در اصل، این یک مورد دیگر از راهاندازی میانافزار است که انعطافپذیری را در طول یک فرآیند ساختاریافته فراهم میکند.
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",
]
جنگو رفتار پیشفرضی مانند کلاس CommonMiddleware را ارائه میکند که اکثر برنامهها از آن سود میبرند. دسترسی به برخی از عوامل کاربر “بد” را ممنوع می کند و عادی سازی URL را کنترل می کند. بسیار معمول است که میانافزارهای حیاتی و متمرکز بر امنیت در مراحل اولیه اجرا شوند، اما این انعطافپذیری به شما امکان میدهد تا سفارش را بسته به نیاز برنامه خود سفارشی کنید.
چرا Middleware مفید است؟
Middleware اتصال برنامه هایی را که برای اتصال طراحی نشده اند آسان تر می کند. این قابلیت برای ادغام آنها، همراه با پروتکل های قوی و ساختار یافته ای را فراهم می کند که توسط آنها می توانند ارتباط برقرار کنند.
در نتیجه، میان افزار مزایای مهمی دارد، از جمله:
- توسعه ساده برنامه و کاهش زمان ورود به بازار.
- اتصال کارآمد
- انتقال سریعتر تغییرات
- ابزارهای محل کار با دسترسی آسان
در نهایت، میانافزار شکلی از ماژولار بودن است، مفهومی که برای همه اشکال برنامهنویسی، از بالاترین سطح تا پایینترین، مفید است.