PDA

View Full Version : isapi



baran92
سه شنبه 29 مرداد 1392, 14:46 عصر
مفهوم isapi در iis چیست و چطور فعال می شه؟ با فعال شدن آن چه کارهایی می شه انجام داد؟

moferferi
سه شنبه 29 مرداد 1392, 22:19 عصر
کلمه ISAPI مخفف شده کلمه Internet Server Application Programming Interface است و در واقع یک نوع API است که به برنامه نویس ها اجازه توسعه و گسترش امکانات و قابلیت های موجود در وب سرور IIS را می دهد. ISAPI بصورت ویژه برای کارکردن و کاربرد در IIS طراحی شده است اما صرفا به این وب سرور محدود نمی شود و وب سرورهای دیگر نظیر Apache نیز برای اینکه بتوانند از نرم افزارهای کاربردی تحت وب نوشته شده به زبان ASP.NET پشتیبانی کنند از یک ماژول ISAPI استفاده می کنند.

وب سرور مایکروسافت یا همان IIS از مجموعه ای از زیر برنامه ها یا Sub-Application ها تشکیل شده است که بسیار بسیار قابل تنظیم و تغییر هستند. ASP.NET یکی از همین قسمت های IIS محسوب می شود که به یک برنامه نویس این اجازه را می دهد که بتواند نرم افزارهای کاربردی تحت وب یا وب سایت های خود را با زبان برنامه نویسی مورد علاقه خود ( VB.NET,C#,F# ) که به وسیله تکنولوژی Microsoft .NET پشتیبانی می شود بنویسند. اما این زبان های برنامه نویسی ، زبان های سطح بالا هستند . ISAPI یک سیستم برنامه نویسی بسیار سطح پایین تر از اینها می باشد که به برنامه نویس امکان کدنویسی کدهایی با کارایی و سرعت اجرا بالاتر و البته سادگی کمتر را می دهد. نرم افزارهایی که برای توسعه یا Extend کردن IIS مورد استفاده قرار میگیرند و در واقع به ISAPI Extension معروف هستند با زبان هایی مانند C و یا C++ نوشته می شوند.

نرم افزارهای کاربردی ISAPI یا ISAPI Applications


ISAPI از دو جزء تشکیل شده است ، Extensions و Filters . اینها تنها مواردی هستند که می توان یا استفاده از ISAPI Programming آنها را توسعه و برایشان کد نویسی کرد. هر یک از این دو مورد بایستی ابتدا در قالب یک فایل DLL برای ویندوز کامپایل شده و در وب سرور IIS ثبت یا Register شوند تا بتوان از آنها در IIS استفاده کرد.ISAPI Application ها را می توان با استفاده از هر زبان برنامه نویسی که بتوان از آن خروجی استاندارد توایع C را گرفت ، می توان برنامه نویسی کرد که در اینجا معمولا به زبانهای C و C++ و Delphi نوشته می شوند. یک سری کتابخانه یا Library در زبان های برنامه نویسی وجود دارند که امکانات ویژه ای برای برنامه نویس برای ISAPI ها قراهم کرده اند که از آن جمله می توان به Intraweb در Delphi اشاره کرد. باز هم تاکید میکنم که بحث ما در این مقاله برنامه نویسی برای ISAPI ها نیست بلکه صرفا می خواهیم دیدگاهی نسبت به این Extension در IIS داشته باشید.

ISAPI Extension در IIS چیست ؟


ISAPI Extensionها در واقع نرم افزارهایی هستند که بر روی IIS قرار دارند ، آنها به تمام فعالیت ها و کارکردها و امکاناتی که توسط IIS ارائه می شوند دسترسی کامل دارند . ISAPI Extension ها در قالب فایل های DLL بر روی IIS لود می شوند و در نهایت توسط خود وب سرور IIS کنترلر می شوند. کلاینت ها همانطور که به یک صفحه وب استاتیک HTML دسترسی پیدا می کنند می توانند به ISAPI Extension ها نیز دسترسی پیدا کنند. ISAPI Extension ها می توانند در قالب مدیریت کردن پسوند یک فایل در وب سرور ، یک پوشه در وب سرور و یا حتی یک سایت کامل در وب سرور بکارگیری شوند . ASP ، ASP.NET ، ColdFusion ، Perl ISAPI و PHP از نمونه ISAPI Extension های شناخته شده ای هستند که در IIS پشتیبانی می شوند.

ISAPI Filter ها در IIS چیست ؟


ISAPI Filter ها برای تغییر دادن و بالابردن کارایی فعالیت ها و سرویس های IIS استفاده می شوند. همانطور که از نام این نوع Extension مشخص است برای Filter کردن درخواست هایی که به وب سرور ارسال می شوند استفاده می شوند . آنها همیشه بر روی وب سرور IIS فعال هستند و تمامی درخواست ها را با توجه به قوانینی که برای آنها تعیین شده است Filter می کنند مگر اینکه درخواست مورد نظر نیازمند فرآیند پردازشی خاصی باشد. Filter ها به گونه ای برنامه نویسی می شوند که می توانند هم ترافیک ورودی و هم ترافیک خروجی را آزمایش و تغییر دهند. Filter ها در قالب فایل های DLL به IIS معرفی و در آن ثبت می شوند و IIS می تواند آنها در در دو سطح Site و Server اعمال کند . به سطح Server در اصطلاح Global Level هم گفته می شود و هر چیزی که در این سطح اعمال شود بر روی کلیه سایت های موجود بر روی سرور اعمال خواهد شد. Filter ها زمانی شروع به کار می کنند که یک Worker Process ایجاد شود و در همین لحظه شروع به گوش دادن به درخواست هایی که برای سایت ای که بر روی آن نصب شده است می کند. وظایف معمولی که توسط ISAPI Filter ها انجام می شود به شرح زیر است :



اعمال تغییرات در داده های درخواستی توسط کلاینت مثل URL ها و Header ها
کنترل کردن فایل فیزیکی که به آدرس URL متصل شده است
کنترل نام کاربری و رمز عبوری که توسط سیستم احراز هویت Basic یا Anonymous استفاده می شود
اعمال تغییرات و تجزیه و تحلیل درخواست بعد از اتمام فرآیند احراز هویت
اعمال تغییرات در پاسخی که به سمت کلاینت بازگردانی می شود
اجرای پردازش های دلخواه در خصوص پاسخ هایی که با Access Denied مواجه می شوند
اجرای پردازش در زمانی که درخواست کلاینت کامل می شود
اجرای پردازش در زمانی که ارتباط بین کلاینت با سرور بسته می شود
گرفتن لاگ های خاص و تجزیه و تحلیل ترافیک
انجام دادن ساختار احراز هویت دلخواه
مدیریت کردن ساختار رمزنگاری و فشرده سازی


ساختار کارکرد ISAPI Filter ها و ISAPI Extension ها چگونه است ؟


خوب برای اینکه ساختار کارکرد ایندو را به خوبی درک کنیم ابتدا به بررسی تفاوت بین ایندو می پردازیم . خوب در اولین مرحله این فرآیند یک کلاینت به وب سرور یک درخواست وب تحت شبکه ارسال می کند و این درخواست توسط Kernel Mode Listener یا همان Http Listener دریافت می شود. در اینجا Kernel Mode Listener بررسی می کند که درخواست دریافت شده اجازه استفاده از منابع کدامیک از وب سایت های موجود در IIS را دارد ، سپس بررسی می کند که در این وب سایت از کدامیک از Application pool های موجود و همچنین worker Process های فعال استفاده می شود و در نهایت درخواست رسیده از طرف کلاینت را در درون صف پردازشی Worker Process یا Process Queue قرار می دهد. خوب در این مرحله بعد از اینکه نوبت به پردازش این درخواست رسید ، Worker Process مورد نظر درخواست را دریافت کرده و در اینجاست که ISAPI Filter مربوطه به این درخواست در قالب یک فایل اجرایی شروع به کار می کند . خوب همانطور که اشاره شد Filter ها در IIS می توانند درخواست ها را دریافت و آنها را تغییر دهند ، برای مثال آنها می توانند چهره URL ها را عوض کنند و یا در برخی اوقات می توانند اطلاعات مربوط به Cookie های موجود در درخواست ها را تحلیل کرده و اطلاعات مورد نظر خود را از آن دریافت کنند. توجه کنید که در این مرحله هیچگونه پردازشی بر روی درخواست انجام نشده است و در واقع این یک مرحله قبل از انجام پردازش محسوب می شود . در واقع در اینجا filter ها یک مرور اولیه بر روی درخواست ها انجام می دهند.


http://www.itpro.ir/img/690124942.png


خوب در اینجا توجه کنید که اگر درخواست کلاینت یک درخواست صفحه وب استاتیک باشد هیچگونه نیازی به انجام پردازش نیست و IIS می داند که درخواست را بایستی به کدامیک از وب سایت های موجود ارسال کند. اما اگر درخواست کلاینت برای وب سایت های داینامیک بود که با استفاده از زبان های PHP یا ASP نوشته شده اند و دارای Managed Code باشند ، در اینجاست که درخواست ها نیاز به پردازش دارند و درخواست به Extension ها ارسال می شود تا فرآیند پردازشی آنها انجام شود. خوب در اینجا فرض کنید که در URL آدرس دارای پسوند PHP می باشد ، در اینجا بعد از انجام عملیات اولیه توسط Filter ها درخواست به Extension ای که مربوط به پردازش پسوند های PHP است ارسال می شود و این Extension با توجه به دستوراتی که به آن داده اند پردازش را بایستی بر روی این درخواست انجام دهد . بعد از اینکه فرآیند پردازشی توسط Extension انجام شد ، درخواست مجددا به سمت IIS ارسال می شود و IIS نیز درخواست کلاینت را پاسخگویی می کند.ممکن است در یک فرآیند درخواست چندین Extension همزمان فراخوانی شوند و این کاملا به نوع فایلی که توسط کلاینت درخواست شده است بستگی دارد. برای مثال ممکن است در یک درخواست یک صفحه ASP.NET فراخوانی شود که نیاز به Compression و همچنین لاگ برداری دارد ، در این زمان سه Extension همزمان برای انجام این فرآیند فراخوانی می شوند ، جالب اینجاست که شما می توانید ترتیب اجرای این Extensions ها را برای IIS مشخص کنید ، این مورد برای Filter ها نیز صادق می باشد. نکته مهمی که بایستی در نظر داشته باشید این است که همیشه Filter ها با زبان ISAPI نوشته می شوند اما Extension ها می توانند به زبان های مختلفی از جمله CGI ، ISAPI یا Fast CGI نوشته شوند.

منظور از CGI و Fast CGI در Extension های IIS چیست ؟


CGI مخفف کلمه Common Gateway Interface است و یک استاندارد برای ایجاد نرم افزارهای تحت وب در قالب فایل های اجرایی می باشد. فایل هایی که با استفاده از این استاندارد تولید می شوند به CGI Scripts یا ساده تر بگوییم CGI ها معروف هستند که معمولا با یک زبان اسکریپت نویسی نوشته می شوند. وب سرورهایی که از CGI ها پشتیبانی می کنند می توانند URL ها را به گونه ای ترجمه کنند که در نهایت درخواست ها به یک اسکریپت CGI اجرایی ختم شود. اگر دقت کرده باشید در ریشه پوشه های وب سروهای لینوکسی پوشه ای به نام cgi-bin وجود دارد ، تمامی فایل های اجرایی که در قالب CGI هستند برای مسائل امنیتی در این پوشه قرار می گیرند . همانطور که اسکریپت های اجرایی می توانند کارها را سریعتر انجام دهند به همان اندازه نیز می توانند خطرناک باشند ، تصور کنید که با استفاد از همین دستورات اجرایی CGI یک اسکریپت مخرب در وب سرور فراخوانی و اجرا شود . CGI به همین دلایل و همچنین بوجود آمدن زبان های برنامه نویسی وب جدید و امنیت بیشتر این زبان ها کم کم از استفاده افتاد و هم اکنون استفاده چندانی از این تکنولوژی در وب سرورها نمی شود ، هر چند که با وجود Extension های مربوط به CGI در وب سرور IIS این قابلیت وجود دارد که شما بتوانید از این اسکریپت ها استفاده کنید . اما نسل بعدی CGI به نام Fast CGI می باشد که این Extension که برای IIS هم وجود دارد همانند اسمش سریعتر از CGI های معمولی اجرا می شوند و قطعا بار کاری کمتری را بر روی وب سرور قرار می دهد .

استفاده از Extension ها در IIS


تا اینجا در خصوص تئوری های مباحثی همچون Extension ها ، ISAPI ، Filter ، CGI و ... صحبت کردیم ، اما این Extension ها و Filter ها در کجای وب سرور IIS قرار دارند و ما چگونه می توانیم به آنها دسترسی داشته و آنها را تغییر بدهیم ؟ همانطور که اشاره کردیم در این مقاله صرفا به موجودیت این موارد اشاره می کنیم و انجام هر گونه تغییرات اساسی در این خصوص نیازمند دانش فنی برنامه نویسی در این حیطه می باشد ، بنابراین صرفا به نمایش محل انجام تنظیمات آنها کفایت می کنیم . در تصویر پایین شما می توانید قسمت هایی همچون Modules ، ISAPI Filters ، ISAPI and CGI Restrictions ، CGI ، Handler Mappings ، Fast CGI Settings و ASP در کنسول وب سرور IIS مشاهده کنید .


http://www.itpro.ir/img/255486049.png


نتیجه


در این مقاله به بررسی مفاهیمی مثل ISAPI ، Extension ، Filter ، CGI ، Fast CGI و ... پرداختیم و کاملا با مفهوم آنها آشنایی پیدا کردیم ، در خصوص آموزش های فنی در این مبحث همانطور که اشاره شد ارتباط چندانی به بحث مدیریت وب سرور IIS ندارد و کاملا یک مبحث برنامه نویسی می باشد و به همین دلیل صرفا به محل قرار گیری آنها در IIS اشاره کردیم . در ادامه این سری مقالات با مفاهیم راه اندازی یک فایل سرور FTP آشنا خواهیم شد و به شما آموزش می دهیم که چگونه یک FTP Server بر روی وب سرور IIS راه اندازی کنید .

نویسنده : محمد نصیری
منبع : انجمن حرفه ای های فناوری اطلاعات ایران

لینک منبع (http://network.itpro.ir/articles/516/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%D8%B1-IIS--%D9%82%D8%B3%D9%85%D8%AA-%D9%BE%D9%86%D8%AC%D9%85-%E2%80%93-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-ISAPI-Extension--%D8%8C-ISAPI-Filter--%D8%8C-CGI-%D8%8C-ASP)