وب سرور IIS
ممکن است برای بسیار از کاربران ابهاماتی در مورد وب سرور IIS وجود داشته باشد. در این پست قصد داریم اطلاعات کاملی در مورد وب سرور IIS در اختیار شما کاربران عزیز قرار دهیم. امیدواریم این مقاله آموزشی برای شما مفید و کاربردی باشد. با ما همراه باشید.
در این مقاله برای شما شیوه های گسترش یا Extend کردن وب سرور IIS با بهره گیری از Extension های آن برای بالا بردن کارایی های آن را توضیح خواهیم داد. خوب برای اینکه کارایی های IIS را گسترش دهیم شیوه های متعددی وجود دارد که از آن جمله می توان به بهره گیری از ISAPI Extension ها ، ISAPI Filter ها و ضمناً CGI و ضمناً ASP و PHP اشاره کرد. در آغاز این مقاله ابتدا به بازبینی ماهیت Extension و منظور از بکار بردن کلمه Extension برای IIS اشاره می کنیم و سپس به معرفی ISAPI Extension و ISAPI Filter می رسیم ، در این بخـش به فرق های میـان Filter ها و Extension ها را توضیح خواهیم داد . در نهایت کمی در زمینه CGI و سایـر Extension های موجود حرف خواهیم نمـود و بصورت خاص در زمینه ASP.NET و PHP توضیحاتی را عرضه می دهیم . در همینجا متذکر می شوم که این مقاله برای معرفی این توانایی ها است و در آن چیزی در زمینه شیوه برنامه نویسی و کد نویسی برای Extension ها اشاره نشده هست ، صرفا هدف معرفی ماهیت این موجودیت ها در IIS است .
Extension در IIS به چه معناست ؟
در اینجا احتمالا برای شما هم این سئوال پیش بیاید که اصلا Extension چیست و در IIS به چه معناست ؟ جذاب اینجاست که با اینکه چند وقتی در اینترنت و چندین کتاب مختلـف در زمینه مفهوم Extension جستجوهایی انجام دادم ولی در هیچکدام تعریف درستی از Extension عرضه داده نشده بود . ولی در نهایت به یک تعریف و مثال برای باز کردن مفهوم Extension ها در IIS رسیدم ، Extension ها ابزارهای جانبی می باشند که به وب سرور IIS این توانایی را می دهند که امکانات ی بیشتر از آنچه که بصورت پیشفرض برایش تعریف شده داشته باشد ، این مثال را می توان به سیستم علت windows ربط داد ، شما وقتی که سیستم علت windows را خریداری می نمایید ( اما نه از سوپر مارکت بلکه از نمایندگی مایکروسافت ) ابزارهایی که بر روی آن وجود دارند یک سری امکانات پیشفرض را به شما عرضه می دهند ، برای مثال ابزار WordPad برای تایپ مطالب ، ابزار Paint برای کشیدن نقاشی یا طرح و …. در بسیاری اوقات این ابزارها کار شما را راه می اندازند و شما نیازی به ابزار جانبی نخواهید داشت ، ولی بعضـی اوقات نیازهای شما فراتر از آن چیزی هست که windows در اختیار شما قرار می دهد پس مجبور می شوید که یک نرم افزار تخصصی را در این زمینه خریداری نمایید که اما با سیسنم علت windows شما هماهنگی دارد ، برای مثال به جای بهره گیری از WordPad از Office Word بهره گیری می نمایید . این دقیقا همـان چیزی هست که در زمینه Extension ها در IIS وجود دارد ، شما برای اینکه بتوانید از امکانات پیشرفته IIS بهره گیری نمایید از Extension هایی که برای اینکار تهیـه شـده اند بهره گیری می نمایید ، اما بعضـی از این Extension ها در خود IIS بصورت پیشفرض موجود می باشند و بعضـی دیگر می بایست بر روی آن نصب شده و یا برای آن کدنویسی شوند. Extension ها را می توان به نوعی ماژول های IIS نیز عنوان نمـود ، شما چنان چه بخواهید به امکانات IIS چیزی اضافه نمایید ، برای IIS یک Extension تازه می نویسید.
ISAPI چیست ؟
در پاراگراف قبلی شما مفهوم یک Extension برای IIS را متوجه شدید ، ولی پیش از اینکه برای شما ISAPI Extension را تشریح کنیم مناسـب تر هست بدانیم که ISAPI چیست ؟ کلمه 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 برای windows کامپایل شده و در وب سرور 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 ها یک مرور اولیه بر روی تقاضـای ها انجام می دهند.
خوب در اینجا دقت نمایید که چنان چه تقاضـای کلاینت یک تقاضـای صفحه وب استاتیک باشد هیچطور نیازی به انجام پردازش نمی بـاشد و 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 مشاهده نمایید .
خب دوستان به انتهای مقاله آموزشی وب سرور IIS رسیدیم . از توجه شما به این نوشته سپاسگزاریم. درصورتی که به اطلاعاتی در مورد سرور اختصاصی و هاستینگ نیاز دارید کلیک کنید.