مقایسه PHP و Asp.Net

AspVSPHPمن به شخصه کار برنامه نویسی رو با برنامه های تحت ویندوز و مشخصا با VB و MSSQLSERVER شروع کردم در این حالت چون برای ویندوز برنامه نوشته میشه  انتخاب ابزارهای مایکروسافت به جهت سازگاری بهتری که دارند منطقی تر به نظر می رسد.پس از ورود به دنیای برنامه نویسی تحت وب طبیعتا اولین انتخاب من برای برنامه نویسی بازهم ابزارهای مایکروسافت بود.پس از آشنایی با با سیستم های مدیریت محتوای(CMS) متن باز بویژه  ورد پرس  که از محبوبیت بالایی برخوردار است و با PHP نوشته شده این سوال برایم ایجاد شده که “در زمینه وب کدام ابزار ها بهتر هستند؟ و چرا؟” با مطالعه در اینترنت با مقالات زیادی برخورد کردم که عمدتا یکی از زبان ها را نسبت به دیگری برتر معرفی می کردند در این بین با مقاله ای  در سایت www.comentum.com  برخورد کردم که به نظرم بصورت منصفانه مقایسه ای رو انجام داده بود و برای خود من خیلی مفید بود تا بتونم تصمیم درستی برای اینکه از کدام ابزار برای برنامه نویسی وب استفاده کنم ، بگیریم

ادامه مطلب در واقع ترجمه مقاله اشاره شده است شما می توانید اصل مقاله رو در آدرس زیر ببیند                                                                    PHP vs ASP.net Comparison

مقایسه PHP و Asp.Net

مقایسه PHP (متن باز) و Asp.Net (تجاری) از لحاظ کارایی، هزینه، مقایس پذیری، پشتیبانی و پیچیدگی

صدها مقاله و بحث داخل فروم ها، درباره اینکه PHP یا Asp.Net پلت فرم بهتری است در اینترنت وجود دارد. متاسفانه بیشتر نطرات مغرضانه بوده و بیشتر سعی در ترویج و برتری دادن یک زبان نسبت به دیگری دارند.

علاوه بر این اگر به تاریخ این مقالات و بحث ها توجه کنید مشاهده می کنید که بیشتر اطلاعات ارائه شده آنها قدیمی بوده و به روز نیستند. متاسفانه این بحث ها دررتبه های اول موتور های جستجو نمایش داده می شوند ولی اطلاعات ارائه شده آنها به دلیل به روز نبودن معتبر نیست. باید توجه داشت که متناوبا به روز رسانی ها و بهینه سازی هایی برای هر دو پلت فرم PHP و Asp.Net ارائه می شود.

 اجازه دهید به شما اطمینان بدهم که هر دو زبان برنامه نویسی در برنامه های بسیار بزرگ تحت وب و  وب سایت های بزرگ و موفق، استفاده شده اند. بنابراین هیچ شک و تردیدی در مورد توانایی های هر دوی این زبان ها برای مدیریت پروژه های بزرگ تحت وب وجود ندارد.

در این مقاله:

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

در مورد  مقیاس پذیری، توضیح خواهم داده که چه عواملی را باید درباره مقایس پذیری لحاظ کرد و اگر برنامه نویسی به درستی انجام شود هر دو  پلت فرم بسیار مقایس پذیرند.

در خصوص هزینه و پشتیبانی، از آنجایی که PHP متن باز(OpenSource) است و عموما روی پلت فرم های متن باز (LAMP(Linux,Apache,MySQL,PHP اجرا می شود نسبت به Asp.Net راه حل های بسیار کم هزینه تر و مقادیر بسیار زیادی از منابع [سخت افزاری] و پشتیبانی مناسب را در اختیار قرار می دهد و در این مقایسه PHP برنده است.[در کشور ما بخاطر اینکه قانون کپی رایت وجود ندارد و ما از بابت استفاده از ابزار های برنامه نویسی مایکروسافت (VisualStudio, MsSqlServer) هزینه ای پرداخت نمی کنیم  و تفاوت هزینه های هاست ویندوزی و لینوکسی نیز  چندان تفاوت فاحشی ندارد بنابراین این مورد چندان برای ما مزیت جدی محسوب نمی شود]

راجع به متوسط زمان توسعه (موردی دیگر که به لحاظ هزینه نیز مهم است)، بطور معمول پیاده سازی برنامه با Asp.Net  نیاز به دوبرابر کد نویسی بیشتر، نسبت به PHP دارد بنابراین از لحاظ توسعه برنامه PHP سریعتر است

در ادامه هر یک ملاحظات بالا را بسط خواهم داد و نظرات شخصی خود را نیز بیان خواهم کرد

۱-مقایس پذیری و سهولت نگهداری

 مقیلس پذیری و سهولت نگهداری برنامه هیچ ارتباطی به اینکه شما پلت فرم PHP یا Asp.Net را انتخاب بکنید ندارد و بیشتر وابسته به عوامل زیر است

  • تجربه برنامه نویس
  • استفاده از بهترین شیوه های برنامه نویسی
  • استفاده از چهار چوب های (FrameWork) برنامه نویسی پایدار
  • دنبال کردن دستورالعمل های برنامه نویسی  و  استانداردها

۲-کارایی و سرعت

 بحث های زیادی در این موضوع انجام شده و بیشتر آنها مغرضانه بوده و به جای آگاه کردن خواننده سعی در ترویج یکی از زبان های برنامه نویسی را دارند.

عوامل بسیار زیاد دیگری، هنگام ارزیابی سرعت یک برنامه تحت وب باید لحاظ شود. از این رو  امروزه صرفا سرعت اجرای یک زبان برنامه نویسی تاثیر قابل ملاحضه ای رو کارایی و سرعت وب سایت ها ندارد.

 به هر حال اگر نیاز است که زبان برنامه نویسی  کارهای سنگین و بزرگ نظیر آنچه سایت های Google و Yahoo  بطور روزانه انجام می دهند، را اجرا کند در این صورت لازم است که ملاحضات بسیار زیادی در انتخاب یک زبان برنامه نویسی بسیار سریع جهت اجرای وظایف سنگین لحاظ شود. به همین جهت Google و Yahoo از چندین زبان برنامه نویسی (عمدتا متن باز) استفاده می کنند. برای  انجام هر وظیفه زبان برنامه نویسی که بیشترین کارایی را دارد انتخاب می شود.

در ادامه به تحلیل سناریو ها ی معمول و غیر معمول پرداخته می شود و اینکه کدام زبان عملکرد بهتری دارد توضیح داده می شود

 سناریو ی اول

یکی از وظایف معمول هر برنامه تحت وب دسترسی و جستحوی داده از پایگاه داده و انتقال نتیجه به سرور و نهایتا مرورگر می باشد. د ر این حالت آنچه که تمام زبان های برنامه نویسی انجام می دهند عبارت است از ارتباط با سرور پایگاه داده  و  وب سرور.  می توان گفت که سرعت زبان برنامه نویسی در این سناریو تقریبا هیچ تاثیری روی سرعت این فرآیند ندارد. سرعت این فرآیند وابسته به سرور پایگاه داده، وب سرور ، مرورگر یا کامپیوتر کلاینت و پهنای باند مورد استفاده است.

وقتی که صحبت از پایگاه داده می شود، یعنی پایگاه های داده اصلی و  معمول مورد استفاده مثل MySQL (که در حال حاضر تحت مالکیت Oracle قرار دارد) PostgreSQL،MSSQL و Oracle که همگی بر سر سرعت و کارایی با همدیگر در رقابت هستند و همواره شاهد بروز رسانی از جهت بهبود کارایی و اضافه شدن ویژه گیهای جدید در این پایگاه داده ها هستیم. بنابراین می توان گفت که تمام سرورهای پایگاه داده بالا به شرطی که برنامه نویس پایگاه داده از کوئری های(Query) بهینه و کارآمد استفاده نماید و یادر موارد لازم ویژگیهای پیشرفته مثل کش کردن(caching) را بکار گیرد، دارای کارایی و سرعت بسیار بالایی هستند

Google, Facebook, YouTube, Yahoo و اخیرا FIFA World Cup که دارای تعداد بسیار زیادی مخاطب در سراسر جهان است از MySQL استفاده می کنند بنابراین نمی توان کارایی MySQL  را زیر سوال برد

بر اساس تحقیقات انجام شده و چندین مورد آمار آنلاین (در زمان نگارش مقاله [سال۲۰۱۰])  ارتباط بین PHP و MySQL سریعتر از ارتباط بین Asp.Net و MSSQL می باشد اما این سریعتر بودن چندان قابل توجه نیست.

سناریو ی دوم

یکی دیگر از وظایف معمول هر برنامه تحت وب می تواند دسترسی به فایل سیستم(filesystem)، پیدا کردن یک عکس و ارسال آن به وب سرور باشد. در این حالت نیز زبان برنامه نویسی نقش چندانی بر عهده ندارد بلکه نقش اصلی را سیستم عامل و فایل سیستم بر عهده دارند که با زبان برنامه نویسی در ارتباط  هستند

بر اساس مطالعات انجام شده و برخی آمار آنلاین (در زمان نگارش مقاله [سال۲۰۱۰]) سیستم عامل لینوکس و فایل سیستم ext4 کارایی بهتری را نسبت به ویندوز با فایل سیستم NTFS دارد

سناریو ی سوم

بیشتر سرورهای لینوکسی یا یونیکسی بدون افزونه های غیر ضرورری یا رابط کاربری گرافیکی به خوبی اجرا می شوند از این رو مقدار  سی پی یو (CPU) و رم (RAM) کمتری را استفاده می کنند و منابع بیشتری جهت استفاده وب سرور و سرور پایگاه داده تخصیص داده می شود

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

واضح است که پلت فرم LAMP  بخاطر مصرف کمتر منابع نسبت به Asp.Net ارجحیت دارد[البته وجود رابط  کابری گرافیکی کار را تا حدود زیادی راحت کی کند و ما از بخاطر سپردن مقادیر بسیار زیادی دستورات بی نیاز می کند]

 سناریوی چهارم(نه چندان مرسوم )

Asp.Net بطور معمول با سی شارپ (#C) نوشته می شود و زبان سی شارپ نسبت به PHP زبان برنامه نویسی سریعتری می باشد (البته ممکن است این موضوع در طول زمان تغییر بکند چراکه هر زبانی جهت افزایش سرعت اجرای خودش همواره در حال به روز رسانی می باشد) بنابرین اگر نیاز به اجرای مثلا ۲,۰۰۰,۰۰۰ تکرار حلقه در برنامه وجود داشته باشد برنامه مبتنی بر Asp.Net و#C بسیار سریعتر از PHP عمل خواهد کرد. به هر حال این سناریو چندان معمول نمی باشد و معمولا حداکثر تعداد تکرار حلقه های اجرایی در برنامه از مرتبه ۱۰۰ خواهد بود و نه ۲,۰۰۰,۰۰۰ . در این حالت موارد دیگری را نیز باید بررسی کرد که چرا یک نفر نیاز به اجرای ۲,۰۰۰,۰۰۰ تکرار حلقه دارد.

از عوامل دیگری که روی کارایی برنامه تاثیر دارند اما هیچ ارتباطی با انتخاب زبان برنامه نویسی ندارد می توان موارد زیر را نام برد

  •  توانایی و دانش برنامه نویس(ها) جهت بهینه سازی کد
  • توانایی و دانش برنامه نویس(ها) جهت نویشت و بهینه کردن کوئری های اس کیو ال (SQL Queries)
  • نیاز به استفاده از توابع(برخی توابع در PHP به نسبت Asp.Net زمان اجرایی طولانی تری دارند و برعکس)

۳-هزینه

PHP, MySQL server, PostgreSQL server, Apache server و سیستم عامل لینوکس و تمام به روز رسانی های آنها رایگان هستند علاوه بر این اگر نیاز به سرو پشتیبان یا سرور اضافی جهت توزیع بار(LoadBalancing) داشته بداشید هزینه ای از بابت لایسنس پرداخت نمی کنید

پلت فرم (LAMP (Linux, Apache, MySQL and PHP در بین شرکت های ارائه دهنه خدمات میزبانی (hosting) از محبوبیت بالایی برخوردار است به همین خاطر هزینه ماهیانه خدمات میزبانی پلت فرم LAMP نسبت به ویندوز کمتر است

در صورتی که سیستم عامل ویندوز را خریداری کرده باشید Asp.Net و IIS بصورت رایگان در اختیار شما قرار می گیریند ولی برای ویندوز سرور و اس کیو ال سرور و به روز رسانی های آنها باید هزینه اضافی تری پرداخت نمایید در صورتی که نیاز به چندین سرور دیگر بطور مثال برای مقاصد پیشتیبانی یا توزیع بار داشته باشید باید هزینه بیشتری نیز پرداخت نمایید

۴-پشتیبانی و منابع 

از آنجایی که LAMP  متن باز است تعداد بسیار زیادی از توسعه دهندگان در سرار جهان از این پلت فرم پشتیبانی می کنند و دائما در حال به روز رسانی و بهبود این پلت فرم هستند علاوه بر این منابع بسیار زیادی در خصوص این پلت فرم  در دسترس است

بیشتر توسعه دهندگانی که در جوامع متن باز (Open Source Community) فعال هستند بدون چشم داشت مالی  به شما کمک می کنند. اگر شما نیاز به راهنمایی و کمک در زمینه پلت فرم LAMP داشته باشید کافیست سوال خود را در فرم های PHP مطرح کنید تا به سرعت جوابهایی را از طرف فعالین این حوزه دریافت کنید

Asp.Net توسط شماری از توسعه دهندگان در مایکروسافت پشتیبانی و به روز رسانی می شود.  تعداد فعالین در خصوص پشتیبانی و پاسخگویی به موارد بحث برانگیز Asp.Net  به نسبت PHP کمتر است

۵-زمان توسعه

برای پیاده سازی و نوشتن ویژگیهای پیشرفته و کاربری با Asp.Net نیاز به نوشتن تعداد کد بیشتری در مقایسه با PHP می باشد طبیعتا زمان زیادی را نیز لازم خواهد داشت

علاوه بر این PHP یک زبان مفسری است که سمت سرور تفسیر می شود بنابراین وقتی تغییری در کد داده می شود نیاز به هیچ کار اضافه دیگری نیست و برنامه به راحتی اجرا می شود در حالی که Asp.Net  یک زیان ترجمه ای است که قبل از اجرا کل برنامه ترجمه ، سپس اجرا می شود از این رو هنگام تغییر در برنامه نیاز به ترجمه مجدد آن می باشد در نتیجه Asp.Net به نسبت PHP زمان زیادی را مصرف می کند [شایان ذکر است که از نظر اجرایی سرعت برنامه های ترجمه بیشتر از برنامه های مفسری می باشد چونکه برنامه های ترجمه زمان اجرا فقط اجرا می شوند اما برنامه های تفسیر نیاز به تحلیل کد قبل از اجرا دارند. تفاوت سرعت تفسیر و ترجمه بیشتر هنگام ویراش کد و خطا یابی آشکار می شود که برنامه مفسری موفق تر عمل می کنند  ]

۶-ابزارها و  ویرایشگرها

PHP و MySQL  مستقل از ویرایشگر  هستند. توسعه دهندگان PHP به تعداد زیادی ویرایشگر جهت کد نویسی دسترسی دارند

اکثر برنامه نویسان Asp.Net  از ویژوال استودیو مایکروسافت جهت  توسعه برنامه های دات نت استفاده می کنند[با وجود اینکه ابزارهای برنامه نویسی دیگری برای دات نت  وجود دارد مثل SharpDevelop  که متن باز هم هست ،اما  ویژوال استودیو از محبوبیت بالایی برخوردار است ]

توسعه دهندگان PHP از ویرایشگرهایی مثل NotePad++,VI,VIM  استفاده می کنند VIو VIM ویرایشگرهای پیشرفته و مستقلی هستند. برنامه نویسانی که با این ابزار ها کار می کنند می توانند برنامه های پیچیده را در کمترین زمان با بیشترین کارایی، پیاده سازی کنند. هنگامی که نیاز به استفاده از ابزارهای دیگر مثل JavaScript,Jquery,Ajax,.. باشد برنامه نویسان PHP از این مزیت برخوردار هستند که با دنیای متن باز آشنایی بیشتری دارند و راحتر می توانند این تکنولوژی ها را  بکار گیرند

۷-استقلال پلت فرم

PHP مستقل از پلت فرم بوده و می تواند روی پلت فرمهای لینوکس، یونیکس، مکینتاش و ویندوز اجرا شود

Asp.Net تنها روی پلت فرم ویندوز قابل اجراست

۸- کدام سایت ها روی چه پلت فرمی اجرا می شوند

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

توجه: زبان C را با (C# (CSharp  اشتباه نگیرید آنها کاملا زبان های برنامه نویسی متفاوتی هستند. Asp.Net با #C  یا VB.NET توسعه داده می شود نه با C

سایت شروع فعالیت پلت فرم سرور زبان های برنامه نویسی مورد استفاده
Google.com November 1998 Linux C, Java, C++, PHP & MySQL
Facebook.com February 2004 Linux PHP, C++ and MySQL
YouTube.com February 2005 Linux C, Java and MySQL
Yahoo.com August
۱۹۹۵
Linux C++, C, Java, PHP & MySQL
MSN.com (owned by Microsoft) August
۱۹۹۵
Windows ASP.net
Live.com (owned by Microsoft) August
۲۰۰۸
Windows ASP.net
Wikipedia January
۲۰۰۱
Linux PHP & MySQL
Amazon.com October
۱۹۹۵
Linux & Solaris C++, Java, J2EE
WordPress.com November
۲۰۰۵
Linux PHP & MySQL

۹-محبوبیت

پلت فرم LAMP از محبوبیت بالایی نسبت به پلت فرم ویندوز برخوردار است. بر اسا س آمار ارائه شده توسط NetCraft h در جولای ۲۰۱۰ از مجموع ۲۰۵,۷۱۴,۲۵۳ سایت تعداد ۱۱۲,۹۴۵,۹۶۸ (۵۴٫۹۰%) بر روی سرور آپاچی و تعداد ۵۳,۲۱۷,۶۲۰ (۲۵٫۸۷%) بر روی سرور ویندوز و مابقی روی سایر پلت فرم ها قرار دارند

۱۰-سهولت توسعه و قابلیت کاربری

اینکه کدام پلت فرم برای توسعه راحتر است کاملا وابسته به دانش و اطلاعات شخصی است که از آن استفاده می کند.

در ورژن های اخیر سیستم عامل لینوکس مثل توزیع های ابونتو(ubunto)،رد هت(RedHat)، فدورا(Fedora) کارهای بسیار خوبی از جهت رابط کاربری گرافیکی و نحوه نصب آسان انجام شده و مدیریت سرورهای لینویکسی را بسیار راحت و کارآمد کرده است

به نظر من  سرور ویندوز از لحاظ سهولت کاربری عقب گرد داشته و بسیاری از مولفه های غیر ضروری را به سیستم اضافه نموده که باعث شده مدیریت سرور ویندوز به کندی و بصورت سنگین عمل  بکند


حرف آخر

هر دو زبان برنامه نویسی  بسیار قدرتمند و منعطف هستند و اینکه برای هر دوی آنها نمونه های موفق از پروژهای تحت وب وجود دارد تایید کننده این موضوع است. بسته به شرایط پروژه می توانیم یکی از آنها را انتخاب کنیم بعنوان مثال اگر بخواهیم پروژه ما مستقل از پلت فرم اجرا  شود بهترین انتخاب php خواهد بود. به نظرم نباید روی زبان خاصی تعصب داشت و هر زبان برنامه نویسی که با شرایط پروژه سازگاری بهتری داشت رو انتخاب کنیم. البته تسلط به چندین زبان برنامه نویسی  کار نسبتا سختی خواهد بود و اکثرا ترجیح می دیم که یک زبان برنامه نویسی رو انتخاب کنیم و به اون زبان مسلط بشیم. در نهایت اینکه برنامه برای مشتری (کابر نهایی) نوشته  میشه و کاربر کاری با  پلت فرم  نداره و آنچه که براش مهم هست راحتی ، کارایی و پشتیبانی خوب از برنامه هست

1 Star2 Stars3 Stars4 Stars5 Stars (3 امتیاز, میانگین: 4٫00 از 5)
Loading...

افزودن یک دیدگاه

نشانی ایمیل شما منتشر نخواهد شد.