View Full Version : isapi
  
baran92
سه شنبه 29 مرداد 1392, 15:46 عصر
مفهوم isapi در iis چیست و چطور فعال می شه؟ با فعال شدن آن چه کارهایی می شه انجام داد؟
moferferi
سه شنبه 29 مرداد 1392, 23: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)
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.