PHP против ASP.Net - что лучше?

Обращаем ваше внимание, что статья написана в 2010 году. Возможности PHP с тех пор выросли, хотя платформа .Net ушла намного дальше. Под ASP.Net в статье подразумевается ASP.Net WebForms.

На сегодняшний день у разработчиков веб-сайтов есть богатый выбор относительно того, какой язык (или технологию) использовать для создания сайта. Вариантов много: Perl, PHP, ASP, ASP.Net, JSP, Coldfusion… Самыми распространенными (с большим отрывом от остальных) сегодня являются PHP и ASP.Net. Поскольку мы имеем большой опыт разработки с применением обеих технологий, хотелось бы максимально объективно провести сравнение между этими двумя платформами.

Краткое описание обеих технологий

PHP

PHP (Hypertext Preprocessor) – язык для написания серверных сценариев (скриптов). Интерпретатор языка бесплатен, с открытым исходным кодом, созданы версии для различных веб-серверов – прежде всего, для Apache и Internet Information Services. Актуальная на сегодняшний (2010 год) день версия интерпретатора – PHP5. В последнее время этим продуктом заинтересовалась и Microsoft – началось тесное сотрудничество с фирмой Zend, в результате которого появилась встроенная поддержка PHP в Internet Information Services 7-й версии (поставляется с Windows Server 2008) – ранее PHP можно было использовать только как внешнее расширение.

ASP.Net

ASP.Net (Active Server Pages .Net) – средство для разработки веб-приложений от Microsoft. ASP.Net – это не язык программирования, это технология, включающая в себя множество компонент. Актуальная сегодня (2010) версия – 4. Стоит заметить, что ASP.Net кардинально отличается от своего предшественника – ASP. Принцип работы ASP.Net-приложения совершенно иной и будет рассмотрен далее.

Сразу ответим на возможный вопрос – как можно сравнивать эти две технологии, ведь принцип их работы кардинально отличается. Тем не менее, эти технологии решают одну задачу – создание веб-сайтов, и неважно, какими средствами это достигается. Можно было бы сравнить PHP со «старым» ASP (не .Net), но он уже практически нигде не используется и поэтому не включен в обзор.

Общие принципы работы

PHP

PHP в чистом виде – это язык, который позволяет динамически выводить HTML-разметку и иную информацию (например, заголовки для Cookie и др.). Например:

<?php
print<p>Hello, world!</p>”;
?>

Возможна вставка PHP-кода в обычную статическую HTML-разметку:

<body>
<table>
<tr><td>
<?php
printI am content!”;
?>
</td></tr>
</table>
</body>

Таким образом, разработчик сам заботится о всей формируемой разметке.

ASP.Net Webforms

В отличие от PHP, здесь принцип работы совершенно иной – каждая страница состоит из двух файлов: файла с HTML-разметкой и ASP.Net-контролами (файл с расширением Aspx) и файла серверной логики (расширения vb или cs). Идея такова: в файле разметки – только разметка (фактически, описание внешнего вида страницы), в файле логики – только логика (программный код). И хотя можно и добавлять программный код в файл разметки, и в файле логики формировать HTML-разметку (фактически, использовать подход, аналогичный PHP), поступать так не рекомендуется – нарушается общая идея – отделение внешнего вида страницы от логики. Например, так выглядит файл с разметкой:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="MyLabel" runat="server" Text="">asp:Label><br />
<asp:Button ID="MyButton" runat="server" Text="Нажми меня!"OnClick="MyButton_Click" />
</div>
</form>
</body>
</html>

Соответствующий ей файл с бизнес-логикой:

namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void MyButton_Click(object sender, EventArgs e)
{
MyLabel.Text = "Кнопку нажали";
}
}
}

Как видно, в странице присутствуют теги, не свойственные HTML. Это – так называемые контролы ASP.Net. При компиляции они «рендерятся» в обычную HTML-разметку. Например, asp:Button или asp:TextBox будут преобразованы в <input type="text" />, asp:Hyperlink – в <a href="..."> и т.п. Каждый серверный контрол обладает некоторыми свойствами, например, содержимым, стилями и т.п.

Все созданные на странице серверные контролы доступны в файле с бизнес-логикой. Например, в примере выше программно осуществляется доступ к элементу MyLabel и задается его содержимое. Эти операции осуществляются на этапе компиляции страницы и к пользователю в броузер приходит готовая HTML-разметка.

Сравнение

Даже по объему текста для каждой из технологий видно, что понять принципы работы PHP гораздо проще, нежели ASP.Net. На наш взгляд – это одна из главных причин, почему PHP сейчас более распространен. «Порог вхождения» у PHP гораздо ниже, и новичку гораздо проще понять его принципы работы, чем сложную модель ASP.Net. Считать ли это достоинством или недостатком PHP? На наш взгляд, в данной ситуации есть и то, и другое.

Достоинством является простота изучения, однако она же является и недостатком: это приводит к тому, что низкий уровень разработчиков в PHP встречается гораздо чаще, чем ASP.Net. Если у программиста недостаточно опыта или знаний – то язык PHP он все равно освоит, в то же время при использовании ASP.Net возникнут трудности. Это означает, что обращаясь к PHP-разработчику, шанс получить низкокачественный продукт выше, чем в случае ASP.Net.

К несомненным достоинствам PHP мы бы отнесли его «низкоуровневость». В отличие от PHP, ASP.Net – попытка Microsoft применить при разработке Web-приложений те же принципы, что и при разработке Windows-приложений. Например, на страничке создается кнопка, для которой пишется обработчик события, который при нажатии, например, меняет текст у какого-нибудь серверного контрола, и так далее. Но такая модель не совсем применима при разработке веб-приложений. Протокол HTTP – это сеансовый протокол, работающий по принципу запрос-ответ. А Windows-приложения работают непрерывно (проводя аналогию, можно сказать, что они используют постоянное соединение). Поэтому для реализации аналогичного подхода пришлось применять множество абстракций и приемов. Все эти абстракции призваны скрыть «сеансовость» протокола HTTP. Достоинством их является то, что значительно ускоряется процесс разработки веб-приложения. Но если программист начинает изучение веб-разработки с ASP.Net – весьма вероятно, что он не сразу поймет истинные (физические) принципы работы веб-приложений. Например, если нужно получить от посетителя сайта какие-нибудь данные и обработать их (например, записать в базу данных), PHP-разработчику приходится создать html-форму, соответствующий скрипт, который получит от нее данные, обработает их, и вернет посетителю ответ, также в виде html-разметки – так и работают все веб-приложения: запрос-ответ. Если аналогичную задачу решает ASP.Net-разработчик, то форма за него уже создана, он лишь добавляет поле для ввода и кнопку, на которую прикрепляет обработчик события, в котором выполняются нужные действия по обработке введенных данных.

Очень похоже на то, как бы задача решалась в Windows-приложении. И начинающий разработчик может и не знать, что на самом деле при нажатии на кнопку реально произойдет отправка данных с формы, они будут автоматически обработаны, затем будет выполнена его логика (которую он поместил в обработчик события), после чего, опять же, автоматически будет выполнено формирование ответной HTML-разметки, которую получит посетитель.

Иными словами, начиная изучение сферы веб-строительства с PHP, программист раньше поймет и увидит реальные принципы работы Web, чем программист ASP.Net, от которого эти самые принципы пытаются скрыть.

Языки программирования

PHP

PHP сам по себе является языком программирования. Используется си-подобный синтаксис, отсутствует типизация переменных, в 5-й версии значительно улучшена поддержка объектно-ориентированного программирования.

ASP.Net

При создании веб-приложений ASP.Net можно использовать любой язык из платформы .Net – C# или Visual Basic.Net. Доступна вся функциональность библиотеки .Net Framework.

Сравнение

На наш взгляд, здесь со значительным перевесом выигрывает ASP.Net.

Во-первых, по возможностям PHP далеко позади от .Net-языков. Например, хотя в PHP5 (который вышел лишь летом 2004 года) и была значительно улучшена поддержка объектно-ориентированного программирования, но она по-прежнему слабее, чем в .Net, где языки (по крайней мере, C# и VB.Net) являются полностью объектными. В них нельзя создать просто функцию – только метод класса, нельзя создать просто переменную – только атрибут класса и т.п. В PHP нет перечислений (enum), нет событий («ручное создание» нельзя считать событиями, т.к. фактически встроенной возможности программирования с использованием модели событий нет), нет возможности перегружать методы (вследствие отсутствия типизации в языке) – это лишь некоторые неприятные особенности, с которыми приходится сталкиваться, используя PHP после серьезных объектно-ориентированных языков. В PHP нет поддержки многопоточности, есть проблемы с поддержкой Unicode (она есть, но реализована неудобно для разработчика, эту проблему обещают исправить в PHP6).

Во-вторых, PHP гораздо менее строгий язык, чем .Net-языки. В первую очередь – из-за отсутствия типизации. Переменные объявлять необязательно. В результате – множество опасных конструкций, которые не скомпилируются даже в компиляторе Си, в PHP будут выполнены, с непредсказуемым результатом. Некоторые из ошибок (например, неинициализированные переменные) можно увидеть, если включить режим отображения всех ошибок (error_reporting=all), но об этом нужно знать и помнить. Если человек начинает изучение программирования с PHP, то далеко не факт, что он будет информирован о необходимости «дополнительной настройки». К тому же, мы часто встречали такое, что начинающему программисту просто надоедают постоянные Notice об ошибках, и он их отключает. Часто в таких случаях сайт по-прежнему работает, и, возможно, даже правильно работает. Но рано или поздно возникнет такая ситуация, когда пропущенная ошибка приведет к серьезным последствиям (взлом, некорректность работы и т.п.). В .Net-языках такое сделать не получится: пока не будет исправлена ошибка – программа не скомпилируется.

Кроме того, в PHP нет исключений, выкидываемых самим интерпретатором. Например, если в .Net вы попытаетесь обратиться к несозданному объекту (ссылка есть, а new вызвать забыли), то у вас произойдет исключение. В PHP в лучшем случае вы увидите предупреждение (если вы не забыли настроить их отображение). Кардинальное отличие заключается в том, что исключение вы не пропустите никак – вместо ожидаемой страницы вы получите информацию о том, что возникла ошибка. В PHP к исходной странице где-нибудь будет добавлено сообщение с предупреждением. Его можно легко не заметить – например, если сообщение появится в малозаметном месте, или внизу страницы, куда вы редко заглядываете и т.п.

Даже если PHP-программист – опытный и знает обо всех тонкостях, описанных выше, по-прежнему существует человеческий фактор. Например, расстался разработчик вчера с девушкой, но работать надо. Однако во время работы программист не сконцентрирован на программе, мысли совсем о другом – повышается вероятность того, что он забудет где-то что-то проверить. Во многих случаях это может остаться незамеченным – интерпретация в PHP произойдет успешно. А в ASP.Net ошибку не пропустить, т.к. либо не пройдет этап компиляции, либо произойдет исключение.

PHP дает разработчику столько вольностей (потенциально опасных), что мы бы крайне не рекомендовали изучение программирования (именно программирования, а не веб-разработки) с PHP. Лучше всего начать с серьезного типизированного языка (например, тот же Си), а потом уже переходить на PHP, имея привитые полезные привычки (всегда объявлять и инициализировать переменную, не игнорировать предупреждения интерпретатора и т.п.).

То, что о чем в PHP нужно всегда помнить, в .Net-языках за вас проверяет компилятор. Пока не будет исправлена ошибка – программа не скомпилируется. Коснемся вопроса производительности. В ASP.Net исходный код компилируется единожды в исполняемый байт-код, в PHP – интерпретируется каждый раз. Согласно этому, ASP.Net должен работать быстрее, однако реальные тесты показывают примерно равную производительность. В некоторых случаях какая-то из технологий вырывается вперед, однако в целом можно сказать, что в этом вопросе технологии примерно равнозначны. К тому же, нельзя забывать о том, что время генерации страницы – это еще и время выполнения запросов в базу данных, которое может быть на порядок больше времени интерпретации и не зависит от используемого языка программирования.

Среды разработки

PHP

Под язык PHP существует множество сред разработки: родная Zend Studio, версия Eclipse для PHP, плагин под Visual Studio и т.п. Все они являются довольно развитыми средами с поддержкой множества современных возможностей сред разработки.

ASP.Net

Основной продукт, который используется для разработки веб-приложений на ASP.Net – это Microsoft Visual Studio. Есть и сторонние средства разработки, но они получили гораздо меньшее распространение.

Сравнение

Вообще среда разработки – это дело вкуса и привычки. По большому счету, все продукты как для PHP, так и для ASP.Net имеют встроенную подсказку (Intellisense), возможность доступа к базе данных, возможность отладки и т.п.

Однако несколько различий все же имеется. В разработке любых приложений очень помогает Intellisense, если ей научиться правильно пользоваться. Но в PHP она сама по себе не может так быть широко использована, как в ASP.Net – опять же, потому, что PHP – не типизированный язык. Например, у вас есть переменная-объект, которую вы получили не вызовом New, а вызовом метода, который вернул этот объект. В случае с ASP.Net известно, какого типа объект возвращает каждый метод, и Intellisense далее сможет подсказать вам атрибуты и методы у созданного объекта. В PHP такое неосуществимо: нет типизации – значит неизвестно, данные какого типа возвращает метод. Конечно, это можно в комментариях указать принудительно. Но это требует лишней работы, лишнего времени – общая производительность программиста снижается.

После того, как мы «распробовали» Visual Studio, захотелось найти что-то подобное для PHP. Мы узнали, что есть такой продукт, как Zend Studio. Загрузили, начали установку – выяснилось, что восклицательный знак в имени пользователя Windows не позволит выполнить ее успешно. Пришлось создать новую учетную запись и устанавливать среду из-под нее. Но главное, что заставило нас удалить Zend Studio через 2 часа после установки – это ее медленная работа. Нередко перед выводом подсказки Intellisense задумывалась на 3-6 секунд. Скорее всего, сейчас эта проблема устранена, но с Visual Studio такого не было с момента ее появления. Вскоре мы нашли плагин для работы с PHP под Visual Studio и по сегодняшний день пользуемся им.

Резюмируя, можно сказать что в целом ситуация со средами разработки под обе платформы схожа, за исключением некоторых описанных выше нюансов.

Цены

PHP

Общеизвестно, что весь LAMP-стек (Linux Apache Mysql PHP) бесплатен. Бесплатны Unix-подобные операционные системы, бесплатен веб-сервер Apache, бесплатен интерпретатор PHP и бесплатна база данных MySQL (за исключением ее коммерческого использования, в этом случае лицензией предусмотрена оплата за базу данных). Со средами разработки ситуация иная. Например, Zend Studio – платный продукт. За Zend Encoder, который позволяет защитить приложение путем его компиляции, тоже нужно платить.

ASP.Net

В отличии от Unix-платформы, общепринят стереотип «все от Microsoft платно и дорого». Раньше ситуация действительно была близка к истине. Но сейчас все изменилось. Например, Express-версия Visual Studio полностью бесплатна и обладает довольно широкими возможностями. Также бесплатна и Express-версия SQL-сервера (которая имеет весьма несущественные ограничения, вроде поддержки баз только до 4 Гб, но если у вас проект настолько масштабный, что этого объема не хватает – скорее всего, и средства в него вкладываются серьезные, на фоне которых стоимость платной версии может оказаться невысокой). Проводится множество акций, в рамках которых можно получить бесплатно операционные системы, среды разработки т.п. Реализуется множество студенческих программ, программ сотрудничества с ВУЗами, научными центрами и т.д. Одним словом, за последние несколько лет Microsoft сделала свои продукты значительно более доступными.

Сравнение

В целом ситуация описана выше.

Несколько лет назад Windows-хостинг стоил дороже, чем Unix-хостинг. Но сейчас цены сравнялись – вы можете убедиться в этом сами, просмотрев тарифы ведущих хостинг-компаний (например, «Мастерхост»). Кстати, возможностей у Windows-хостинга больше: почти любой из них поддерживает как ASP.Net, так и PHP. В то же время Unix-хостинг не позволит вам использовать приложения ASP.Net.

Базы данных

PHP

Традиционно вместе с PHP используется база данных MySQL. В более редких случаях – PostgreSQL, имеющая более широкие возможности.

ASP.Net

Чаще всего ASP.Net-приложения используют сервер баз данных от Microsoft – Microsoft SQL Server.

Сравнение

Обе технологии позволяют работать с любыми базами данных. В PHP есть возможность работы с Microsoft SQL Server, и из ASP.Net-приложений можно обращаться к MySQL или к любой другой базе данных. Но поскольку чаще всего встречаются связки, описанные выше – вкратце коснемся сравнения MySQL и Microsoft SQL Server. Здесь с большим перевесом выигрывает сервер от Microsoft. Возможностей у их сервера значительно больше. Например, поддержка процедур и триггеров в MySQL появилась лишь с выходом 5-й версии в 2005 году. У Microsoft SQL Server эта возможность была уже в 90-х годах.

Единственным преимуществом MySQL может казаться бесплатность, но этот вопрос поднимался ранее. Express-версия Microsoft SQL Server также бесплатна и имеет следующие ограничения: использует не более одного процессора (физического, т.е. если процессор один, но двухядерный – будут использоваться оба ядра), не более 1 Гб оперативной памяти и размер самой базы данных ограничен цифрой в 4 Гб. Но разумно предположить, что если в вашем проекте этих цифр мало – то этот проект довольно масштабный, и средства позволяют приобрести более серьезную версию.

И еще одна приятная особенность MySQL (будучи использованным вместе с PHP) – это наличие веб-интерфейса для доступа к базе данных – phpMyAdmin. Подобного продукта для Microsoft SQL Server нет (есть только старая версия от Microsoft, последний выпуск которой состоялся в 2004 году), а устанавливать приложение-менеджер возможность имеется не всегда.

Безопасность

Весьма распространен миф о том, что все продукты от Microsoft – «дырявые», а их аналоги на Unix-платформе – безопасные. На самом деле, к безопасности в Microsoft относятся очень серьезно (об этом свидетельствуют некоторые их интервью и репортажи), основная причина возникновения мифа – широкая распространенность их продуктов, что обуславливает гораздо больший интерес к этим продуктам для злоумышленников.

Вопреки всему, по данным Securitylab.ru, веб-сервер Internet Information Services имеет гораздо меньше уязвимостей, чем его Unix-аналог – Apache. Так, например, в IIS 6.0 было найдено всего 3 уязвимости!

Однако гораздо больше случаев взлома веб-сайтов происходит из-за ошибок разработчиков этих сайтов. И хотя вероятность успешного взлома определяется в основном квалификацией программиста, в этом аспекте имеются некоторые преимущества у ASP.Net – более жесткий контроль вводимых посетителем данных. Например, по умолчанию включен запрет на использование HTML-тегов в полях ввода – таким образом, повышается защищенность веб-сайта от XSS (Cross Site Scripting) атак. В PHP такие проверки разработчику необходимо реализовывать самостоятельно. Это особенно важно для начинающих веб-программистов, которые, как правило, в начале своего пути не знают о возможных уязвимостях – эти знания приходят с опытом. ASP.Net в случае обнаружения некорректных данных сразу останавливает выполнение веб-приложения и предупреждает разработчика о потенциальной опасности. В PHP выполнение продолжается и никаких предупреждений программист не видит – такой уязвимостью могут воспользоваться злоумышленники.

Маленькие и большие проекты

Традиционно считается, что PHP больше подходит для маленьких проектов, а ASP.Net – для больших. Мы считаем, что это неправильно. Как известно, под PHP существует множество шаблонизаторов и фреймворков (Smarty, Zend Framework и другие), которые приближают его к ASP.Net с точки зрения архитектуры приложения (отделяется программный код от HTML-разметки, присутствует подобие ASP.Net-контролов и т.п). И примеров крупномасштабных проектов, написанных на PHP, достаточно: vkontakte.ru, photofile.ru и т.п. В то же время, и на ASP.Net можно легко и быстро (возможно, даже быстрее, чем на PHP) создать простой веб-сайт.

К большому преимуществу ASP.Net мы отнесем то, что он использует общую платформу .Net. Во-первых, это означает, что если вы – программист .Net, то вам не нужно учить новый язык и осваивать новые библиотеки. Во-вторых, этим открываются широкие возможности интеграции Windows-приложений и ASP.Net-приложений. Например, написанный ранее класс для настольного приложения можно без доработок и изменений использовать и в веб-проекте на ASP.Net. PHP же используется только для создания веб-страниц. С его помощью еще можно писать скрипты для командной строки, но такая потребность возникает довольно редко.

Работа и зарплата

Вакансий много как на должности разработчика PHP, так и ASP.Net. В среднем, зарплата у ASP.Net-специалиста немного выше, но это отнюдь не значит, что нельзя найти очень хорошо оплачиваемую работу PHP-программисту – все зависит от уровня профессионализма.

Вакансии программистов на PHP, в основном, открывают веб-студии, занимающиеся созданием сайтов. ASP.Net-разработчики чаще всего требуются в крупных компаниях, занимающихся корпоративными приложениями.

Среди фрилансеров (людей, работающих удаленно) гораздо большее распространение получил PHP – в основном, в силу легкости изучения. Однако, в этой ситуации программист на ASP.Net имеет некоторое преимущество: создав сайт заказчику на этой платформе, он получает высокие шансы повторного обращения (например, с целью добавления функциональности на сайт) именно к нему – найти другого фрилансера, работающего с этой платформой, довольно тяжело.

Резюмируя

Мы постарались составить сравнение максимально объективно. В свое время основатель компании начинал именно с PHP. Была и ненависть к Microsoft, и радость за то, как «хорошо и как удобно все делать на PHP» и т.д. Вскоре мы столкнулись с платформой .Net, которая понадобилась для разработки Windows-приложений. Одновременно мы продолжали создавать сайты на PHP. Через некоторое время стало заметно, что программы на .Net получаются быстрее, с меньшим количеством ошибок, и работа в Visual Studio гораздо более удобна, чем в PHP-редакторе. Так постепенно мы стали переходить на ASP.Net. На PHP мы продолжаем писать и сейчас, но, в основном, в ситуациях, когда приходится вносить изменения в работающий проект на PHP – переписывать его полностью на ASP.Net займет гораздо больше времени. Но при создании нового веб-сайта мы однозначно теперь выберем ASP.Net.

Почему же PHP получил большее распространение (как миниум, в нашей стране), чем ASP.Net? Во-первых – он у всех на слуху. Веб-программированием сейчас интересуются многие, и первое что приходит на ум, если человек хочет начать «делать сайты» – это PHP. Во-вторых, многие не хотят использовать продукт от Microsoft, полагая, что за это нужно платить немаленькие суммы (с данным вопросом мы уже разобрались) или просто испытывая неприятные к этой компании чувства. В-третьих, порог вхождения в PHP гораздо ниже, чем в ASP.Net, т.к. сам язык проще для изучения (например, для работы с ASP.Net необходимо знать ООП, для PHP это необязательно). Однако, повторимся – крайне не рекомендуем начинать изучение программирования с PHP – лучше пусть это будет, например, язык Си.

Подводя итог, скажем, что, используя любую из описанных технологий, можно создать как очень хороший, так и весьма некачественный продукт. Главное – это профессиональное владение инструментом, а какой именно инструмент использовать – выбор за вами.


Комментарии


ram2406    (22/07/2010 15:55)

Спасибо. Я только начал изучать технологию создания сайтов и мне очень важно было узнать ответ на освещаемый здесь вопрос - "что же лучше PHP или ASP.NET?"

Теперь я знаю о подводных камнях в PHP.
Да и C# мне все равно ближе, и ООП для меня тоже не пустой звук.
Сначала на ASP.NET, потом на PHP )
VS PHP я уже скачиваю...
...а сколько будет 2 плюс 5)


Nurlan    (27/08/2010 23:23)

Мне то же по душе ASP.NET чем PHP !
Но для ASP.NET хостингов мало достойных , чтоб ASP.NET4 + SQL Server 2008 R2 .


Статья конечно трезво написана .


Soft.KU.    (03/09/2010 14:15)

Хорошая, спокойная, доступная статья. После массы негатива против продуктов Microsoft в области WEB-строительства увидел следы нормального обсуждения.
Теперь можно использовать красоту и мощь С# в WEB'е


Александр (Nevlabs)    (28/09/2010 0:10)

Nurlan, вопрос времени :) На самом деле, по моим наблюдениям, новшества на Windows-хостингах внедряются гораздо быстрее, чем Unix. Например, переход на PHP5 был оооочень медленным, очень долго хостинги продолжали использовать только PHP4. А вот новые .net-фреймворки внеряются хостерами весьма оперативно.


Serg    (03/11/2010 13:16)

Ну вот хоть один нормальный чел! А то эти пэхапышники уже за...ли! У них и мощнее и быстрее и сахар слаще, а как нужно че нить чего нет в джумле или друпале так пиз...ц!


finchil    (04/11/2010 0:06)

достойная статья, спасибо автору за объективность... тоже склонялся к аспу, теперь сомнений нет


Iou    (29/11/2010 11:52)

Согласен с автором, хотя с хостингом asp.net придется помучиться, особенно с FrameWork 4


Анатолий    (24/12/2010 13:46)

В пользу PHP следует отметить одно важное (но почему-то забытое) качество - кроссплатформенность. Web-приложения, написанные на PHP будут одинаково хорошо работать как на сервере под *NIX, так и под Windows / если конечно руки у программиста не кривые =) /
Что же касается портированного под *NIXы dotNET - ну так Mono пока, мягко говоря, оставляет желать лучшего...


Александр (Nevlabs)    (24/12/2010 14:19)

В целом да. Но на практике отличия все же есть. Наш сайт как раз работает на PHP и раньше он работал на юниксе, теперь - на win.
Например столкнулись с отличиями в работе функции mail :)


Анатолий    (24/12/2010 14:23)

Да, под win с mail() придется-таки немного поплясять с бубном =)
но все-таки намного меньше, чем когда готовый сайт на asp.net заказчик хочет перенести на хостинг с FreeBSD =)
Я собственно почему упомянул про кроссплатформенность - в каждом третьем-четвертом ТЗ так или иначе содержится это требование. Так что порой выбора просто не остается.


Александр (Nevlabs)    (24/12/2010 20:22)

Я просто подозреваю, что танцы с бубном потребуются не только для mail :)
Конечно, когда нужна клоссплатформенность, нужен PHP. Но у нас как-то обходится без таких проектов, тем более стоимость win-хостинга сейчас сравнялась с unix-аналогами и проблем с этим не возникает.


Алексей    (27/12/2010 21:44)

Согласен, отличная статья!)
Автору спасибо!)


Кондрат    (17/02/2011 10:02)

PHP очень практичен. Это самый главный его плюс. Под практичностю я также понимаю кроссплатформенность. Я не навичок в программировании. Могу создавать как на open source так и на ASP.NET. Мой выбор Win/*Nix/PHP/Apache/MySQL. Почему ?? Да потому что от добра добра не ищют. Я знаю что никаких сюрпризов не будет, все просто и понятно. Мой проект будет работать везде, на хостинге и дома в овисе под виндой и на флешке из кармана. Еслиб я не работал с *nix платформай не знал HTML/JavaScript и многие производные от них для создания полноценного проекта возможно я предпочел бы ASP.NET, но мне это просто не нужно. Конечно у ASP.NET есть своя энергетика. Каждый волен делать свой выбор на основе своих знаний и предпочтений. А лучше уметь работать с обеими да и еще с другими технологиями тоже.


Евгений    (25/02/2011 2:42)

спасибо за статью. Почти все "для понимания" аккуратно изложено.


Nurali    (09/03/2011 21:37)

Спасибо автору за статью, очень полезная вещь. Я уже закалибалься искатьчто же лучше пхп или асп. Благодаря вашему статью теперь выберу аспу.
Респект и уважуха


Farhod    (04/04/2011 0:11)

Я уже 2 дня не могу по ночам спать и думаю, что выбрать для будущего проекта?))) выбрать дешевизну или же удобства в написании... Думаю все такие возьму удобства ASP.NET


тупорожик    (15/04/2011 12:42)

однобокая статья, в защиту майкрософта епрст...
если есть че прикрывать то значит не зря. юзайте пхп народ..


Андрей    (29/04/2011 16:10)

Я думаю это в плюсс ASP
http://www.rsdn.ru/article/csharp/Asynchronous_Programming_In_CSharp_5.xml
Асинхронное программирование в C# 5


Olegre    (20/05/2011 13:14)

Статья неплохая.
Я согласен с автором. ASP.net удобней в разработке. Сам начинал с С++, C#. Потом работал немного на asp.net. Но из-за того что востребованность на создание небольших сайтов была больше на unix серверах, ушел в LAMP. В принципе не жалею. Думаю для небольших проектов лучше php не найти. Очень большой выбор цмс-ок ( Joomla, Drupal, WordPress ...) фреймворков, что иной раз нужно просто кастомизировать немного модули и сайт готов.
Но в асп больше всего мне нравится событийная модель, что очень приближает веб с обычному настольному приложению. Я думаю за этой технологией большее будущее чем за PHP.

Но вот что мне не нравилось раньше в VS так то что очень долго компилируется проект. Когда вносишь незначительные коррективы в код, то приходилось ждать до 5-10 сек пока весь проект скомпилится и ты увидешь заветную страницку.
Тогда как на PHP простостое нажатие к F5 и вуаля страница обновилась.


Sergei    (23/05/2011 2:33)

Всем советую начинать с php, действительно проще, если конечно вы не программировали раньше низкоуровневые программы под виндой.

В статье есть некоторые неточности.
Дело в том, что ASP.net как раз более низкоуровневый язык, и поэтому он сложнее и лучше подходит для крупных проектов. Написанный вами программный код будет скомпелирован. Это важный нюанс, что при первом запуске проект долго не открывается, пока идет компиляция, но потом работает очень быстро.

Именно этот вроде положительный нюанс делал очень не популярным IIS (asp.net) для хостинг компаний. На одном таком хостинге может лежать куча сайтов, обычно с низкой посещаемостью. И владельцы сайтов чаще вносят в них изменения, чем эти сайты кто-то смотрит. В итоге сайты постоянно перекомпелируются и работают очень медленно, так как изменения в них вносят чаще чем смотрят.

При таком раскладе интерпретатор php дает явный плюс. Но если говорить о крупных проектах, php также приметивший перед asp.net, как mysql перед mssql. Но это совсем не значит, что на этой связке php+mysql нельзя делать крупных проектов.

Если говорить об очень больших проектах, то и программировать в строготипизированной среде более надежно и удобно (не забываем, что с точки зрении ооп - php ошибка природы, с его нетипизируемыми переменными).

Но что такое крупный веб проект? Сколько их. По сути уровень вебпрограммирования сейчас находится на том уровне, когда php вполне ему адекватен в большинстве случаем, как 30 лет тому назад можно было писать программки на бейсике нумерую строчки (бейски был таким же интерпретатором).

Не забывайте, что на С (и его потомки) и Visual Studio сама винда написана, как и все драйвера и прочая дребидень к ней. Поэтому ASP изначально обладает огромными излишествами нацеленными на работу больших коллективов программистов.

Но с чего бы вы не начинали программировать, если вы разберетесь в одной платформе, сможете освоить и другу.

А начинать легче с php.


Александр (Nevlabs)    (23/05/2011 12:24)

Сергей, спасибо за участие в дискуссии :)

Но все же не соглашусь с вами насчет того, что ASP.Net более низкоуровневый (хотя правильней в плане уровня языков иметь в виду C# или VB.Net). А то, что он компилируется в промежуточный код, не говорит о его низкоуровневости.

И все-таки начинать программирование с PHP - жестоко. Человек сразу привыкнет к отсутствию типизации и прочим вольностям - новичка это может испортить так, что исправлять привычки потом придется долго.


spyphy    (07/05/2017 18:19)

есть еще python как альтернатива php, там с ООП всё в порядке


Павел (cccp-blog.com)    (23/05/2017 10:42)

Спасибо большое за ваш труд. Очень интересно было ознакомиться с мнением людей, которые работали с обоими языками.


Написать комментарий

Ваше имя:


Комментарий:

Email:

Необязательно. Вы можете указать email, если хотите получать на него ответы в этой теме. Адрес опубликован не будет.

Защита от роботов: какой сегодня год?