PDA

View Full Version : مقایسه ای برPHPوASP.NET



پیام حیاتی
پنج شنبه 27 آذر 1393, 13:58 عصر
مقایسه وانتخاب ابزارهای توسعه نرم افزار همواره یکی از بحثهای داغ برنامه نویسان وتوسعه دهندگان نرم افزار بوده است. ازمقایسه C وپاسکارتامقایسه VB و++VC وDelphi وبا ورود به عصر اینترنت مقایسه امکانات,perlپیتون ASP,PHP,وJAVA,ASP.NET بحثهای بوده است که در فرومهای و سایتهای تخصصی همواره به آن پرداخته شده است البته خیلی اوقات این قضیه از یک بحث فنی تبدیل به بحثی صرفا بر اساس علاقه و تعصب برنامه نویسان تبدیل شده یا اینکه مقایسه تبلیغاتی برای نمایش ضعف رقیبان و قدر تهای یک ابزار خاص بوده است. به نظرم مهم است که این برنامه نویس و توسعه دهند نرم افزار به زبانها و پلاتفرمهای توسعه نرم افزار صرفا به عنوان یک ابزار نگاه کندوبر اساس نیازهای کمپانی یا تیم نرم افزاری و نیاز های نرم افزاری پلاتفرم و ابزارهای لازم را انتخاب کنند.

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

پی اچ پی PHP
زبان PHP با هدف نوشتن اسکریپتهای وب نوشته شد. در واقع هدف فرارز از پیچید گیهای Perl و نوشتن CGI با زبانهای مثل C و ارائه دستوراتی ساده برای طراحان صفحات وب بود . پی اچ پی اولیه زبانی با دستورات محدود و ساده بود که بیشتر برای کارهای ساده و برای طراحان وب سایتها و نه برنامه نویسان حرفه ای بود. این زبان کم کم پیشرفت کرد و بخصوص Open Source بودن آن با عث شد تسریع این حرکت شد در مرحله اول تعداد دستورات وتوابع این زبان گسترش پیدا کرد بطور یکه امروز نیز براحتی کارهای نسبت پیچیده ای (مثل کار با سوکتها یا تصاویر) با توابع این زبان قابل اجراست.همچنین از لحاض معماری این زبان با پشتیبانی از شی گراهی پیشرفت مهم دیگری داشته است.پی اچ پی به طور کلی یکی از زبانهای معمول برای نوشتن اسکریپتهای اجرای در محیط یونیکس (هر چند که در ویندوز نیز به خوبی اجرا می شود) و کار با نرم افزار مدیریت بانک اطلاعت MySQL است.

تکنولوژی ASP.NET
دات نت نسل جدیدی از ابزار های توسعه مایکروسافت است.دات نت فقط یک زبان نیست ودر واقع یک فریم ورک یا پلاتفرم برای توسعه واجرای نرم افزار است.دات نت شباهت زیادی با پلاتفرم جاوا دارد و در واقع در رقابت با اوست. ASP.NETنیز نسل جدیدی از ASP.NET کلاسیک در بستر دات نت است و از این جهت پیشرفت بسیار زیادی نسبت به ASP کلاسیک شاهد هستیم.با ASP.NET و با وجود کتابخانه غنی توابع و کلاسهای دات نت تقرینإ هر کاری در وب امکان پذیر است. اگر چه مایکروسافت درمعماری دات نت هدف اجرا در پلاتفرمها سیستم عاملهای مختلف را مد نظر داشته است اما حد اقل تاکنون میتوان دات نت را یک ابزار توسعه در سیستم عامل ویندوز دانست.البته پروژه هایی برای شبیه سازی وانتقال دات نت به محیط لونوکس نیز وجود دارد که مهمترین آنها پروژه Mono است که پیشرفت قابل توجهی داشته است.انتظار می رود در آینده نزدیک ASP.NET در هر سیستم عامل و پلاتفرمی قابل اجرا باشد.

سیستم عامل
اگر چه اصولآ انتخاب ابزار توسعه نرم افزار ارجحیت بیشتری بر انتخاب سیستم عامل دارد اما در دنیای واقعی قضیه به این سادگی نیست و گاهی برنامه نویس بر اساس سیستم عامل ابزار خود را انتخاب میکند.امروزه تقریبا دو بستر متفاوت داریم از طرفی سیستم عاملهای سرور ویندوز و از طرفی دیگر نسخه های مختلف لینوکس و یونیکس.ویندوز ابزار رایج و اشنایی برای کاربران و برنامه نویسان است و از طرفی یونیکس سیستم عامل ارزان تر (البته حرفه ای)است.
در ویدوز عموما ترکیبی از دات نت IIS SQL Serverداریم و در یونیکس MySql.Apache.PHPو مشکل است که هزینه نهایی پیاده سازی واجرای یک وب سایت در ترکیب لینوکسی ارزان تر است.پی اچ پی در ویندوز نیز قابل اجراست وبخصوص در نسخه های جدیدی PHPاین اجرا شکل اول نیز گرفته است.در حال حاضر نسخه اولیه از Mono (دات نت در محیط لینوکس)قابل اجرا است اما حد اقل به اندازه PHP رایج نیست.از طرفی نیز ASP.NETترکیب ایده آلی برای کار با ویندوز و IISاست و در واقع هماهنگی و همخوانی این ابزار ها در ویندوز (بخصوص اینکه همگی محصول یک شرکت هستند)شاید یکی از بهترین بستر های توسعه نرم افزار و وب سایت در ویندوز را پدید می اورند.

معماری
همانطور که اشاره شد پی هچ پی برای طراحان سایت و گریز از پیچد گی ها ی ابزار ها و زبانهای آن روزگار ایجاد شده است و بنابراین php اولیه یک ابزار ساده و نه چندان پیچیده بوده است البته phpدر این سالها ارتقاء پیدا کرده است اما هنوز نقصهای اولیه ای را دارد (مثلا با وجود شی گرایی هنوز دستورات و توابع زیادی از ان ارتباطی با شی خاصی ندارد و یا خاصیتهای حرفه ای شی گرا را ندارد.)اما دات نت فراتر از یک زبان است و مجموعه ای از کتابخانه های استاندارد و زبا نهایی که تقریبا تمام قابلیتهای زبانهای روز دنیا را ندارد .
سینکس حرفه ای ، استاندارد و جذاب c# و یا سینتکس ساده و کار امد vb.net و البته j# و c++ و چند زبان دیگر نیز وجود دارند.
دات نت کاملا شی گرا است و معماری ان حرفه ای است و از این جهت با java و دانت نت پلا تفرمهایی با معماری enterpriseهستند و php زبانی ساده و با تمرکز برای نوشتن اسکریپهای وب.
شرکت zendکه در حال حاضر engineاصلی php دارند اما در کل و از لحاض مهندسی نرم افزار معماری دات نت بر تری محسوسی نسبت به php دارد. در بعد دیگر ابزار های کار بار دات نت و اموزه ها و پتانسیل دات نت نوشتن نرم افزار های با معماری بهتر را امکان پذیر میکند و حتی بصورت پیش فرض های مهندسی نرم افزار مانند ابزار rational case tools و... همخوانی با دات نت دارند. یکی از مهمترین تفاوت های ASP.NET و PHP در شکل اجرای آنهاست.در PHP در هر بار اجرای اسکریپت کدهای PHP تفسیر می شود ولی در دات نت یکبار کدها کامپایل می شوند و در دفعات بعد کدهای اجرایی هستند که اجرا می شوند.
از این لحاظ بخصوص در نرم افزارهای تحت وب با حجم کد بالا اجرای کدهای کامپایل شده به مراتب سرعت بیشتری خواهند داشت.البته شرکت های مختلفی برای PHP ابزارهای Accelerator و Caching نوشته اند اما به هر حال در دات نت اینکار بصورت ذاتی و بدون نرم افزار خاص دیگری انجام می گیرد.

سرعت توسعه نرم افزار
اگر قرار باشد فقط چند خط برای نوشتن در صفحه یا گرفتن پارامتری از کاربر داشته باشیم مطمئنا" نوشتن با PHP ساده تر و سریعتر خواهد بود.اما هدف دات نت تسریع در نوشتن سایت های بزرگ با فرم ها و اطلاهات متعدد است. در ASP.NET از طراحی صفحاتی که Web Form نامیده می شوند تا حتی دسترسی به بانک اطلاعات و ماهیت های مختلف اطلاعات ، نمایش اطلاعات (مانند جدول) ابزارهای بصری وجود دارند که این در نهایت کار را بسیار ساده تر می کند همچنین برخی مسائل را به راحتی می توان به فریم ورک دات نت سپرد (مانند Caching , اعتبار سنجی اطلاعات ورودی Authentication و ...) همچنین استفاده از کتابخانه غنی دات نت باعث می شود که نیاز چندانی به استفاده از کتابخانه توابع خارجی نباشد که این در توسعه نرم افزار به صورت تیمی و پشتیبانی یک مزیت به شمار می رود البته در PHP نیز ابزارهایی برای تسریع طراحی و نوشتن اسکریپتها وجود دارند اما هر کدام برای شرکت های مختلفی است و شکل کار متفاوت می باشد.

سرعت اجرای نرم افزار
همانطور که اشاره شد صفحات و کدهای ASP.NET کامپایل می شوند و قابل حدس است ، سرعت اجرای آنها نسبت به اجرای اسکریپت PHP یشتر است و البته این کاملا درست است.اما در واقع شرایط به همین سادگی نیست ، در اسکریپتهای PHP مفسر سریعا" کدهایی که بایستی تفسیر شوند را اجرا کرده و خروجی را به مرورگر کاربر می فرستد. اما در ASP.NET به غیر از کدهای نوشته شده توسط برنامه نویس چندین ماژول در لایه های دیگیری اجرا می شوند (مثلا" تنظیمات را می خوانند ، خروجی کنتر های وب فرمها را تولید (Generate) می کنند ، اعتبار سنجی ها را انجام می دهندو اینها در سرعت اجرا موثر خواهند بود(البته امکاناتی برای حذف و بهبود سرعت وجود دارد) بنابراین با توجه به تجربه شخصی در اسکریپتهای ساده (در حد چند خط) و تعداد دفعات اجرای معمول سرعت اجرای PHP و ASP.NET آنقدرها اهمیت خاص ندارد . توجه کنید که به هر حال نرم افزار های بر تسریع اجرایPHP نیز وجود دارد . اما در اجرای نرم افزار های بزرگتر مانند web application هیی که از دهها یا صدها کلاس و لایه های مختلف تشکیل شده اند مطمئنا برتری با نرم افزار های کامپایل شده خواهد بود. (البته میدانید که در نسخه های کامپایل شده نیازی به قراردادن سورس کدها در وب سایت ارائه آن به مشتری نیست که این قضیه برای بسیاری شرکت ها بخصوص برای حمایت از حقوق نرم افزار و همچنین امنیت یک مزیت به حساب می آید).

یادگیری
پی اچ پی با هدف اولیه سادگی برای استفاده و یادگیری نوشته شده است و تاکنون نیز هدف را منظور کرده است.
بنابراین میتوان به سادگی گفت که یادگیری و استفاده از PHP ساده تر از ASP.NET (حتی با وجود زبانی با سینتکس ساده VB.NET ) است. استفاده از ASP.NET نیازمند آشنایی با مفهوم اولیه شی گرایی و همچنین پیچید گیهای خاص دانت (مثل رویداد های اجرای صفحات به جای اجرای خطی) است . در واقع یادگیری و استفاده از ASP کلاسیک ساده تر از ASP.NET و قابل قیاس با یادگیری PHP است. عموما طراحان وب سایت به دلیل سادگی استفاده و یادگیری PHP آنرا فرا میگیرند و برنامه نویسان حرفه ای و مهندسان نرم افزار هم علاقه بیشتر به دات نت و JAVA .

پایان
منبع (http://ahvazsell.ir/Doc.php)