Akbar Z. Behbood's Personal Weblog   /   Powered by WinCMS.Net Pro v2.0
Fa Tr Az GB En
RSS   ASP.Net 2.0/3.5 Web Developement & CMS Solutions by Behbood Wednesday 8 September 2010

ASP.NET بهتر است یا PHP؟ مقایسه اوپن سورسی ها با مایكروسافتی ها!


Page views: 2130
Authored by: Akbar Z. Behbood
Last modified: Sunday 7 December 2008 - 11:28 PM
Published date/time: Sunday 7 December 2008 - 11:27 PM

به هر فروم برنامه نویسی كه سر می زنید، حتماً به سوالاتی مانند "مقایسه ASP.Net با PHP، كدام بهتر است؟" مواجه خواهید شد. سوال كننده این گونه پرسش ها افراد آماتوری هستند كه هنوز درك صحیحی از برنامه نویسی نداشته و گویی برای كار در زمینه وب حتماً باید بر سر این دو راهی یكی را انتخاب و با دیگری مجادله كنند! در پاسخ به این پرسش ها نیز همیشه افرادی هستند كه با تعصب خاص از یكی از این دو مقوله دفاع كرده و با مقابل هم قرار دادن محصولات مایكروسافت و نرم افزار های متن باز (Open Source) با قضیه بصورت حیثیتی برخورد می كنند در حالیكه تنها تجربه یكی را داشته و زبان انتخابی خود را بر تكنولوژی ای كه حتی امتحان هم نكرده اند، ارجح می داند. نكته اساسی اینكه برای یك برنامه نویس واقعی، زبان یا تكنولوژی یك ابزار است و با توجه به نیاز های پروژه یا راهبرد انتخابی، ابزار خود را انتخاب كرده و سوال "... كدام بهتر است؟" بدون عبارت "در زمینه ..." را ناقص می داند! بعنوان كسی كه تجربه برنامه نویسی تحت وب را از CGI و ASP Classic شروع كرده و چند سال در زمینه PHP و اوپن سورس فعالیت داشته و در نهایت راهبرد تكنولوژی های مایكروسافت (.Net) را انتخاب كرده ام، بدون هیچ غرضی و با بررسی جنبه های مختلف، این دو مقوله را با هم مقایسه كرده ام.

PHP (Personal Homepage Processor) برای ساده سازی نوشتن سایت های سمت سرور بدون نیاز به برنامه نویسی سخت CGI ایجاد و با استفاده از مزایای متن باز بودن به پیشرفت هایی نائل شد از طرفی مایكروسافت، ASP (Active Server Pages) كه همان VBScript خودمان است را برای ورود به دنیای برنامه نویسی وب بدون برنامه نویسی ISAPI و برای جلوگیری از نیاز به JSP شركت سان، ارائه داد. توفیق های پی اچ پی با ارائه نسخه 5 و ورود به دنیای شی گرا (Object Oriented) باعث پیشی گرفتن از ASP كلاسیك شد و ظاهر بینان، این قضیه را موفقیتی برای اوپن سورس در مقابل مایكروسافت دیدند در حالیكه مایكروسافت قبلاً اعلام كرده بود ASP را نه برای وب سایت های غول پیكر و application های بزرگ، بلكه برای رفع نیاز وب سایت های متوسط ارائه داده است و طبیعتاً در سایت های بزرگ دچار افت نسبی سرعت خواهد شد. تا اینكه مایكروسافت تكنولوژی جدید دات نت را ارائه و در پی آن ASP.Net 1.0 و در سال بعد ASP.Net 1.1 را بعنوان رقیبی جدی برای PHP روانه بازار كرد. این تكنولوژی علی رغم شباهت اسمی، نسخه جدید ASP نبود ولی برنامه نویسان سنتی و ویژوالی مایكروسافت را قادر می ساخت مانند برنامه نویسی تحت ویندوز، وب سایت ها پویا بسازند ولی اینكه مایكروسافت ایده های تحت وب را با ایده های تحت ویندوز می خواست یكی كند برای وب كاران قدیمی و من خوشایند نبود تا اینكه Whidbey یا همان ASP.Net 2.0 در اواخر سال 2004 ارائه شد!!!

این تحول بزرگ نه تنها PHP بلكه حتی JSP را هم بنظرم پشت سر گذاشت. در ASP.Net 2.0 تمام نیاز های برنامه نویسان وب بطور كامل لحاظ شده و از همان روز نخست كه با این تكنولوژی آشنا شدم دیگر با دنیای PHP خداحافظی كردم! اینكه زبان PHP را با ASP.Net مقایسه كنیم، كار كاملاً غلطی است چرا كه ASP.Net اصلاً زبان نیست و یك تكنولوژی محسوب می شود و اگر قرار باشد PHP را با زبان هایی كه در این تكنولوژی استفاده می شود مثلاً با C# مقایسه كنیم، مسلما PHP را فاقد صلاحیت برای مقایسه خواهیم یافت! دات نت فریم ووركی با معماری حرفه ای و كاملاً شی گرا و پی اچ پی زبانی اسكریپتی است و سایت های ساخته شده با آن تركیبی از كد PHP و HTML و بقول مهندسان نرم افزار، یك مشت Spaghetti Code است در حالیكه تمام اصول مهندسی نرم افزار را می توان در دات نت پیاده كرد برای مثال كد و طرح از هم جدا می باشند!

PHP زبانی محبوب است ولی از نظر پشتیبانی از شی گرایی و برخی موارد دیگر هنوز در اوایل راه تكامل است و بر عكس زبانی مانند C# (كه می توان آن را پیشرفته ترین زبان مدرن دانست) و یا VB.Net (زبان ساده انتخاب سنتی ها) زبان هایی قدرتمند و منطبق بر اصول هستند. اگر سایتی را با PHP نوشته باشید بایستی كد را هم تحویل مشتری دهید ویا آن را رمزنگاری كنید كه كاری بسیار غیر حرفه ایست! ولی در دات نت شما مختارید كه سورس را بدهید یا اصلاً در اختیار نگذارید و یا اصلا كد های برنامه نویسی را ندهید و فقط كد های HTML را بدهید!

برای اجرای سایت های نوشته شده با پی اچ پی، نیاز به انجین PHP و سرور Apache و احتمالاً برای دیتابیس به MySQL نیاز دارید بنابراین می توانید در ویندوز هم بدون مشكل اجرا كنید. (اینكه چرا همه پی اچ پی كاران از سرور لینوكس استفاده می كنند، به طرز فكر آن ها برمی گردد نه اینكه ایرادی برای ویندوز باشد) و برای اجرای سایت های نوشته شده با دات نت، به فریم وورك .Net، سرور IIS و احتمالاً برای دیتابیس به SQL Server نیاز دارید. (اینكه چرا دات نت كاران از سرور ویندوز استفاده می كنند چون لینوكس نمی تواند از سرور IIS پشتیبانی كند هر چند بجای دات نت می تواند از Mono بهره ببرد)

در مورد معماری نرم افزاری، محیط استفاده از دات نت یعنی Visual Studio و همچنین تمام تكنولوژی های مورد استفاده در مجموعه عظیم dotNet Framework با نرم افزار ها و متدولوژی های مهندسی نرم افزار سازگار بوده و بر عكس در PHP حتی نمی توان كد را از طرح جدا ساخت تا چه برسد به رعایت سایر اصول مهندسی نرم افزار! در ضمن PHP از نظر سرعت اجرا بدلیل ساختار موتور آن از ASP كلاسیك بسیار سریعتر است و برعكس نسبت به ASP.Net ذاتاً كند است! یعنی كد PHP تفسیری است و در هر بار اجرا خط به خط تفسیر می شود در حالیكه ASP.Net یكبار كامپایل شده و در بقیه موارد بعنوان یك نرم افزار كامپایل شده در نهایت سرعت پاسخ می دهد. (اینكه بگویید مثلاً چرا فلان سایت از بهمان سایت سریعتر یا كند تر است ربطی به زبان ندارد، مربوط به نحوه پیاده سازی برنامه نویس آن است) این را هم در نظر بگیرید كه هنگام اجرای یك صفحه PHP، دستورات یكی یكی سریعاً اجرا و پاسخ به مرورگر ارسال می شود ولی در دات نت در چندین لایه بایستی پردازش انجام گیرد تا خروجی ارسال شود ولی نكته مهم، ذات كامپایل شدن آن است كه هم از لحاظ حفظ حقوق نرم افزار و مالكیت معنوی (یعنی اینكه سورس را ندهیم) و هم از لحاظ مهندسی كامپیوتر، ارجح می باشد.

از لحاظ پشتیبانی از زبان فارسی، مسلماً تكنولوژی های مایكروسافت با پشتیبانی كامل از یونیكد بدون هیچ دردسری نیاز شما را برطرف می كند و بالعكس Php تصور صحیحی از یونیكد نداشته و هرچند تحت شرایطی درست كار بكنند ولی عملاً اطلاعات فارسی موجود در دیتابیس سایت شما بدلیل انكدینگ های نا معلوم فقط به درد خودتان خواهد خورد و هیچگاه مثلاً نخواهید توانست مطالب فارسی موجود در دیتابیس سایت خود را مستقیماً وارد یك نرم افزار تحت دسكتاپ كنید!

در مورد سرعت توسعه پروژ ها، صد در صد توسعه نرم افزار در محیط دات نت بسیار مقرون به صرفه می باشد چرا كه اصولاً هدف استفاده از دات نت، ایجاد وب سایت ها بزرگ با فرم های متعدد است و با استفاده از كنترل های مفید و كتابخانه كد عظیم دات نت می توان ساخت صفحه ای را كه در Php یك روز وقت می برد را در دات نت یك ساعته تمام كنید! حال دو نوع سوال پیش می آید:

1- فلانی سایت بزرگی را با پی اچ پی در سه روز نوشت در حالیكه فلان شركت دات نت كار گفته بود این سایت تا چهار ماه آماده می شود! درسته؟ جواب: فلانی یك اسكریپت آماده را به شما قالب كرده است و خودش ننوشته! 90% php كاران ایرانی علت گرایششان به زبان PHP را آماده بودن انوع اسكریپت ها می دانند یعنی نه نیاز دارند و نه توانایی آن را كه اسكریپتی را خودشان از صفر بنویسند. این مورد، اصل prefabricate programming نیست در حقیقت بیشتر تقلب است. اوپن سورس بودن زبان به نرم افزار های توسعه داده شده با آن ربطی ندارد بلكه به پیشرفت خود زبان مربوط است. اینكه بگویید فلان سایت خوب است چون php اوپن سورس است، جمله بی ربطی است. در چند سال اخیر طرز فكری مانند یك انگل در جان جامعه IT ایران افتاده است، این ویروس صنعت نرم افزاری كشور این است كه برخی شركت ها كارشان شده دانلوئد یك سیستم رایگان و متن باز، ترجمه فایل زبان و تغییر نام سیستم و ادعای ساخت آن و در نهایت فروش با قیمت های بالا به افراد نا آگاه! در مدت تحقیقم متوجه شدم تمامی شركت های ایرانی PHP كار كه اقدام به فروش سیستم های مدیریت محتوا می كنند همگی با جعل نام یك سیستم رایگان مانند جوملا، ادعای ساخت آن را داشته و با نهایت افتخار و بدون كوچكترین توانایی تولید فنی، آن را بفروش می رسانند. حال فكر می كنید چند سایت دولتی كشور ما با قیمت های چند میلیونی بر روی سیستم های متن باز كه سورس آن در اختیار همه قرار دارد (با حالت رایگان كه نقض توافقنامه شده و یا پولی null شده!)، راه اندازی گردیده است؟!! جالب اینكه این اشخاص/شركت ها چنان به اوپن سورس تعصب دارند انگار نه انگار كه نه تنها برای توسعه اوپن سورس كاری نكرده اند بلكه چیزی از آن كاسته (دزدیده) و وارد بازار تجاری كرده اند!

2- اینگه می گویید php كار ها از اسكریپت های آماده استفاده می كنند و این بد است، در دات نت مگر از كامپوننت ها و كنترل های آماده استفاده نمی كنید؟ جواب: اینكه كل سیستم آماده باشد به این معنی است كه سیستم نه برای تطابق با نیاز مشتری توسعه داده شده بلكه این مشتری بوده كه نیاز هایش را برای سیستم وفق داده است و این یعنی نقض اصول توسعه نرم افزار. در ضمن استفاده از كامپوننت ها و كنترل های آماده به معنی ایجاد محدودیت نیست چرا كه استفاده از هر كدام از این موارد، نیازمند دانش فنی كامل در پیاده سازی و مدیریت پروژه است بگونه ای كه هر بخشی از تیم توسعه بر روی قسمتی از سیستم كار كند بدون اینكه به كار گروه بعدی خلل وارد كند و در نهایت كامپوننت های حاصله نه فقط در محیط وب بلكه حتی در محیط دسكتاپ نیز بكار رود!

در مورد بازار كار، توجه به این نكته اهمیت دارد كه می خواهید وارد شركتی شوید كه به تولید نرم افزار می پردازد یا به بومی سازی آن. اكثر شركت های علاقمند به ترجمه سیستم های آماده، از php كاران دعوت به همكاری می كنند و اگر به آگهی های استخدام دقت فرمائید تمام شركت های بزرگ نرم افزاری، معتبر و اهل فن از برنامه نویسان دات نت استفاده می كنند. این كه برای شركت كدام گزینه به صرفه تر است بسته به راهبرد شركت می باشد. پولی (تجاری) بودن نرم افزارهایی مانند SQL Server، Visual Studio و ... در مقابل رایگان بودن ابزار های PHP، هیچ خللی در قیمت یا كیفیت توسعه و ارائه محصول نهایی ندارد و اصولاً اینكه از اوپن سورس فقط بخاط رایگان بودنش خوشمان بیاید نهایت فلاكت است! این كه كدام را یادبگیرید بستگی به هدف شما دارد. اكثر دانشجویان، دات نت را یاد می گیرند چون تنها در محیط وب كاربرد ندارد بلكه مجموعه ای از تكنولوژی های نوین و پركاربرد است و مفاهیم آن مطابق با درس های ارائه شده در رشته های مهندسی نرم افزار می باشد و كتب فراوانی در این زمینه منتشر می گردند و بالعكس اكثر افرادی كه از رشته های غیر مرتبط علاقمند به طراحی وب شده اند، php را فرا می گیرند چرا كه یادگیری آن مستلزم دانش های دیگر نیست.

خلاصه كلام اینكه برای انتخاب زبان، نیاز دارید اول هدف خود را تعریف كنید زیرا هر زبانی برای هدف خاصی ارائه شده است و اگر شركت یا سایت معتبری با تعصب كامل، از تكنولوژی مورد استفاده خود، دفاع می كند، هدف تجاری دارد وگرنه استفاده از تكنولوژی های مایكروسافت به معنی این نیست كه اوپن سورس بد است یا بالعكس! كافیست جستجوی ساده ای در گوگل انجام دهید تا با هزاران نرم افزار موفق تجاری ساخته شده با بستر های اوپن سورس و یا هزاران نرم افزار اوپن سورس موفق ساخته شده با بستر های مایكروسافت آشنا شوید!


Comments:
مهرداد : Sunday 7 December 2008 - 11:30 PM

واقعاً مقايسه جامعي بود، بهبود جان دستت درد نكنه! عاليه!!!

guest
كيوان : Thursday 25 December 2008 - 9:36 PM

سلام مطلبتان بسیار جالب بود ، من قبلا با ویژوال استودیو پروژه وین کار کردم و با وب زیاد آشنا نیستم و میخواهم کار با وب را شروع کنم ، لطفا راهنمایی کنید

guest - E-mail
فارسي : Sunday 17 May 2009 - 7:19 AM

با سلام و بي غرض سوالي ميكنم كه ممكنه از سر بي اطلاعي باشه اگه اينايي كه گفتيد مزاياي asp رو ثابت ميكنه چرا سايت خودتون را با php ساختيد ؟
با تشكر

جواب: کدوم سایت من با PHP کار شده؟ Question
همه کار های من با تکنولوژی ASP.Net 2.0/3.5 هستند!

guest - E-mail
بی نام : Wednesday 27 May 2009 - 7:33 PM

مقایسه خوبی بود ، اما یک مقدار تند روی داشت!
بنده هم دات نت کار هستم و حاضر نیستم حتی یک لحظه به php برگردم.

guest
سید علی مهری : Wednesday 3 June 2009 - 9:59 PM

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

جواب: دوست عزیز، مقاله فوق برای کسانی بود که می خواهند یکی از دو پلتفرم را برای یادگیری انتخاب کنند و این بحث "کدام بهتر است" اگر روزی به پایان برسد که دیگر فلسفه پیشرفت به پایان رسیده! ولی جوابتان:

در مورد سرعت اتصال (کانکت) به دیتابیس! کدام دیتابیس؟ قدرت کار با ADO.Net یادتون رفته؟!
امنیت بالا!!!؟؟؟ امنیت به برنامه نویس ربط داره و حتی اگه منظورتون از امنیت استفاده بهینه از منابع سیستم هست که باز فریم وورک هایی مثل دات نت و J2EE بسیار بیشتر امن تر هستند.
در مورد امنیت برنامه های نوشته شده با زبان PHP هم به همین مطلب توجه بفرمائین:
http://news.netcraft.com/archives/2006/01/31/php_apps_a_growing_target_for_hackers.html

در مورد پشتیبانی از شیء گرایی در نسخه های آتی پی اچ پی، خاطر نشان شوم که دات نت ذاتاً و از چند سال قبل تر کاملاً بر اساس مفاهیم شیء گرایی ساخته شده است!
برای استفاده از PHP در ویندوز نیاز به نصب موتور PHP دارید ولی برای استفاده از ASP.Net در لینوکس، متاسفانه این لینوکس است که از IIS نمی تواند پشتیبانی کند، نیاز هم نیست! هرچند در جبهه مقابل مایکروسافت سرور IIS 7 رو برای پی اچ پی میزبانی بهتری کرده!

در مورد شباهت به زبان سی هم اگر این یک مزیت است که در دات نت شما با زبان بهینه شده #C می نویسید!!!
جمله "بیشتر سایت ها معروف با پی اچ پی نوشته شده" صحت نداره مگر اینکه تعریف دقیقی از معروف بودن سایت داشته باشیم. بلی طبق آمار NetCraft وب سایت ها موجود روی آپاچی زیاد تر از سرور های مایکروسافت هستند ولی توجه به سه نکته در آمار این سایت ضروریه: مایکروسافت به تازگی پا به این عرصه نهاده، سرعت رشد سرور های ایشان بالاتر است و صد البته که تنها آپاچی هایی روی سرور های لینوکس نصب هستند که هاستینگ های ارزان قیمت می دهند و سایت های مطرح دنیا از یونیکس و غیره استفاده می کنند نه لینوکس و حتی این پی اچ پی نیست که فقط از آپاچی استفاده میکنه بلکه چندین زبان قدرتمند دیگر هم بازار اون رو تشکیل میدند! پی اچ پی در سال 1996 و دات نت در سایل 2002 پا به عرصه گذاشتند، خودتون برید و آمار استقبال برنامه نویسان رو مشاهده کنید تا حقیقت دستتون بیاد که کدام گزینه سرعت رشد بالایی داشته اند!

طرز فکری که ازش یاد کردید اینه: بسیاری از غیرکارشناسان بدلیل استفاده از سیستم های رایگان پی اچ پی و عدم توانایی در ساخت سیستم های سفارشی و جهت خرج کمترین هزینه از بابت هاستینگ به PHP روی می آورند.

در ضمن به آمار سایت هایی مثل Zone-H هم توجه کنید و پس از تقسیم تعداد سرور های لینوکس بر تعداد سرور های هک شده لینوکس و مقایسه همین آمار در مورد سرور های اندک ویندوز بسادگی متوجه خواهید شد که این یک غلط مصطلح است که همه فکر می کنند لینوکس امن تره!!!

guest - E-mail
رضا : Sunday 28 June 2009 - 8:53 PM
guest
حامد : Monday 21 September 2009 - 1:07 AM

جامع و منطقی .

guest
بابک : Tuesday 9 February 2010 - 6:23 PM

من با نظر نویسنده کاملا موافقم. شما برای پیاده سازی یک سرویس و انتقال اطلاعات به نرم افزار های application دچار دردسر زیادی تو پی اچ پی می شید ولی تو دات نت به علت همسان بودن محیط اجرای نرم افزار دسکتاپ و وب و نیز پشتیبانی کامل از زبان های مختلف و انواع داده به راحتی می‌تونید انتقال اطلاعات رو پیاده سازی کنید و در ضمن یکی از این PHP کارای محترم بیاد و تمام مباحث RUP یا Agile رو روی یه سایت پی اچ پی پیاده کنه، غیر ممکنه ولی در دات نت می تونید به راحتی این کارو انجام بدید.

guest
محمد حسین امری : Wednesday 2 June 2010 - 1:27 AM

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

جواب: از لینک های زیر پروژه های دات نت به زبان سی شارپ و دانلود کنید:
http://www.microsoft.com/web/gallery/Categories.aspx?category=ContentMgmt
http://csharp-source.net

guest - E-mail







WinCMS.Net Pro

Download FREE CMS
WinCMS.Net Pro v2.0 was released
[ Download ]
Launche your website NOW!

Advertisements / Link Exchange
Login To System
:  
:  


Register a New Account
Forgot your password?
Site Statistics
Total Members: 152
Users Online: 3
Total Posts: 50
Total Visits: 649409

Powered by WinCMS.Net Pro v2.0.5 Commercial © Developed by www.netpro.ir - [ Not Registered Version / Akbar Z. Behbood ]