ابتداء در مورد مزایای برنامه نویسی CGI صحبت خواهم کرد. مهمترین مزیت برنامه ریزی CGI این است که این برنامه، آخرین تکنولوژی محیط متقابل ( cross- platform ) است. این برنامه در سرویس دهنده های مبتنی بر ویندوز NT و نیز مبتنی بر UNIX (تقریبا با هر سرویس دهنده وب) کار می کند. بنابراین ، زمانی که برنامه های CGI را می نویسید، میتوانید مطمئن شوید که آنها قابل انتقال به هر محیطی که قصد دارید این برنامه ها در آن اجرا شوند، می باشند.
دومین مزیت عمده اCG این است که زبان آن مستقل است. در اکثر مواقع می توانید برنامه های CGI را به زبان مورد نظر خود بنویسید، نیازی به یادگیری یک برنامه جديد، صرفا برای نگارش برنامه های اCG وجود ندارد. اگر یک برنامه محیط متقابل مانند Perl را انتخاب کنید، انتقال برنامه ها از UNIX به ويندوز NT و بالعكس امری پیش پا افتاده خواهد بود.
مزيت بعدی آن این است که این برنامه یک رابط خیلی ساده است. داشتن یک کتابخانه خاص برای خلق یک برنامه CGI ضرورتی ندارد. همچنین نیازی به استفاده از یک API برای نگارش برنامه ها وجود ندارد، در عوض برنامه های CGI متکی به محتویات UNIX استاندارد برای ورودی استاندارد، خروجی استاندارد و متغیرهای محیطی جهت برقراری ارتباط با سرویس دهنده وب می باشند.
اکنون به معایب CGI می پردازیم. تنها عیب بزرگ برنامه های آن زمانی ظاهر می شود که برنامه ای خود را به یک زبان پردازه نویسی بنویسید. هرزمان که یک برنامه CGI مورد نیاز باشد، مفسر زبان پردازنویسی باید آغاز کار نماید، متن ارزیابی گردد و سپس اجرا شود. در واقع هر زمان که یک متن Perl CG1 درخواست شده کارایی نداشته باشد، باید مفسر Perl را اجرا نمائید به هر حال، این موضوع به میزان توانمندی سرویس دهنده وب ، میزان درخواست برای متن های CGI و مدت زمان بارگذاری Load) برنامه اCG بستگی دارد.
افرادی که برنامه های CGI خود را با یک زبان کامپایلر دار مانند C مینویسند، مجبور نیستند به این مشکل رسیدگی کنند، چون هیچ سربار اضافی دیگری، مشابه سربار ایجاد شده بوسیله یک مفسر، وجود ندارد، در واقع، بسیاری از سرویس دهنده کاربردی، از برنامه های CGI کوچک و سريع الاجرا به عنوان یک پل ارتباطی مابین سرویس دهنده وب و برنامه کاربردیی که سرویس دهنده پردازش می کند استفاده می نمایند. این امر به سرویس دهنده کاربردی اجازه می دهد تا با سرویس دهنده های وبی که نمی توانند از طریق یک رابط محلی ارتباط برقرار نمایند، کار کند. اشکال دیگر برنامه های اCG این است که آنها همانند دیگر محیطهای برنامه های کاربردی نوین وب کارها را در برنامه ریزی های وب آسان نمی سازند.
زمانی که یک برنامه آن را می نویسید، علاوه بر تمام منطق های برنامه ای که عملکرد مورد نظر شما را ایجاد می کنند، مجبور به نگارش کد برای تولید کند ,HTML برای صفحه نیز می باشید. اکثر سرویس دهنده های کاربردی معروف کنونی به شما اجازه می دهند تا منطلق برنامه را در یک صفحه ,HTML استاندارد بگنجانید تا زمانی که برنامه ها را می نویسید، کار شما را کمتر نمایند، همچنین یادگیری این سرورهای کاربردی برای افرادی که HITML را می شناسند، ولی نحوه برنامه ریزی آن را نمی دانند، آسان تر است، با این وجود، زمانی که از این نوع تکنولوژی استفاده میکنید، نگارش برنامه های خوب سازماندهی شده مشکل تر است. بنابراین، مورد انتخابی باید یک مورد ترجیحی باشد. هیچگاه یک برنامه به طور مطلق از برنامه دیگر بهتر نمی باشد.
زبان های برنامه نویسی اCG
همانگونه که قبلا ذكر شد، تقریبا تمام زبانهای برنامه نویسی می توانند برای نگارش برنامه های آن مورد استفاده قرار گیرند. ذکر نکردن برخی برنامه ها در این بحث، بدین معنی نیست که آنها برای برنامه نویسی آن CGI نامناسب می باشند. اگر برنامه های نوشته شده در یک زبان بتوانند معیاری که قبلا در این فصل برای برنامه های CGI ذکر کردم را احراز کنند. می توانند برای برنامه نویسی آن مورد استفاده قرار گیرند. در این بخش قصد دارم بعضی از زبان هایی که معمولا مورد استفاده قرار میگیرند را مورد بحث قرار دهم، ولی این لیست به هیچ وجه ليست کاملی نیست.
زبان برنامه نویسی Perl
Perl پدر تمام زبانهایی است که برای برنامه نویسی CGI مورد استفاده قرار می گیرند. Perl ، ترکیب مناسبی از راحتی استفاده، ویژگیهای مفید برای برنامه نويسي أCG و محبوبیت به عنوان زبان غالب برای نگارش برنامه های ان) (زمانی که سرویس دهنده وب اصلی پشتیبانی کننده CGI عرضه شد را دارا می باشد. این زبان الزاما زبانی نیست که نسبت به یکسری زبان های دیگر، زبان بهتری می برنامه نویسی آن باشد، بلکه زبانی است که اکثر برنامه نویسان CGI از آن استفاده می نمایند.
یک عامل که موجب شد Perl به عنوان یک زبان برنامه نویسی CGI محبوبیت پیدا کند، در دسترس بودن کتابخانه هایی بود که نگارش برنامه های آن را آسان تر می ساختند.
ماژول CGI.pm که برای تسهیل کارهای مربوط به آن مورد استفاده قرار می گیرد، امروزه در مفسر Perl گنجانده شده است مهم ترین قابلیتی که بوسیله CGI.pm ارائه می شود، تبدیل به هم پیوسته ورودی فرم به یک ساختار دانه های Perl مفید می باشد. این ماژول، همچنین برای تسهیل تولید کد HTML قابلیت های اضافی زیادی را ارائه می نمایند.
مزیت دیگر Perl این است که برنامه های CGI زیادی وجود دارند که به زبانی نگاشته شده اند که برای دانلود از اینترنت تهیه شده اند. در بسیاری از موارد می توانید یک متن موجود را دانلود کنید و به جای نگارش یک متن جدید، آن را برای اهداف خود قبول نمائید.
یادگیری Perl آسان است، خصوصا اگر از قبل با برنامه نویسی آشنا باشید. این زبان عموما به عنوان یک استاندارد غیر رسمی برای برنامه نویسی CGI تلقی می شود. مهمترین نکته ای که باید بدانید، تکنیک های تولید مناسب برای خلق برنامه های کاربردی وب می باشد.
زبان برنامه نویسی UNIX Shell
زمانی که نوبت نگارش یک برنامه CGI ساده می شود، خصوصا برنامه های که برای کار کردن با برنامه های UNIX طراحی می شوند، نگارش آن بصورت یک متن Shell خیلی معمول است. اکثر افرادی که برنامه های CGI را با یک متن Shell می نویسند، این کار را انجام می دهند. چون آنها اداره کنندگان سیستمی هستند که از قبل با نگارش Shell آشنایی دارند. در یک متن Shell کارهای زیادی با چند خط کد صورت می پذیرد، خصوصا اگر شامل کار کردن با دیگر برنامه های خط فرمان UNIX نیز باشند.
به طور مثال، اگر بخواهید یک برنامه CGI بنویسید که میانگین بار کردن (Load) را برای سرویس دهنده بازگرداند (با استفاده از دستور Uptime)، نگارش آن بصورت یک متن shell معنی دارتر خواهد بود. بنظر من عيب نوشتن برنامه های آن به صورت یک متن Shell این است که متن های Shell به بهترین نحو با کارهای سریع سازگاری می یابند. زبان های دیگر برای نگارش برنامه های CGI پیچیده، مناسب تر می باشند.
زبان برنامه نویسی C
زبان برنامه نویسی C همانند تمام برنامه های کامپایلر دار دیگری که می توانند برای ایجاد فایلهای خط فرمان استاندارد قابل اجرا، مورد استفاده قرار گیرند برای نگارش متن های CGI کاملا قابل قبول می باشد. مزیت اصلی نگارش برنامه های آن به زبان کامپایلر داری مانند C این است که عملکرد آن خیلی خوب است. برنامه ها در مدت زمان کمتری نسبت به زمان راه اندازی مفسر Perl برای اجرای یک متن Perl اجرا می شوند
متاسفانه، برای نگارش برنامه های CGI به زبان C نیز یک سری معایب وجود دارد که مشکلات مربوط به اکثر نرم افزارها می باشند و صرفا مربوط به برنامه نویسی CGI نیستند. هرگونه مقایسه تطبیقی زبان های پردازه نویسی با زبان های کامپایلر دار، شامل دلایل مشابهی خواهد بود. این موضوع را به نفع افرادی که چنین بحثی را نخوانده اند، خاتمه می دهم.
اساسا سه حیطه وجود دارد که زبان های پردازده نویسی بر زبان های کامپایلر دار، برتری دارند زبان های پردازه نویسی تمایل دارند که نسبت به زبان های کامپایلردار، گزاره های سطح بالاتری داشته باشند که این موضوع تکمیل کارهایی که زبانهای پردازه نویسی برای آنها طراحی شده اند را راحت تر می سازد. به طور مثال، Perl ابزارهای زیادی دارد که برای تسهیل دستکاری فایل های متنی طراحی شده اند. نگارش یک برنامه برای جستجو از طریق یک فایل متنی جهت آدرس های پست الکترونیک معتبر، نیازمند خطوط کد Perl کمتری نسبت به کد C خواهد بود.
دومین مزیت در اشکال زدایی می باشد. زمانی که با یک زبان کامپایلر دار کار می کنید، هر زمان که امکان آن را یافتید باید کد خود را مجددا کامپایل کنید، بنابراین زمانی که از یک زبان C اشکال زدایی می کنید، باید برنامه را کامپایل نمائید و سپس آن را اجرا کنید، اگر کار نکرد، آن را تغییر دهید، مجددا کامپایل کنید و دوباره آن را اجرا کنید. زمانی که از یک زبان پردازه نویسی استفاده میکنید، مراحل کامپایل کردن را کم کرده اید. میتوانید به سادگی برنامه خود را تست کنید و اگر کار نکرد، تغییری در آن ایجاد کنید و مجددا آن را تست کنید.
سومین مزیت زبان پردازه نویسی این است که در کل می توانید این زبان ها را راحت تر از زبان های کامپایلر دار یادبگیرید. در اکثر برنامه های پردازه نویسی، می توانید به جای یادگیری فلسفه فراگیر زبان با یادگیری نحوه سازماندهی برنامه ها، ساختارهای زبانی مورد نیاز خود را یاد بگیرید زبان های زیادی وجود دارند که به شما اجازه می دهند تا زمانی که چگونگی تشکیل ساختارهای بیشتری در برنامه های خود را باد گرفتند. این کار را انجام دهید. در عین حال به شما تجازه می دهند تا در ابتدا، برنامه های ساده ای را خلق نمایید.
اکنون اجازه دهید در مورد مزایای زبان های کامپایلردار بر زبان های پردازه نویسی صحبت کنیم. اولین مزیت عملکرد است، زبان های پردازه نویسی باید بوسیله یک مفسر پردازش شوند و هر زمانی که اجرا می شوند، به یک کد ماشینی قابل اجرا برگردانده می شوند، زمانی که متن هایی را می نویسید که آنها را گاها برای امور مختلف استفاده می نمائید. مسئله عملکرد خیلی مهم نیست. در یک محیط وب با تقاضای زیاد که در آن یک برنامه CGI باید صدها درخواست را در هر ساعث پردازش کندT سربار میتواند استفاده از متن های اCG را متوقف سازد.
مزیت بعدی اکثر زبان های کامپایلردار و خصوصا C این است که آنها برای هر نوع کار برنامه نویسی مناسب می باشند، اکثر زبان های پردازه نویسی برای کار خاصی یا نوع خاصی از کار طراحی شده اند. زبان های پردازه نویسی چندمنظوره خوب زیادی وجود دارند. ولی به اندازه کافی مانند C انعطاف پذیر نیستند. اکثر اوقات، این انعطاف پذیری کارایی ندارد، چرا که زبان های پردازه نویسی برای کار موجود به اندازه کافی انعطاف پذیر می باشند، با این وجود در برخی موارد زبان C تنها زبانی است که میتواند مورد استفاده قرار گیرد.
زبان برنامه نویسی Visual Basic
Visual Basic ، یک برنامه خیلی رایج برای برنامه های کاربردی سرویس گیرنده سرویس دهنده می باشد. مایکروسافت ادعا می کند که برنامه ریزان Visual Basic بیشتر از برنامه ریزان زبان های دیگر می باشند. متاسفانه بنا به دلایلی Visual Basic با ایجاد برنامه های اCG سازگاری ضعیفی دارد. در حالی که Visual Basic را می توان با سرویس دهنده های وبی که از رابط Wince استفاده می کنند، مورد استفاده قرار داد ولی این رابط واقعا مانند رابط CGI، استاندارد نیست و برای نگارش برنامه های کاربردی وب بنوعی نامناسب می باشد.
خوشبختانه، گزینه های دیگری برای برنامه نویسان Visual Basic وجود دارد. سرویس دهنده اطلاعات اینترنت (Internet information Server) مایکروسافت که ASP ) Active Server Pagers) را پشتیبانی می نماید، به شما اجازه می دهد تا منطق برنامه کاربردی را در یک صفحه وب بگنجانید. ASP یک زبان پردازه نویسی به نام VB Script که نسخه ساده شده ای از Visual Basic است، را پشتیبانی می کند. همچنین می توانید موضوعات COM را با استفاده از Visual Basic ، بنویسید که می توان از طریق صفحات ASP به آنها دسترسی پیدا کرد.
زبان برنامه نویسی Python
Python یک زبان پردازه نویسی شی گرا می باشد که برای اکثر سیستم های عامل رایج، موجود است این زبان مانند Perl یک زبان همه کاره مناسب برای بسیاری از کارها از جمله برنامه ریزی CGI می باشد، اکثر طرفداران Python به این دلیل آن را دوست دارند که با استفاده از این زبان، نگارش برنامه های قابل خواندن و قابل نگه داشتن راحت تر است. این برنامه برخی مزایای زبان های پردازه نویسی، مانند طراحی سریع و برخی مزایای زبان های کامپایلر دار مانند ساختار کامل برنامه را دارا می باشد.
یکی از بهترین و در عین حال بحث انگیزترین ویژگی های این زبان این است که این زبان از فاصله ها برای تعریف بلوک ها در کد منبع، استفاده می نماید. به عبارت دیگر، کد Python به منظور مناسب کار کردن باید به روشی معنی دار قالب بندی شود، می توانید با مراجعه به http://www.python.org اطلاعات بیشتری در مورد Python کسب کنید.
زبان برنامه نویسی Java
برنامه نویسان Java زمانی که نوبت به نگارش برنامه های CGI می رسد، موقعیت مشابهی با برنامه نویسان Visual Basic دارند. قبلا گفتم که نگارش برنامه های آنها با Java غیر ممکن است، دلیل این گفته این است که برنامه های Java باید با استفاده از یک ماشین مجازی Java اجرا شوند. بنابراین هیچ راهی برای فراخواندن یک برنامه Java CGI به طور مستقیم از یک سرویس دهنده وب وجود ندارد.
با این وجود می توانید برنامه های Wrapper CGI را به زبان دیگری بنویسید که جهت فراخواندن برنامه Java از ماشین مجازی Java استفاده نماید. اگر این راه را انتخاب کنید، با مشكل راه اندازی برنامه Wrapper مواجه خواهید شد که در این صورت ابتدا ماشین مجازی Java را راه اندازی نمایید و سپس برنامه Janvin را اجرا کنيد.
بازهم همانند Visual Basic ، گزینه های دیگری برای برنامه نویسان Java وجود دارند. میتوانید از Java Servelet ها برای نگارش برنامه های کاربردی وب استفاده کنید. Servlet ها معادل جاوایی برنامه های اCG می باشد. یک Servelet engine شامل ماشین مجازی ava می باشد و در حالی که سرویس دهنده وب در حال اجرا است، اجرا می شود. زمانی که یک درخواست انجام می شود Servelet engine برنامه Java درخواست شده را اجرا می کند و خروجی Servelet را به عنوان یک پاسخ برای کاربر می فرستد، همچنین یک سری سرویس دهنده های برنامه کاربردی وجود دارند که Java را به عنوان زبان برنامه نویسی خود مورد استفاده قرار می دهند. هرکدام از این گزینه ها برای نگارش برنامه های کاربردی با Java نسبت به نگارش برنامه های CGI در Java مناسب تر می باشند.
سوال: زمانی که برنامه های CGI را می نویسم. آیا مرورگری که بازدیدکنندگان سایت من از آن استفاده می کنند. اهمیت دارد؟
جواب: در اکثر موارد نه. چون اCG یک تکنولوژی Server-side می باشد، اگر مرورگر جزئیات HTTP را به طور مناسبی پشتیبانی کند، برنامه های اCG شما خیلی خوب کار خواهند کرد
محمد جواد
مطلب عالی بود
دستتون درد نکنه