Internet Server API (ISAPI) یک API است که اجازه توسعه و گسترش قابلیتهای موجود در وبسرور MS-IIS را برای برنامهنویسان فراهم می کند، تا جایی که ISAPI extensionها هیچ محدودیتی در دسترسی و استفاده از IIS ندارند. این API بهصورت اختصاصی برای کار با IIS طراحی شده اما وبسرورهای دیگر نظیر Apache نیز برای پشتیبانی از نرمافزاهای تحت وب نوشته شده به زبان ASP.Net از یک ماژول ISAPI استفاده میکنند. میتوان گفت ISAPI قابلیتهایی مشابه Common Gateway Interface (CGI) را در اختیار برنامهنویس قرار میدهد با این تفاوت که از CGI، ASP و فایلهای COM+ components سرعت اجرای بیشتری دارد.
ISAPI شامل دو بخش Extensions و Filters است که توسعه آن به کمک این دوبخش صورت میگیرد، با توجه به اینکه ISAPI یک سیستم برنامهنویسی سطح پایین -برای دستیابی به کارایی و سرعت اجرای بیشتر- است، کدنویسی ISAPI filters و ISAPI extensions تنها با زبان C یا ++C -یا هر زبان برنامهنویسی که بتوان خروجی استاندارد توابع C از آن گرفت- صورت میگیرد. در ادامه توضیح مختصری در باره این دو بخش و روش فعالسازی آنها در MS-IIS گفته خواهد شد.
ISAPI Extensions:
ISAPI Extensions برنامههایی کاربردی هستند که به کلیهی قابلیتهای IIS دسترسی کامل و جامع دارند، و در جهت مدیریت و توسعه IIS استفاده میگردند. از مزایایی این Extensionها میتوان به سرعت اجرا بالا و پردازش سریع به دلیل کدهای کامپایل شده آن اشاره کرد.
همانطور که در تصویر فوق مشاهده مینمائید برقراری ارتباط بین Extension و IIS از طریق یک اشاره گرِ نوع ECB، یا Extension Control Block است. بطور خلاصه ISAPI extension یک DLL منظم (regular) میباشد که از سه تابع زیر جهت برقراری ارتباط با وبسرور استفاده میکند.
- GetExtensionVersion
- HttpExtensionProc
- TerminateExtension (optional)
هنگامی که Client (سرویسگیرنده) در خواستی را به وبسرور ارسال میکند، چنانچه درخواست شامل فایلهای ایستا مانند HTML، JS، تصاویر و غیره باشد، IIS خود درخواست را پردازش و پاسخ را به سرویسگیرنده بازمیگرداند، در غیر اینصورت با توجه به نوع فایلِ پویا، درخواست به ISAPI dll مربوط تحویل داده میشود، به عبارت دیگر DLL مورد نظر بصورت یکتابع و با آرگومانهای خاص توسط IIS فراخوانی میگردد. بهعنوان مثال پردازش درخواستهای ارسال شدهی صفحات ASP، توسط ISAPI extensionای به نام asp.dll انجام میگیرد.
ISA درخواست ارسال شده از سمت کاربر را پردازش کرده و محتوا را بهعنوان پاسخ ارائه و یا آنرا در بانکاطلاعاتی ذخیره میکند، وبسرور اکستنشن (Web server extensions) اینقابلیت را دارد که از اطلاعات ذخیره شده برای ساخت پویای صفحات وب استفاده نموده و برای نمایش به سیستم کاربر ارسال کند، برنامهنویس میتواند قابلیتها و دادههای مورد نظر خود را به این صفحه ساختهشده افزوده و صفحهوب نهایی را با استفاده از HTTP و HTML به کاربر تحویل دهد.
ISAPI Filter:
وظیفه ISAPI Filter، فیلترینگ درخواستهایی که به وب سرور ارسال، و پاسخگوئی به event (رُخداد)هایی که از سمت IIS ارسال میشود، است. بهعنوان مثال ISAPI Filter میتواند اطلاعاتی آماری درباره درخواستهای http تهیه و در یک بانکاطلاعاتی ذخیره کند که حکم یک نوع Log را خواهد داشت، و یا ساختارورودی فایلهای فیزیکی را کنترل کند.
برخی از ویژگی هایی که با ISAPI Filter انجام میشود به شرح زیر است:
- تغییر اطلاعات درخواستی (URLها و یا headerها) ارسال شده توسط کاربر.
- کنترل فایل فیزیکی متصل به آدرس URL.
- اعمال تغییرات و تجزیه و تحلیل درخواست بعد از اتمام فرآیند احراز هویت.
- استفاده از HttpModule برای انجام بازنویسی آدرس.
- اجرای پردازشهای دلخواه در خصوص پاسخهایی که با Access Denied مواجه میشوند.
- اجرای پردازش هنگامی که درخواست کامل می شود.
- اجرای پردازش هنگامی که ارتباط سرویسگیرنده و سروردهنده قطع میشود.
- کنترل نام کاربری و رمز عبور با سیستم احراز هویت Basic یا Anonymous.
- تهیه گزارشات خاص و آنالیز ترافیک.
- مدیریت رمزنگاری و فشرده سازی.
- اجرا نمودن authentication دلخواه.
فعال سازی ISAPI در Windows Server 2008 R2:
- ابتدا از منوی 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 را وارد کنید.
برای مطالعه بیشتر میتوانید به Microsoft MSDN مراجعه نمایید.