ISAPI چیست؟

isapi index
توسط

API سرور اینترنت (ISAPI) مجموعه‌ای از فراخوان‌های برنامه ویندوز آماده است که توسعه‌دهندگان و برنامه‌نویسان می‌توانند از آن برای ایجاد پیشرفت‌ها یا پسوندهای سفارشی برای سرورهای HTTP یا وب سرورهای سازگار با ISAPI استفاده کنند. این پیشرفت‌ها برنامه‌های افزودنی سرور اینترنت (ISA) و فیلترهای ISAPI نامیده می‌شوند که عملکردهایی مانند فراخوانی پایگاه داده و حتی برای ساخت صفحات وب به صورت پویا برای یک مشتری وب (مرورگر) برای نمایش ارائه می‌کنند.

Techopedia API سرور اینترنت

رابط برنامه نویسی برنامه سرور اینترنت نوشتن برنامه های پایگاه داده مانند یک سیستم ورودی برای فرم های سفارش یا برای یک کاتالوگ سفارشی را آسان تر می کند. با ISAPI، یک برنامه نویس می تواند اطلاعات یک کاربر را از طریق یک فرم HTML جمع آوری کند و سپس صفحه ای را که برای آن کاربر سفارشی شده است برگرداند.

ISAPI یک برنامه نویس را قادر می سازد تا دو نوع پسوند برای یک سرور بنویسد:

برنامه های کاربردی سرور اینترنتی (ISA)، که عملکردهای مشابه برنامه های CGI را ارائه می دهند، اما سریعتر در نظر گرفته می شوند زیرا به شکل کتابخانه های پیوند پویا (DLL) هستند، که در حافظه بارگذاری می شوند و نیازی به مکان یابی ندارند و دوباره مانند CGI خوانده می شوند. برنامه هایی که قابل اجرا در نظر گرفته می شوند.

فیلترهای ISAPI، که توسط یک وب سرور برای کمک به رویدادهای مختلف در روند پردازش یک درخواست HTTP داده شده مانند خواندن و نوشتن داده ها یا حتی خروجی ورودی های گزارش استفاده می شود. فیلترهای ISAPI می توانند عملکردهای دیگری را به سرور اضافه کنند مانند:
فشرده سازی
رمزگذاری
احراز هویت سفارشی
طرح های ورود به سیستم

ISAPI در مقایسه با CGI

مدل رابط برنامه نویسی برنامه سرور اینترنت (ISAPI) به عنوان جایگزین سریع تری برای رابط دروازه مشترک (CGI) توسعه داده شد. ISAPI چندین مزیت نسبت به CGI دارد، از جمله سربار کمتر، بارگذاری سریعتر و مقیاس پذیری بهتر. تفاوت اصلی بین مدل های برنامه نویسی CGI و ISAPI در نحوه پردازش پردازش است.

با CGI، سیستم برای هر درخواست یک فرآیند منحصر به فرد ایجاد می کند. هر بار که سرور HTTP درخواستی را دریافت می کند، فرآیند جدیدی را آغاز می کند. از آنجا که سیستم عامل باید تمام این فرآیندها را حفظ کند، CGI به منابع زیادی نیاز دارد. این محدودیت ذاتی توسعه برنامه های کاربردی اینترنتی پاسخگو با CGI را دشوار می کند.

با ISAPI، درخواست ها نیازی به فرآیند جداگانه ای ندارند. نخ ها برای جداسازی و همگام سازی آیتم های کاری استفاده می شوند که در نتیجه استفاده کارآمدتر از منابع سیستم می شود. برای اطلاعات بیشتر، ISAPI و معماری برنامه های کاربردی وب را ببینید.

پسوند ISAPI از چندین جهت دیگر با فایل اجرایی CGI متفاوت است. یک افزونه ISAPI کارهای زیر را انجام می دهد:

بیشتر داده های خود را از طریق عضو lpbData ساختار EXTENSION_CONTROL_BLOCK به جای خواندن داده ها از دسته ورودی استاندارد (STDIN) برای فرآیند دریافت می کند. برای هرگونه داده اضافی، برنامه افزودنی از عملکرد پاسخ به تماس ReadClient استفاده می کند.

به جای نوشتن در دسته خروجی استاندارد (STDOUT) برای فرآیند، داده‌ها را با استفاده از تابع تماس WriteClient به مشتری باز می‌فرستد.

از طریق ساختار EXTENSION_CONTROL_BLOCK به متغیرهای رایج CGI دسترسی دارد. برای متغیرهای دیگر، برنامه افزودنی تابع GetServerVariable را فراخوانی می کند. در یک فایل اجرایی CGI، این متغیرها با استفاده از getenv از جدول محیط بازیابی می شوند.

وضعیت تکمیل را با ارسال مستقیم سرصفحه با استفاده از تابع تماس WriteClient یا با فراخوانی HSE_REQ_SEND_RESPONSE_HEADER_EXServerSupportFunction، به جای نوشتن سرصفحه در STDOUT مشخص می کند.

درخواست ها را با سرصفحه Location: یا URL: هدایت می کند. اگر URL محلی است، برنامه افزودنی به جای نوشتن سرصفحه در STDOUT از ساختار HSE_REQ_SEND_URL استفاده می کند. اگر URL از راه دور یا ناشناخته باشد، برنامه افزودنی از HSE_REQ_SEND_URL_REDIRECT_RESP در عملکرد پاسخ به تماس ServerSupportFunction استفاده می کند. هنگامی که IIS درخواستی برای یک برنامه افزودنی خاص دریافت می کند، DLL را در حافظه بارگذاری می کند و در آنجا به درخواست های دیگر سرویس می دهد. هنگامی که IIS برنامه افزودنی را بارگیری می کند، تابع TerminateExtension برنامه افزودنی را در صورت وجود فراخوانی می کند. استفاده از TerminateExtension برای آزاد کردن منابعی که برنامه افزودنی ممکن است در طول اتصالات Load.Keep-Alive اولیه قفل یا تخصیص داده باشد، توصیه می شود.


پست های توصیه شده