سیستم عامل
اگرچه اصولا انتخاب ابزار توسعه نرم
افزار ارجحیت بیشتری بر انتخاب سیستم عامل دارد اما در دنیای واقعی قضیه
به
این سادگی نیست و گاهی برنامه نویس براساس سیستم عامل ابزار خود را
انتخاب میکند. امروزه تقریبا دو بستر متفاوت
داریم از طرفی سیستم عاملهای
سرور ویندوز و از طرف دیگر نسخه های مختلف لینوکس و یونیکس. ویندوز
ابزار
رایج و آشنایی برای کاربران و برنامه نویسان است و از طرفی یونیکس
سیستم عامل ارزان تر ( و البته حرفه ای)
است. در ویندزو عموما ترکیبی از
دانت نت،IIS، SQL Server داریم و در یونیکس 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 دارد.
در بعد دیگر ابزارهای کار با دات نت و آموزه ها و
پتانسیل دات نت نوشتن نرم افزارهای با معماری بهتر را امکان پذیر
میکند و
حتی بصورت پیش فرض معماری چند لایه در دات نت وجود دارد. همچنین نرم
افزارهای مهندسی نرم افزار
مانند ابزار CASE Tools ، Rational و...
همخوانی با دات نت دارند .
یکی از مهمترین تفاوتهای 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
هایی که از دهها یا صدها کلاس و لایه های مختلف تشکیل شده
اند مطمئنا
برتری با نرم افزارهای کامپایل شده خواهد بود. البته میدانید که در نسخه
های کامپایل شده نیازی به قرار دادن
سورس کدها در وب سایت یا ارائه آن به
مشتری نیست که این قضیه برای بسیاری شرکتها (بخصوص برای حمایت از
حقوق نرم
افزار و همچنین امنیت) یک مزیت به حساب می اید.