المعلوماتية > برمجيات

مقارنة بين الـ ASP.NET والـ PHP

تتوفر الآن عديدٌ من أطر العمل (Framework) والتقنيات التي تمكّننا من بناء أي تطبيق ويب (Web application) بسرعة وكفاءة، وبسبب تنوع الخيارات الكبير؛ يجب دراسة الخيارات المتاحة منها واستخدام الأفضل عند البدء بمشروع جديد واختيار ما يُناسب احتياجاته. 

ومن أشهر الأطر والتقنيات المستخدمة حاليًّا (1): الـ ASP.NET التي طوّرتها مايكروسوفت Microsoft، وPHP التي بدأ بتطويرها راموس ليردورف (Rasmus Lerdorf (2، فما هما؟ وما الفروق بينهما؟ وكيف يمكنك اختيار الأفضل لمشروعك؟

تُعدّ لغة PHP إحدى أشهر لغات البرمجة المستخدمة في تطوير تطبيقات الويب، ومن الميزات المهمة فيها إمكانيةُ تضمين أكواد بلغة الـ PHP ضمن وسوم صفحة الـ HTML مباشرةً لجعلها ديناميكية Dynamic (3). 

أما الـ ASP.NET التي طوّرتها شركة مايكروسوفت Microsoft؛ فتُعدّ بيئةَ تطوير متكاملة تدعمك بالعديد من الأدوات الأساسية التي تحتاجها في بناء موقع ويب متكامل بأقل جهد ممكن (3). تستخدم بيئة الـ ASP.NET لغةَ الـ C# لغةً أساسية في تطوير التطبيقات، علمًا أنك تستطيع استخدام لغات أخرى تدعمها مايكروسوفت مثل الـ Visual Basic) VB)، ولكنّ لغة الـ C# هي أكثر اللغات استخدامًا. 

ومن جهة حقوق الملكية؛ تكون لغة الـ PHP مفتوحةَ المصدر، على عكس الإصدارات السابقة لـ ASP.NET التي تملكها مايكروسوفت، ولكن؛ توجّهت مايكروسوفت مؤخرًا إلى عالم البرمجيات المفتوحة المصدر، وأصبح الإصدار الأخير من بيئة الـ ASP.NET مفتوحَ المصدر (8). ويدعم كلًّا من هذه التقنيات مجتمعٌ ضخم يقدم مساهماته في إغنائها، إضافة إلى أنّ كلتيهما تساعدان على إنشاء مواقع ويب ديناميكية (Dynamic Website) عن طريق تنفيذ التعليمات في جانب الخادم (server) لتغيير محتوى الموقع، ثم إرسال المحتوى الجديد ليُعرَض لدى المستخدم (client- جانب العميل) (3).

تستطيع استضافة الموقع المبني بلغة PHP في أي نظام تشغيل متوفر وأيّة برمجية إدارة خوادم الويب (Web Server Software)، في حين تتطلب الـ ASP.NET نظامَ تشغيل windows مع IIS Internet Information Service (4)، ولكن مع توجُّه مايكروسوفت مؤخرًا إلى البرمجيات المفتوحة المصدر، ومع إطلاق الإصدار ASP.NET Core؛ أصبح بالإمكان استضافة تطبيقات الويب الخاصة بالـ ASP على كلٍّ من نظام التشغيل لينوكس Linux وويندوز Windows واستخدام أحد خوادم الويب الآتية (Nginx أو Apache أو IIS) في حال كان التطبيق يستخدم خادم الويب "Kestrel" الذي أطلقته مايكروسوفت مع الـ ASP.NET Core (5).

توفر كلا التقنيتين مجموعةً غنية من الأدوات للتعامل مع قاعدة البيانات، وتستطيع اختيار قاعدة البيانات التي تناسب احتياجاتك؛ إذ تستطيع مثلًا ربط موقعك بقاعدة بيانات (Oracle) أو (Microsoft SQL Server) أو (MySQL) أو قاعدة بيانات أخرى (no-SQL Database) مثل mangoDB، ولكن؛ جرت العادة أن تُستخدَم قاعدة البيانات MySql عند التطوير باستخدام الـ PHP، واستخدام قاعدة البيانات MS SQL Server عند التطوير باستخدام الـ ASP.NET (3).

من المتطلبات الضرورية اليوم سرعةُ إنجاز المَهمات وسهولة تعديها، وأن يكون هناك سلاسة في التعديل عند الصيانة (maintablity) أو التوسع (scalability) بغيةَ مجاراة تغيّر متطلبات الأسواق الجديدة، فقد أصبح من المهم أن تساعد التقنيات المستخدمة في هذه النواحي وفي تقصير دورة التطوير (development cycle) لمجاراة تغير متطلبات العمل. وهنا تتفوق بيئة الـ ASP.NET على لغة الـ PHP؛ إذ تُقدّم ال ASP.NET عديدًا من الأدوات المُضمّنة التي تساعد على ذلك، على عكس لغة PHP حين استخدامها دون الاعتماد على أطر عمل برمجية؛ إذ إنّ غياب أطر العمل هذه يعني أنه يجب عليك أن تبني بنفسك عديدًا من الميزات التي تدعمها الـ ASP.NET افتراضيًّا وعلى نحو جاهز؛ مثل التحقق من صحة البيانات (validation) وتوليد عناصر الويب (markup generation) وغيرها من الأدوات (3).

يُعدّ الأمن والحماية من ضروريات الأنظمة الموزعة (Distributed System) مثل تطبيقات الويب، خاصةً تلك التي تحتوي معلومات المستخدمين الحساسة؛ فكثيرٌ من الهجمات (وخاصة هجوم الحقن الخبيث  SQL Injection) تكون عن طريق عناصر دخل المستخدم أو عن طريق هجمات تزوير الطلبات عبر المواقع Cross-site Request Forgery CSRF.

وإنّ استخدام الـ PHP بدون أطر عمل Framework (مثل الـ CakePHP أو Laravel) لا يقدم أيّة حماية من الهجمات الآنفة الذكر، على العكس من استخدام الـ ASP.NET التي تقدم مجموعة من الأدوات لهذه الهجمات والعديد غيرها (3، 6، 7).

وأخيرًا؛ إنّ استخدامك إحدى التقنيات أمرٌ يرجع إلى المشكلة التي تحاول حلها وإلى الموارد التي تمتلكها (من موارد بشرية ومالية وغيرها)، ثم إنّ كلًّا من التقنيات مدعومة على نحو كبير من مجتمع المطورين الخاص بها وأثبتت جدارتها مع الزمن؛ فاختر ما يناسب احتياجاتك.

المصادر:

1_Trends.builtwith.com. n.d. Framework Technologies Web Usage Distribution. [online] Available at: هنا [Accessed 10 May 2020].

2_Php.net. n.d. PHP: History Of PHP - Manual. [online] Available at: هنا [Accessed 10 May 2020].

3_Mishra, A., 2014. Critical Comparison Of PHP And ASP.NET For Web Development. [online] Citeseerx.ist.psu.edu. Available at: هنا [Accessed 10 May 2020].

4_Mitchell, S., 2009. ASP.NET Hosting Options (C#). [online] Docs.microsoft.com. Available at: هنا; [Accessed 10 May 2020].

5_Docs.microsoft.com. 2020. Host And Deploy ASP.NET Core. [online] Available at: هنا; [Accessed 10 May 2020].

6_Wasson, M., 2012. Preventing Cross-Site Request Forgery (CSRF) Attacks In ASP.NET MVC. [online] Docs.microsoft.com. Available at: هنا; [Accessed 10 May 2020].

7_Litwin, P., 2004. Data Security: Stop SQL Injection Attacks Before They Stop You. [online] Docs.microsoft.com. Available at: هنا; [Accessed 10 May 2020].

8_Microsoft. n.d. ASP.NET | Open-Source Web Framework For .NET. [online] Available at: هنا [Accessed 10 May 2020].