مقایسه asp.net و php

مقایسه با 0 نظر

مقایسه asp.net و php

مقايسه و انتخاب ابزارهاي توسعه نرم افزار همواره يکي از بحث هاي داغ برنامه نويسان و توسعه دهندگان نرم افزار بوده است . از مقايسه Cو پاسکال تا مقايسه VBو ++VCو Delphiو با ورود به عصر اينترنت مقايسه امکانات Perl، پيتون PHP، ASP ، ASP.NET، JAVAبحث هایی بوده است که در فرم ها و سايت هاي تخصصي همواره به آن پرداخته شده است . البته خيلي اوقات اين قضيه از يک بحث فني تبديل به بحثي صرفا براساس علاقه و تعصب برنامه نويسان تبديل شده يا اينکه مقايسه تبليغاتي براي نمايش ضعف رقيبان و قدرت هاي يک ابزار خاص بوده است . مهم این است که يک برنامه نويس و توسعه دهنده نرم افزار به زبان ها و پلات فرم هاي توسعه نرم افزار صرفا به عنوان يک ابزار نگاه کند و براساس نيازهاي کمپاني يا تيم نرم افزاري و نيازهاي نرم افزار ، پلات فرم و ابزارهاي لازم را انتخاب کند . مباحثي مثل علاقه شديد به مايکروسافت يا ضديت با آن به نظرم شيوه حرفه اي و درستي براي انتخاب ابزارهاي طراحي و توسعه نرم افزار نيست. اين روزها در ايران مقايسه و انتخاب دو زبان و تکنولوژي خاص يعني PHPو ASP.NETبحث داغي است و البته با گذشت زمان تقريبا هر گروه يکي از اين تکنولوژي ها را به عنوان ابزار اصلي توسعه نرم افزار و سايت ها انتخاب کرده است .

پي اچ پي PHP:

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

تکنولوژي ASP.NET:

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

سيستم عامل :

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

همانطور که اشاره شد پي اچ پي براي طراحان سايت و گريز از پيچيدگي هاي ابزارها و زبان هاي آن روزگار ايجاد شده است و بنابراين PHPاوليه يک ابزار ساده و نه چندان پيچيده بوده است . البته PHPدر اين سال ها ارتقاء پيدا کرده است اما هنوز نقص هاي اوليه اي را دارد ، مثلا با وجود شي گرايي هنوز دستورات و توابع زيادي از آن ارتباطي با شي خاصي ندارد و يا خاصيت هاي حرفه اي شي گرا را ندارد ، اما دات نت فراتر از يک زبان است و مجموعه از کتابخانه هاي استاندارد و زبان هايي که تقريبا تمام قابليت هاي زبان هاي روز دنيا را دارند . سينکس حرفه اي، استاندارد و جذاب #Cو يا سينتکس ساده و کارآمد VB.NETو البته #Jو ++Cو چند زبان ديگر نيز وجود دارند . دات نت کاملا شي گرا است و معماري آن حرفه اي است و از اين جهت با JAVA( آنرا را با جاوا اسکريپ اشتباه نگيريد ) قابل مقايسه است . در واقع از لحاظ معماري JAVAو دانت نت پلات فرم هايي با معماري Enterpriseهستند و PHPزباني ساده با تمرکز براي نوشت اسکريپ هاي وب شرکت ZENDکه در حال حاضرEngineاصلي PHPرا ارائه مي دهند و برخي شرکت هاي ديگر تلاش هايي براي ارتقاء و ايجاد فريم ورک حرفه اي تري براي PHPدارند اما در کل و از لحاظ مهندسي نرم افزار معماري دات نت برتري محسوسي نسبت به PHPدارد . در بعد ديگر ابزارهاي کار با دات نت و آموزه ها و پتانسيل دات نت نوشتن نرم افزارهاي با معماري بهتر را امکان پذير مي کند و حتي بصورت پيش فرض معماري چند لايه در دات نت وجود دارد . همچنين نرم افزارهاي مهندسي نرم افزار مانند ابزار CASETools، Rationalو ... همخواني با دات نت دارند .
يکي از مهمترين تفاوت هاي ASP.NETو PHPدر شکل اجراي آنهاست . در PHPدر هر بار اجراي اسکريپ کدهاي PHPتفسير مي شود ولي در دانت نت يکبار کدها کامپايل مي شوند و در دفعات بعد کدهاي اجرايي هستند که اجرا مي شود . از اين لحاظ بخصوص در نرم افزارهاي تحت وب با حجم کد بالا اجراي کدهاي کامپايل شده به مراتب سرعت بيشتري خواهند داشت . البته شرکت هاي مختلفي براي PHPابزارهاي Acceleratorو Cachingنوشته اند اما به هر حال در دات نت اينکار بصورت ذاتي و بدون نرم افزار خاص ديگري انجام مي گيرد .

سرعت توسعه نرم افزار :

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

سرعت اجراي نرم افزار :

 

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

يادگيري :

 

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

بازار کار :

 

دو معيار براي سنجش بازار کار وجود دارد يکي سايت هاي خارجي و ديگري بازار ايران، اگر نگاهي ساده به سايت هاي کاريابي خارجي مانند (مونستر يا YahooJob) داشته باشيد خواهيد ديد که هم براي برنامه نويسان PHPو هم براي ASP.NETموقعيت هاي شغلي وجود دارد اما نکته قابل توجه حقوق بالاتر و همچنين شرکت هاي معتبري هستند که براي استخدام برنامه نويسان ASP.NETآگهي داده اند . در ايران نيز عموما شرکت هاي معتبر نرم افزاري که به شکل سنتي در پلات فرم وابسته به ويندوز فعاليت مي کنند علاقه مند به استخدام برنامه نويسان ASP.NETهستند و شرکت هايي که روي ترجمه ، ارائه ابزارهاي پشتيبان يا تغييرات روي نرم افزارهايOpenSourceمعروف خارجي کار مي کنند و يا نيازمند به پياده سازي سايت هايي در لينوکس هستند علاقمند به استخدام برنامه نويسان PHPهستند .
شايد سوال پيش آيد که چرا با وجود برخي برتري هاي ASP.NETهمچنان تعداد زيادي برنامه نويس PHPو نرم افزارهاي تحت وب با اين زبان نوشته مي شود . يکي از مهمترين دلايل آن همانطور که قبلا اشاره شد ارزاني کار با ترکيب PHPو لينوکس است که به آن اختصارا LAMPگفته مي شود . اجرا و طراحي يک وب در بستر ويندوز با در نظر گرفتن هزينه لايسنس ويندوز سرور ، SQLServerو محيط توسعه VisualStudioدر قياس با ارزاني و حتي رايگان بودن سيستم عامل لينوکس و MYSqlو محيط هاي توسعه PHPدليل مهمي براي انتخاب ترکيب PHPو لينوکس بخصوص براي برنامه نويسان مستقل در خارج از کشور است . اما قاعدتا در مورد پروژه اي بزرگ و شرکت هاي بزرگ نرم افزاري اين هزينه ها آنقدر قابل توجه نيست و بنابراين اين شرکت ها استفاده از پلات فرم هاي حرفه اي تر مانند JAVAو دات نت را انتخاب مي کنند .

ديگر موارد :

 

يکي از خصوصيات PHPکدباز يا OpenSourceبودن آن است که توسط طرفداران PHPبه عنوان يک مزيت به شمار مي رود . اين قضيه اين اميدواري را ايجاد مي کند کهPHPبا عدم پشتيباني در آينده مواجه نخواهد بود و به روند رو به توسعه خود ادامه خواهد داد اما از طرفي با نگاه واقعگرايانه خواهيم ديد که مفسر اصلي و برخي از مهمترين ابزارهاي PHPتوسط يک شرکت خاص (Zend) عرضه مي شود و در عين حال مايکروسافت توانسته پيشرفت قابل توجهي در مقايسه در ابزارها و بسترهاي توسعه نرم افزار خود ايجاد کند . همچنين نکته اي که براي فارسي زبانان قابل توجه است پشتيباني ذاتي دات نت از يوني کد و رشته هاي فارسي است . در PHPاگرچه ارسال يا دريافت اطلاعات فارسي امکان پذير است اما در واقع خود PHPدرک درستي از آن ندارد و اين قضيه در زمان کار پيچيده با رشته ها مشخص تر است .

کداميک را انتخاب کنيم ؟

 

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