PHP в сравнении с ASP.NET - давайте поспорим
Всё началось со прочтения мною статьи Jason Sexton PHP versus Microsoft ASP.net – A Straightforward Comparison. Пусть даже автор и пытался сказать, что сравнение честное, но я ему не особо то верю, особенно при учёте того, что материалы были опубликованы на сайте, продвигающем CMS на ASP.NET.
Далее я приведу выдержки из его статьи и попытаюсь оспорить некоторые моменты.
Предисловие.
В создании сайтов для бизнеса дела обстоят таким образом, что в качестве программного продукта выбирается тот, который отвечает всем требованиям безопасности, справляется с нагрузкой, удобен в использовании и имеет широкие возможности для дальнейшего расширения. В сайтостроении основными конкурентами являются две технологии PHP и ASP.NET, кроме них в узком сегменте рынка присутствуют и другие решения на базе Python, Perl, Java и пр., но я считаю, что их будут использовать только в случаях крайней необходимости (например обеспечить высокую скорость работы или очень хорошую защиту данных). Нам же, простым разработчикам сайтов, остаётся выбирать из двух самых доступных и популярных платформ для создания сайтов.
Бесплатная технология?
PHP бесплатный язык программирования сам по себе, но то же самое можно в некоторой степени сказать и об .NET, поскольку фреймворк бесплатен то же. К тому же есть бесплатная среда разработки для .NET Visual Web Developer Express Edition, которую можно скачать с сайта asp.net + в добавку к этому существует еще бесплатная редакция базы данных MSSQL Express, что позволяет реализовать полноценную связку ASP+MSSQL. Короче говоря все эти технологии бесплатны.
Результат: PHP 1 – ASP.net 1
Поддержка
PHP поддерживается OpenSource сообществом, а ASP Мелкософтом, и в данном случае PHP проигрывает сопернику т.к. у него очень хороший набор документации, среда разработки и, что самое главное, эти все данные и софт сконцентрированны в одном месте - на сайте Мелкософта. Конечно если основательно покопаться в сети, то можно найти достаточно информации и по PHP, но это уже дело профессионалов, а новички могут здесь легко потеряться.
Результат: PHP 0 – ASP.net 1
Язык и разработка
Автор данной статьи указывает на то, что PHP уже давно не развивается с точки зрения огранизации языка и иногда бывает очень непонятен, а вот ASP.NET можно программировать на VB.net, C#, J#, C++, что намного проще и у ASP есть куча библиотек и дополнений, как платных так и бесплатных и ASP ещё свободно совместима с предыдущими версиями, благодаря чему эта технология просто супер.
Я не согласен насчет такой трактовки. PHP развивается, но тянет за собой некоторые недочеты для совместимости со старыми версиями. Язык довольно таки простой и понятный, по этому на нем может программировать кто-угодно прочитав небольшое руководство. Что же касается ASP.NET то это C# и точка, а VB.net, J#, C++ программирование на ASP это просто-напросто коммерческий подход Мелкософта - они хотят сделать так что бы на их технологию перешли программисты, которые специализируются на разных языках. А библиотек под PHP хватает, нужно только знать где их искать, а некоторые технологии настолько удобны, то .NET просто отдыхает ![]()
Результат: PHP 1 – ASP.net 1
Безопасность
Автор оригинальной статьи ссылается на то, что PHP не насколько безопасен, как .NET и в доказательство своих слов приводил статистику по найденным багам и критическим апдейтам, например ISS6 более 3 лет не имел ни одного критического апдейта, а у PHP было обнаружено коло 4965 уязвимостей за все время 400 уязвимостей у Apache, в то время как у ISS 46 и 14 у ASP.NET. Кроме этого говориться о том, что PHP не имеет достаточно хорошей модели защиты и нужны очень хорошие навыки программирования, что бы создать безопасное приложение, а у ASP есть встроенные компоненты защиты, которые позволяют программисту изначально писать надежный код.
Мне только вот интересно, почему автор статьи не обратил внимание на то, что код у PHP и Apache открытый, а у .NET и ISS закрытый и следовательно все баги, найденные в PHP заслуга программистов всего мира, а баги .NET ищут только программисты Мелкософта, которых значительно меньше. То, что ошибку не нашли ещё не значит что её нет :). А точнее, можно сказать, что в платформе .NET на каждую найденную ошибку приходиться около 4 не найденных. Следует так же отметить, что PHP существует намного дольше чем .NET и нельзя сравнивать кол-во ошибок за всё время существования языка. Что касается безопасности, то вы уж извините, но если программист корявый, то его даже .NET не спасёт, но поскольку PHP проще учится на первый порах, то корявый программистов на PHP намного больше, чем на .NET, а безопасность платформы здесь ни при чем.
Результат: PHP 1 – ASP.net 1
Скорость
ASP быстр, особенно благодаря тому, что он компилируется, кешируется, а потом уже исполняется, но PHP тоже можно скомпилировать и тогда работоспособность его приравнивается к .NET, так же нужно не забывать ещё и о грамотном программировании для улучшения скорости выполнения скриптов.
Результат: PHP 1 – ASP.net 1
Доступность хостинга
А вот тут, возникают трения, может где то в Америке хостинги на PHP и ASP одинаково доступны, но в мире ситуация складывается далеко не в пользу последнего с.м. статистику использования PHP в мире.
Результат: PHP 1 – ASP.net 0
Кроссплатформенность
Почему то этот фак вообще не учитывали в оригинальной статье, но мне кажется, что очень важно знать на какой операционной системе можно использовать ту или иную технологию. ASP.NET можно использовать на Windows или на Windows. PHP работает на Windows, Linux, Unix, MacOs, Solaris, короче везде. Думаю, что в данном случае комментарии излишни.
Результат: PHP 1 – ASP.net 0
Результат PHP 6 – ASP.net 5
Лично я думаю, что обе эти технологии достаточно хороши, только сайты на PHP нужно самому собирать и искать Фреймворки и платформы, а в ASP.NET это всё есть изначально, но зато изменить базовые принципы работы .NET технологии трудновато, так что либо привыкайте к тому, что Мелкософт советует либо учите PHP и делайте на нём так как надо. Синтаксис у C# намного приятнее PHPшного, но не потому, что это Мелкософтовцы такие умные, а потому, что они все c Java слизали
В дополнению к этом я прведу сравнительную таблицу между PHP5, PHP4 и ASP.NET, которая была взята здесь.
| PHP 4 | PHP 5 | ASP.NET | |
| Цена | бесплатно | бесплатно | бесплатно |
| Цена платформы |
бесплатно | бесплатно | $$ |
| Скорость | высокая | высокая | низкая |
| Эффективность | высокая | высокая | низкая |
| Везопасность | высокая | высокая | высокая |
| Платформа (стабильность) | стабильная | стабильная | нестабильная (за счет IIS) |
| Платформа для работы | любая | любая | win32 (только на IIS) |
| Доступность исходников |
да | да | нет |
| Обработка исключений | нет | да | да |
| Поддержка ООП | слабо | хорошо | хорошо |
Вообщем вам рещать что лучше, а что хуже. А для начала могу посоветовать только одно учите C++ и Java, а дальше вы со всем разберётесь.




11.03.2008 в 13:30
Спорить, как призывает заголовок статьи, я устал. Чтоб закрыть дя себя споры, мои соображения по сравнению изложил в своей статье.
http://tmanager.ru/russian/php.html
11.03.2008 в 14:27
Могу сказать, что бы оба мыслим в правильном направлении. Кстати я недавно совсем заметил, что в ASP.NET (framework 3.5) наконец-то появилась нормальная модель MVC
11.03.2008 в 23:44
MVC — это что-то вроде Model-View-Controller?
* * *
Самое главное — я хочу работать, а не бороться.
Помню, всё проклял, пока не допёр, что поле в таблице почему-то нельзя назвать “level”. SQL-сервер позволял, и отрабатывал запрос, когда получал его через свою админку. Толкаешь запрос через OleDbConnection — ругается на запрос. Поменял на “m_level” — всё заработало. И ТАК ВЕЗДЕ.
12.03.2008 в 08:41
Это и есть Model-View-Controller который в теории должен быть изначально. А теперь еще прийдется бороться и с ним
28.03.2008 в 22:24
Ну, здесь тоже можно много с чем поспорить.
Низкая эффективность ASP.NET, нестабильность IIS - просто нужно их нормально сконфигурировать, и будет все ОК. Это из той же области, когда дефолтная конфигурация MySQL проигрывает в плане производительности MSSQL Server. Если нормально настроить MySQL, то он оставит далеко позади MSSQL.
Доступность исходников - не знаю, плюс ли это в данном случае. Один из бывших разработчиков PHP (не помню, как его звали, но могу найти) заявлял, что баги, связанные с безопасностью, исправляются по три года.
Мне несколько раз приходилось сталкиваться с исходниками PHP (я интегрировал PHP в приложение), могу только сказать, что код (и его документация) во многом оставляет желать лучшего.
Про безопасность PHP4 я вообще молчу. И назвать ее высокой у меня просто не повернется язык. Да и скорость работы ниже, чем у PHP5 (особенно в случае кода, работающего со множеством объектов).
18.07.2008 в 13:32
Да тут многое высосано из пальца, даже компилированный PHP не угонится за ASP.NET, ASP.NET кэширует в памяти уже машинный код, а PHP свой byte код, в итоге он его интерпритирует!. в PHP с завидной регулярностью через пару релизов всплывают старые глюки, что очень сильно напрягает. Различные языки программирования сделаны также для того, чтобы было удобно работать командами знающие различные языки программирования. PHP по качеству не дотянет до ASP.NET, а .NET можно сравнивать разве что с Java, при этом Java также очень сильно проигрывает в скорости. Да и есть такой проект как http://mono-project.com так что .NET есть там, где есть PHP!
19.07.2008 в 09:13
И все таки я считаю, что многое очень зависит еще от программной платформы/фреймворка. Я могу с полной уверенностью сказать, что например .NET второй версии намного хуче, чем платформа http://symfony-project.org/ написанная на PHP.
А по поводу MONO смогу ответить только после того, как будет выпущен хотя бы первый релиз v1.0.
08.09.2008 в 00:11
У меня складываетая очень стойкое впечатление о тех, кто ругает php так, как, скажем, в этом обсуждении.
Я уверен, что такие ругатели ни разу не отвечали ни за один серьёзный проект (неважно — на ASP.NET или php).
Ибо если бы отвечали хоть раз — НИКОГДА бы не приводили тех аргументов, что привели. Ну не стали бы никогда рассуждать о том, кто быстрее!!!