مجموعه خدماتی هفت آسیاب

مقایسه ASP و PHP

  • هفت آسیاب
  • وبلاگ
  • مطالب عمومی
  • برنامه نویسی
  • مقایسه ASP و PHP
مقایسه ASP و PHP

طی سالهایی که برنامه نویسی می کنم و حتی قبل از اون بارها شاهد این بودم که برخی از برنامه نویسان PHP فقط به دلیل تعصبشان روی این زبان، و بدون دلیل منطقی زبان ASP را مورد نقد های الکی قرار می دهند  و معایبی را روی آن می گذارند که اصلا قابل قبول نیست. البته این مورد بالعکس هم صدق می کند، بطوری که برخی از برنامه نویسان ASP این امر را نسبت به PHP انجام می دهند!

به همین دلیل تصمیم گرفتم بعد از خواندن ده ها مقاله مختلف در این زمینه و همچنین تجربه ای که طی چند سال اخیر در زمینه برنامه نویسی کسب کردم، این مقاله رو بدون هیچگونه تعصب و جانب گیری بنویسم و به اشتراک بگذارم.

در ابتدا نگرشی کوتاه به تاریخچه زبان ها می اندازیم.

 

تاریخچه PHP (برگرفته از وب سایت ویکی پدیا)

توسعهٔ‌پی‌اچ‌پی از سال ۱۹۹۴ و زمانی که راسموس لردورف تعدادی اسکریپت به زبان سی نوشت تا صفحهٔ خانگی خود را مدیریت کند، آغاز شد. این اسکریپت‌ها که به صورت رابط دروازهٔ مشترک (به انگلیسی: Common Gateway Inteface) نوشته شده‌بودند، مسئول انجام عملیات‌های ساده‌ای مانند نشان دادن رزومهٔ راسموس و بررسی آمارهای بازدید از وب‌گاه او بودند.

با گسترش اسکریپت‌ها و افزودن توانایی تعامل با فرم‌های وب و ارتباط با پایگاه‌های داده، نام صفحهٔ خانگی شخصی/مفسر فرم (به انگلیسی: Personal Home Page/Form Interpreter) یا PHP/FI برای آن‌ها انتخاب شد. PHP/FI می‌توانست برای ایجاد نرم‌افزارهای سادهٔ وب مورد استفاده قرار بگیرد. لردورف در ابتدا برای یافتن خطاهای این اسکریپت‌ها و بهبود آن‌ها، در ۸ جون سال ۱۹۹۵ میلادی اسکریپت‌ها را با نام ابزارهای صفحهٔ خانگی شخصی نسخهٔ ۱٫۰ (به انگلیسی: Personal Home Page Tools version 1.0) تحت مجوز عمومی گنو بر روی گروه خبری یوزنت منتشر کرد.

این نسخهٔ اولیه بسیاری از ویژگی‌های نسخهٔ کنونی این زبان را دارا بود. متغیرها به سبک زبان پرل بودند، مدیریت فرم‌ها وجود داشت و می‌شد کدها را در درون کدهای اچ‌تی‌ام‌ال قرار داد. قواعد پی‌اچ‌پی نیز از زبان پرل پیروی می‌کردند، اما ساده‌تر، محدودتر و ناپایدارتر بودند.

با شکل‌گیری یک گروه برنامه‌نویسی و بعد از انجام تست‌های فراوان بر روی نسخهٔ بتا و بازنویسی موتور تجزیه‌کننده، سرانجام PHP/FI نسخهٔ ۲٫۰ در نوامبر سال ۱۹۹۷ میلادی منتشر گردید.

اندی گاتسمن و زیو سوراسکی با بازنویسی موتور تجزیه‌کننده در سال ۱۹۹۷ میلادی، پایه و اساس نسخهٔ ۳ پی‌اچ‌پی را بنیان نهادند. این ۲ نفر با همراهی لردورف با تغییر نام پی‌اچ‌پی به پی‌اچ‌پی: پیش‌پردازندهٔ ابرمتن (به انگلیسی: PHP: Hypertext Preprocessor) که یک مخفف بازگشتی است، در ماه جون ۱۹۹۸ میلادی رسماً پی‌اچ‌پی نسخهٔ ۳٫۰ را منتشر کردند.

بعد از این اتفاق گاتسمن و سوراسکی شروع به نوشتن هستهٔ جدیدی برای زبان پی‌اچ‌پی کردند که منجر به به‌وجودآمدن موتور زِند در سال ۱۹۹۹ میلادی شد. آن‌ها همچنین شرکت زِند تکنولوژی را در کشور اسرائیل تأسیس کردند.

در تاریخ ۲۲ می سال ۲۰۰۰ میلادی پی‌اچ‌پی نسخهٔ ۴ که از موتور زند نسخهٔ ۱٫۰ استفاده می‌کرد، منتشر شد.

این نسخه تا ماه اوت سال ۲۰۰۸ میلادی توسعه یافت و به زیرنسخهٔ ۴٫۴٫۹ رسید. هم‌اکنون پشتیبانی این نسخه به پایان رسیده‌است و هیچ به‌روزرسانی برای آن منتشر نمی‌شود.

در ۱۳ ژوئیه سال ۲۰۰۴ میلادی، نسخهٔ ۵ پی‌اچ‌پی که از موتور زند نسخهٔ ۲ بهره می‌برد، منتشر شد.

نسخهٔ ۵ ویژگی‌های زیادی را به پی‌اچ‌پی اضافه کرد. پشتیبانی کامل از شیء گرایی، افزونهٔ PDO (به انگلیسی: PHP Data Object Extension) (که دسترسی به بانک‌های اطلاعاتی را ممکن می‌ساخت) و بهبود بازدهی از جملهٔ این ویژگی‌ها محسوب می‌شد.

از سال ۲۰۰۸ به بعد، با پایان یافتن پشتیبانی از تمامی نسخه‌های قدیمی‌تر پی‌اچ‌پی، نسخهٔ ۵ تنها نسخهٔ در حال گسترش است.

در کنار نسخهٔ ۵ پی‌اچ‌پی یک نسخهٔ اصلی دیگر در حال توسعه است. با توجه به تغییرات عمدهٔ موجود در این نسخه از جمله پشتیبانی کامل از یونیکد، قرار بود این نسخه به عنوان نسخهٔ ۶ پی‌اچ‌پی منتشر گردد. اما پیاده‌سازی پشتیبانی از یونیکد بیش از آنچه انتظار می‌رفت به طول انجامید. این امر باعث شد تا در مارچ سال ۲۰۱۰ میلادی، این نسخه به بخش در حال توسعه (به انگلیسی: Trunk) منتقل شد و دیگر به آن نسخهٔ ۶ گفته نمی‌شود.

مهم‌ترین تغییرات این بخش جدید شامل حذف register_globals،[۱۵] magic quotes و safe mode می‌باشد.

دلیل حذف magic quotes تأثیرات غیرقابل پیش‌بینی و دلیل حذف register_globals خطرهای امنیتی بود که در نرم‌افزارها ایجاد می‌کرد. به جای استفاده از magic qoutes برنامه‌نویسها می‌توانند از تابع addslashes() یا توابع دقیق‌تری که برای هر پایگاه داده ایجاد شده‌اند مانند mysql_real_escape_string() که برای پایگاه داده مای‌اس‌کیوال طراحی شده‌است، استفاده کنند. توابعی که قرار است در نسخهٔ ۶ حذف شوند، از نسخهٔ ۵٫۳ به صورت توصیه‌نشده (به انگلیسی: Deprecated) درآمده‌اند و استفاده از آن‌ها باعث بروز هشدار در نرم‌افزار خواهد شد.

تعداد بسیار زیادی از پروژه‌های بزرگ و متن‌باز که از زبان پی‌اچ‌پی استفاده می‌کنند، از سال ۲۰۰۸ با به وجود آمدن جنبش ابتکاری GoPHP5 به معنای برو به پی‌اچ‌پی ۵ دیگر از پی‌اچ‌پی نسخهٔ ۴ استفاده نمی‌کنند. این جنبش توسط بسیاری از توسعه‌دهندگان پی‌اچ‌پی پشتیبانی شد تا بتوانند به گسترش استفاده از نسخهٔ ۵ پی‌اچ‌پی کمک کنند.

مفسرهای زبان پی‌اچ‌پی برای هر دو معماری ۳۲بیتی و ۶۴بیتی موجود می‌باشند. تنها استثنا سیستم‌عامل ویندوز است که فقط نسخه‌های ۳۲بیتی برای آن منتشر می‌شود. اما مدتی است که نسخه‌های ۶۴بیتی ویندوزی نیز به صورت امتحانی بر روی وب‌گاه پی‌اچ‌پی منتشر می‌شوند. استفاده از نسخه‌های امتحانی ۶۴بیتی ویندوز برای سرورهای بزرگ توصیه نمی‌شود.

 

تاریخچه ASP (برگرفته از وبلاگ بیست دقیقه)

ASP در اكتبر 1996 عرضه شد ASP1 بعنوان اولين عضو خانواده‌ي ASP به همراه محيط Visual Interdev داراي امكانات شگفت‌انگيز و قدرتمند بود ADO از جمله‌ي اين امكانات بود كه امكان دستيابي به ركوردها و گزارشگيري را به دارا بود.
پس از به ثبات رسيدن  ASP1، مايكروسافت نسخه‌ي جديدي را با Windows NT4 Option pack عرضه كرد كه همراه برنامه راه‌انداز سرور وب بود ASP2 با بهبودهايي در افزايش عملكرد سيستم فايل، ابزار بيشتر و بهبود زبان همراه بود. برنامه‌نويسان نيز اجزايي توليد كردند كه بر اساس معماري مبتني بر مدل شيئ COM عرضه شد.

ASP2  محيطي با ثبات‌تر و امكانات بيشتر را در اختيار برنامه‌نويسان قرار داد. اين فن‌آوري تحت پوشش
 Microsoft Transaction Server يكپارچگي مستحكم‌تري را بخود گرفته بود. چون در JSP -- تكنولوژي تركيب HTML و ياXML با كدهاي جاوا – پيش از اجرا، كدها كامپايل مي‌شدند نسبت به ASP2 از كارايي نسبتاً بالاتري برخوردار بودند. همچنين رفع خطاها، جهت‌يابي اشياء، اداره‌ي صفحات و تايپ متغيرها بسيار ساده‌تر بود. با ظهور ويندوز 2000، ASP3با امكان كامپايل بجاي پردازش خط به خط عرضه شد و كارايي ASP را به ميزان قابل ملاحظه‌اي افزايش داد. ASP3همراه با IIS5 به بازار آمد كه IIS شامل گزينه‌اي جهت جداسازي نرم‌افزارهاي وب و پردازش‌ها بود. در اين نسخه است كه مايكروسافت مفهوم اسكريپت‌هاي سرور را عرضه كرد. زبان‌هاي اسكريپت نظير جاوا اسكريپت و VB script توانسته است پاسخي شايسته به طراحي صفحات وب پويا ارائه نمايد. اين مفهوم شامل اشياء COM است كه بصورت فايل‌هاي زبان، توسعه پذير و بر پايه‌ي متن مي‌باشد. در اين نسخه، ASP و ADO با كمك XML توانايي بيشتري بدست آورده و نيز قابليت خود تنظيمي سرور وب و مخفي‌سازي كد كمپايل شده و Caching از جمله اين پيشرفت‌ها محسوب مي‌شد. اما ضعف‌هايي نيز در مدل ASP3 وجود داشت، از جمله تسلط زبان‌هاي ناكارآمد اسكريپت‌نويسي مانند J Script و VB Script بر ASP و مديريت سيستم‌ها جهت پيكربندي سرور وب است كه خود يك مشكل محسوبمي‌شوند. واضح است كه مايكروسافت جهت مقابله با جاوا دست به تغيير اصولي در ASP بزند و آنرا به سطح استاندارد برنامه‌نويسي قدرتمند برساند. با توجه به فن‌آوري مبتني بر اصل Com، ActiveX كه بخش مهمي از قدرتASP را فراهم مي‌كردند، محدوديت‌هايي نيز در برداشتند. مايكروسافت مي‌بايست با Sun بطوري مقابله مي‌نمود كهمعماري فني و منطقي، براي نرم‌افزارهاي توزيع شده‌ي جديد فراهم مي‌كرد. Sun با استفاده از J2EE مجموعه‌اي از فن‌آوري ها را در اختيار داشت كه برنامه‌نويسان با دنبال كردن پروژه‌هاي كوچك همراه با Standard Edition ، آن‌ها را براي Enterprise Java Beans كاملا تغيير اندازه مي‌دادند.

مايكروسافت با ارائه‌ي .Net بر تمام انتقادهاي مطرح شده خط بطلان كشيد و شيوه‌ي كاملا جديدي در بررسي نرم‌افزار و وب بوجود آورد. همچنين زبان جديد خود يعني C# را در معرض نمايش قرار داد و نويد ارائه‌ي عملكرد و انعطاف پذيري بهتري نسبت به گذشته و پشتيباني از انواع مختلف استانداردهاي اينترنت را داد. C# بعنوان زبان .Net كاملا جديد و براي برنامه‌نويسان C كاملا آشنا مي‌باشد، ولي داراي امكانات جديد است. همچنين برخي از خواص RAD كه مورد علاقه‌ي برنامه‌نويسان ويژوال بيسيك است را نيز دارا مي‌باشد. برخي مي‌گويند C# جهت رقابت با Java ي شركتSUN داراي امكاناتي نظير شيئ گرايي كامل، مديريت خودكار حافظه و مرتب‌سازي محيط كار مي‌باشد. مايكروسافتASP.Net را همراه با Visual Studio.Net و زبانهايي نظير C# ، C++ و Visual Basic و قابليت تطبيق با زبانهاي ديگر عرضه داشت.لازم به ذكر است كه ASP.Net و ASP دو فن‌آوري تقريباً متفاوتند. در ASP تنها پنج كلاس استاندارد وجود داشت، در حاليكه در ASP.Net مي‌توان از بيش از 4500 كلاس استاندارد در بدنه‌ي .Net بهره جست. همچنين عليرغم قدرت و امكانات زياد و متعدد ، استفاده از آن در مقايسه با ASP بسيار آسانتر است.

 

خب تا اینجای کار تارخچه دو زبان رو که برگرفته از دو وب سایت دیگه بود (که صحیح نوشتن) قرار دادم و در ادامه قصد دارم مقاله رو طبق دانسته های خودم تکمیل کنم.

هیچکس نمیتونه مدعی بشه که زبان ASP ضعیفتر از PHP هست یا بالعکس زبان PHP ضعیفتر از ASP هست، هر دو زبان قدرتمند و روز به روز تکامل بیشتری پیدا میکنن، درواقع اگر برنامه نویس خوبی باشیم میتونیم با کمترین امکانات و ضعیف ترین زبان های برنامه نویسی، بهترین پروژه ها رو ارائه بدیم اما اگر برنامه نویس ضعیفی باشیم حتی با قوی ترین و بهترین زبان ها هم نمیتونیم یک پروژه خوب رو ارائه بدیم.

منتها برخی از مقایسات بین این دو زبان، میتونه اثبات کنه که در برخی از موارد ASP از PHP بهتره و بالعکس در برخی از موارد هم PHP میتونه بهتر باشه!

یکی از مواردی که ASP رو از PHP بهتر میکنه، سرعت اونه! درواقع نه فقط در برابر PHP بلکه در برابر بسیاری از زبان های دیگه ASP سرعت بالاتری داره. در زبان ASP وقتی که خروجی نهایی از کد های پروژه گرفته میشه، یکسری فایل با پسوند dll ایجاد میشه که این فایل ها و کد ها اصلا در سرور تفسیر نمیشن و web server وقتی که کد ها رو اجرا میکنه، هیچ زمانی برای تفسیر کردن اونها نمیذاره و به سریع ترین شکل ممکن کد ها رو تفسیر میکنه.

بنابراین از نظر سرعت، PHP نمیتونه ادعایی نسبت به ASP داشته باشه!

 

مورد بعدی که قابل بحث هست، امنیت زبان برنامه نویسیه که خیلی هم مبحث مهمیه، من در خیلی از مقالات مرتبط که این دو زبان رو مقایسه کردن مواردی رو خوندم که بنظرم اصلا صحیح نیستن!

به عنوان مثال یکی از سایت ها نوشته بود چون جوملا با PHP نوشته شده و خیلی هم پلتفرم ضعیفی داره و تعداد قابل توجهی از وب سایت های جوملایی هک شده بنابراین PHP امنیتش کمه!

یا یه جای دیگه خوندم که نوشته بود PHP به دلیل اوپن سورس یا کدباز بودن از امنیت بالاتری برخورداره و حتی برخی از وب سایت ها نوشته بودن به دلیل اینکه فلان وب سایت بزرگ از زبان PHP یا ASP استفاده کرده بنابراین این زبان امنیت بیشتری داره که انتخابش کردن!

خب دوستان باید بگم هیچ کدام از این موارد اصلا دلیل بر ایمن بودن یا نبودن PHP نیست، و کاملا غلط هستن، درواقع ایمن بودن وب سایت فقط بستگی به قدرت برنامه نویس اون پروژه و قدرت سرور های اون وب سایت داره. ممکنه برنامه نویس به بهترین شکل ممکن پروژه رو برنامه نویسی کنه فرقی هم نداره با PHP باشه یا ASP، اما اون پروژه رو در یک سرور ضعیف آپلود کنه و نهایتا از طریق باگ های سرور هک بشه!

نتیجه می گیریم که هر دو زبان از نظر امنیت برابر هستن به شرطی که با قدرت و دقت بالایی از اونها استفاده بشه.

نظرات

ali

ali

عجب مقایسه ی جامع و کاملی

شنبه, 31 فروردین 1398, 06:16 ق.ظ مشاهده وب سایت
صادق جعفری

پاسخ مدیریت : صادق جعفری

ممنون از نظرتون

شنبه, 31 فروردین 1398, 07:21 ق.ظ

ارسال نظرات

کد امنیتی