ISAP چیست؟ در پاسخ به این سوال میتوان گفت ISAPI مثل یک پل ارتباطی بین وبسرور و برنامههای کاربردی عمل میکند. این فناوری یک رابط برنامهنویسی کاربردی (API) است که به شما اجازه میدهد تا برنامههای سفارشی خود را با سرور وب IIS مایکروسافت یکپارچه کنید. در این مقاله از بلاگ ایران سرور، بهطور کامل بررسی میکنیم ISAPI مخفف چیست، چه کاربرد و مزایایی دارد و تفاوت آن با CGI چیست.
ISAPI چیست؟
ISAPI مخفف Internet Server Application Programming Interface نوعی API است که اجازه توسعه و گسترش قابلیتهای موجود در وبسرور MS-IIS را برای برنامهنویسان فراهم میکند، طوریکه ISAPI extensionها هیچ محدودیتی در دسترسی و استفاده از IIS ندارند. از آنجا که ISAPI عمدتاً برای توسعه افزونهها و فیلترها در محیط وب سرور مایکروسافت طراحی شده، درک اینکه دقیقاً IIS چیست و چگونه کار میکند، برای درک بهتر ISAPI ضروری است.

اگر وبسرور قدرتمند و انعطافپذیر IIS را مانند یک خانه درنظر بگیریم، ISAPI مثل مجموعهای از ابزارها و قطعاتی است که به شما اجازه میدهد این خانه را شخصیسازی و بهبود دهید. با استفاده از ISAPI، میتوانید برنامههای کاربردی سفارشی ایجاد کنید که بهطور مستقیم با IIS تعامل داشته باشند و عملکردهای جدیدی را به آن اضافه کنند.
کاربرد و مزایای استفاده از ISAPI چیست؟
ISAPI یا ISAPI Applications بهصورت اختصاصی برای کار با IIS طراحی شده اما وبسرورهای دیگر نظیر Apache نیز برای پشتیبانی از نرمافزاهای تحت وب که با زبان ASP.Net نوشته شدند، از ماژول ISAPI استفاده میکنند.

مزایایی ISAPI چیست؟
اگر بخواهیم مزایای Isapi protocol را در چند خط خلاصه کنیم، میتوان گفت:
| مزیت ISAPI | توضیح کوتاه |
|---|---|
| سرعت و عملکرد بالا | بارگذاری بهصورت DLL و بدون نیاز به اجرای مجدد، سریعتر از برنامههای CGI عمل میکند. |
| قابلیت سفارشیسازی | امکان توسعه و افزودن ویژگیهای دلخواه به برنامههای وب توسط برنامهنویس را فراهم میکند. |
| افزایش کارایی سرور | با افزودن قابلیتهای جدید، عملکرد کلی سرور را بهبود میبخشد. |
اگر با ISAPI بهعنوان یک رابط سطح پایین سروکار دارید، شناخت ابزارهای مبتنی بر خط فرمان و محیط گرافیکی میتواند مفید باشد. پیشنهاد میکنیم مقاله تفاوت cli و gui را مطالعه کنید.
تفاوت CGI و ISAPI چیست؟
CGI (مخفف Common Gateway Interface) و ISAPI (مخفف Internet Server Application Programming Interface) دو روش برای پردازش درخواستهای وب هستند که هر کدام ویژگیها و مزایای خاص خود را دارند.
۱) CGI؛ پروتکل ارتباط با سرور با ایجاد فرایند جدید
CGI به عنوان یک پروتکل عمل کرده و به سرور اجازه میدهد با برنامههای خارجی ارتباط برقرار کند. هر بار که یک درخواست HTTP دریافت میشود، یک فرآیند جدید برای آن درخواست ایجاد میشود. باوجود این، اصلیترین محدودیت CGI این است که ایجاد یک فرآیند جدید برای هر درخواست، منابع زیادی را مصرف میکند و باعث کاهش عملکرد میشود؛ بهخصوص در سیستمعاملی مانند ویندوز که ایجاد فرآیند هزینهبر است.
۲) ISAPI؛ پروتکل ارتباط وبسرور با DLLها
ISAPI به جای ایجاد یک فرآیند جدید برای هر درخواست، از DLLها (کتابخانههای پیوند دینامیک) استفاده میکند که در فرایند سرور بارگذاری میشوند. این رویکرد باعث کاهش زمان بارگذاری و افزایش مقیاسپذیری میشود. ISAPI به دلیل نیاز نداشتن به ایجاد فرآیندهای جدید، از منابع کمتری استفاده کرده و معمولاً سریعتر از CGI عمل میکند. همین ویژگیها آن را برای توسعهدهندگان وب جذابتر کرده است.
در بررسی پاسخ این سوال که «تفاوت CGI و ISAPI چیست؟»، میتوان گفت ISAPI قابلیتهایی مشابه CGI در اختیار برنامهنویس قرار میدهد با این تفاوت که از CGI، برنامه ASP و فایلهای COM+ components سرعت اجرای بالاتری دارد.

انواع ISAPI چیست؟
اکنون که فهمیدیم «ISAPI مخفف چیست؟» سراغ انواع آن میرویم.انواع ISAPI شامل دو بخش Extensions و Filters است که توسعه آن به کمک این دوبخش صورت میگیرد. باتوجه به اینکه ISAPI یک سیستم برنامهنویسی سطح پایین محسوب میشود، کدنویسی ISAPI filters و ISAPI extensions فقط با زبان C یا ++C -یا هر زبان برنامهنویسی که بتوان خروجی استاندارد توابع C از آن گرفت، قابل انجام است. در ادامه مقاله ISAPI چیست، توضیح مختصری درباره این دو بخش و روش فعالسازی آنها در MS-IIS خواهیم گفت.

ISAPI Extension چیست؟
ISAPI Extensions برنامههایی کاربردی هستند که به تمام قابلیتهای IIS دسترسی کامل و جامع دارند و برای مدیریت و توسعه IIS استفاده میشود. از مزایای این Extensionها میتوان به سرعت اجرا بالا و پردازش سریع به دلیل کدهای کامپایل شده آن اشاره کرد.

ارتباط بین ISAPI extension و IIS
همانطور که در تصویر فوق مشاهده میکنید برقراری ارتباط بین Extension و IIS از طریق یک اشاره گرِ نوع ECB، یا Extension Control Block است. بهطور خلاصه ISAPI extension یک DLL منظم (regular) است که از سه تابع زیر جهت برقراری ارتباط با وبسرور استفاده میکند.
- GetExtensionVersion
- HttpExtensionProc
- TerminateExtension
هنگامی که Client (سرویسگیرنده) درخواستی را به وبسرور ارسال میکند، چنانچه درخواست شامل فایلهای ایستا مانند HTML، JS، تصاویر و غیره باشد، IIS خود درخواست را پردازش و پاسخ را به سرویسگیرنده برمیگرداند. درغیراینصورت، باتوجه به نوع فایلِ پویا، درخواست به ISAPI dll مربوط تحویل داده میشود. به عبارت دیگر DLL موردنظر بهصورت یکتابع و با آرگومانهای خاص توسط IIS فراخوانی میشود؛ برای مثال پردازش درخواستهای ارسال شده صفحات ASP، توسط ISAPI extensionای به نام asp.dll صورت میگیرد.

ISA (مخفف Internet server applications) درخواست ارسال شده از سمت کاربر را پردازش کرده و محتوا را بهعنوان پاسخ ارائه میدهد یا آنرا در بانکاطلاعاتی ذخیره میکند، وبسرور اکستنشن (Web server extensions) اینقابلیت را دارد که از اطلاعات ذخیره شده برای ساخت صفحات پویای وب استفاده نموده و برای نمایش به سیستم کاربر ارسال کند، برنامهنویس میتواند قابلیتها و دادههای موردنظر خود را به این صفحه ساختهشده اضافه کرده و صفحهوب نهایی را با استفاده از HTTP و HTML به کاربر تحویل دهد.
ISAPI Filterها چیست؟
وظیفه ISAPI Filter، فیلترینگ درخواستهایی است که به وبسرور ارسال و پاسخگوئی به event (رُخداد)هایی که از سمت IIS ارسال میشود؛ برای مثال ISAPI Filter میتواند اطلاعاتی آماری درباره درخواستهای http تهیه و در یک بانکاطلاعاتی به عنوان Log ذخیره یا ساختار ورودی فایلهای فیزیکی را کنترل کند.

ویژگیهای ISAPI Filter چیست؟
برخی از ویژگی هایی که با ISAPI Filter انجام میشود، به شرح زیر است:
- مدیریت رمزنگاری و فشرده سازی
- تهیه گزارشات خاص و آنالیز ترافیک
- اجرا کردن authentication دلخواه
- اجرای پردازش هنگام تکمیل درخواست
- کنترل فایل فیزیکی متصل به آدرس URL
- استفاده از HttpModule برای انجام بازنویسی آدرس
- اجرای پردازش هنگام قطع ارتباط سرویسگیرنده و سروردهنده
- کنترل نام کاربری و رمز عبور با سیستم احراز هویت Basic یا Anonymous
- تغییر اطلاعات درخواستی (URLها و یا headerها) ارسال شده توسط کاربر
- اعمال تغییرات، تجزیه و تحلیل درخواست بعد از اتمام فرآیند احراز هویت
- اجرای پردازشهای دلخواه درخصوص پاسخهایی که با Access Denied مواجه میشوند
فعال سازی ISAPI در ویندوز سرور ۲۰۰۸ یا 2008R2
۱. ابتدا از منوی start، بخش Administrative Tools، گزینهی Server Manager را انتخاب کنید.

۲. از بخش Roles ، گزینهی Web Server (IIS) را انتخاب کنید.
۳. در بخش Role Services روی گزینه Add Role Services کلیک کنید. سپس گزینههای ISAPI Extensions و ISAPI filter را انتخاب کرده تا فعال گردند.

۴. حال روی کلید install کلیک کنید.
چگونگی اضافه نمودن ISAPI filter در IIS:
۱. ابتدا از منوی start، بخش Administrative Tools، روی گزینه Internet Information Services (IIS) کلیک نمایید.

۲. وبسایتی را که میخوهید تنظیمات مربوط به ISAPI Filter برای آن انجام شود، انتخاب کنید.
۳. در صفحه اصلی روی ISAPI Filters دابل کلیک کنید.

۴. حال از بخش Actions روی گزینه Add کلیک کنید.
۵. در بخش filtername نام دلخواه و در قسمت Executable مسیر فایل dll را وارد کنید.
در توسعه افزونههای ISAPI، امنیت یکی از فاکتورهای حیاتی است. یکی از اولین گامها برای ایمنسازی سرور، نصب ssl در iis است که نحوه پیادهسازی آن را میتوانید در این راهنما ببینید.
فعال سازی ISAPI در ویندوز سرور ۲۰۱۲ یا ۲۰۱۲ R2
تا این قسمت از مقاله فهمیدیم ISAPI مخفف چیست؟ و چه کاربردی دارد. اکنون سراغ فعالسازی آن میرویم. برای استفاده از قابلیتهای ISAPI در سرور IIS 7 و نسخههای جدیدتر، ابتدا باید ماژولهای مربوطه را نصب کنید. این ماژولها به شما اجازه میدهند تا از برنامههای ISAPI در سرور خود استفاده کنید.
- در قسمت Taskbar روی Server Manager کلیک کنید.
- به منوی Manage بروید و سپس گزینه Add Roles and Features را انتخاب کنید.
- در قسمت Add Roles and Features ویزارد روی Next کلیک کنید. نوع نصب را انتخاب کرده و دوباره روی Next بزنید. سپس سرور مقصد را انتخاب و روی Next کلیک کنید.
- در صفحه Server Roles، گزینههای زیر را انتخاب کنید:
- Web Server (IIS)
- Web Server
- Application Development
- سپس ISAPI Extensions را بزنید.

۴. روی Next کلیک کنید و در صفحه تأیید نصب، گزینه Install را انتخاب کنید.
۵. پس از اتمام نصب، Close را بزنید.
فعال سازی ISAPI در ویندوز ۸ یا ۸.۱
در این بخش از مقاله ISAPI چیست، سراغ نحوه فعالسازی این قابلیت در ویندوز ۸ میرویم. برای فعالسازی ویژگی ISAPI در ویندوز ۸ یا ۸.۱، مراحل زیر را دنبال کنید:
- روی صفحه شروع، نشانگر ماوس را به گوشه پایین سمت چپ ببرید، روی دکمه شروع راستکلیک کنید و سپس گزینه «Control Panel» را انتخاب کنید.
- در کنترل پنل، روی «Programs and Features» کلیک کنید و سپس گزینه «Turn Windows features on or off» را بزنید.
- در لیست ویژگیها، «Internet Information Services» را انتخاب کنید. سپس به «World Wide Web Services» بروید.
- به «Application Development Features» بروید و گزینههای «ISAPI Extensions» را انتخاب کنید.

- روی «OK» کلیک کنید. درنهایت با کلیک روی «Close» پنجره بسته میشود.
ISAPI؛ راهی برای گسترش قابلیتهای وبسرور IIS
ISAPI چیست؟ پاسخ این سوال را بهطور کامل در مقاله بررسی کردیم. ISAPI به عنوان یک راهحل سریع و کارآمد برای پردازش درخواستهای وب شناخته میشود. برخلاف CGI که برای هر درخواست یک پروسه جدید ایجاد میکند، ISAPI از نخها (Threads) استفاده کرده که باعث کاهش مصرف منابع و افزایش سرعت پردازش میشود. این ویژگیها ISAPI را به گزینهای مناسب برای برنامههای کاربردی وب تبدیل کرده است. اگر میخواهید با دسترسی به تمامی قابلیتهای IIS و پردازش سریعتر درخواستها، تجربه کاربری بهتری از عملکرد سرور داشته باشید، استفاده از ISAPI گزینهای ایدهآل خواهد بود که به شما کمک میکند تا از حداکثر پتانسیل سرورهای خود استفاده کنید. اگر سوالی در این زمینه دارید، مشتاق پاسخگویی سریع به شما هستیم. کافیاست سوالتان را انتهای همین مقاله بنویسید تا در سریعترین زمان ممکن راهنماییتان کنیم.
سوالات متداولی که شما میپرسید؟
ISAPI .۱ چیست؟
ISAPI (مخفف Internet Server Application Programming Interface) مجموعه API است که به توسعهدهندگان اجازه میدهد تا قابلیتهای سرورهای IIS (مخفف Internet Information Services) را گسترش دهند. این فناوری شامل دو نوع اصلی برنامه، یعنی Extensions و Filters است.
۲. تفاوت بین ISAPI Extensions و ISAPI Filters چیست؟
ISAPI Extensions برنامههایی هستند که بهطور مستقیم در IIS اجرا میشوند و به درخواستهای HTTP پاسخ میدهند. درحالی که ISAPI Filters برای تغییر یا بهبود عملکرد IIS طراحی شدند و هر درخواست را بررسی میکنند.
۳. چه زبانهایی برای توسعه ISAPI استفاده میشود؟
برنامههای ISAPI با هر زبانی که امکان صدور توابع استاندارد C را دارد، مانند C، C++ و Delphi نوشته میشوند.
۴. آیا ISAPI با Apache قابل استفاده است؟
بله، ISAPI از طریق ماژول mod_isapi در Apache نیز قابل استفاده است و این امکان را فراهم میکند تا برنامههای نوشته شده برای IIS در Apache نیز اجرا شوند.
منابع:


