Пишу, по большей части, про историю, свою жизнь и немного про программирование.

PHP vs. ASP.NET глазами Microsoft

PHP versus ASP.NET [ <<> ] (eng). Почитайте — интересно. Некоторые вещи (например, по поводу организации функций) весьма разумны. Правда Microsoft, местами, слегка замалчивает некоторые вещи. В частности:

Data access is one of the most important parts of almost any application these days. Both PHP and ASP.NET offer facilities for connecting to various data sources such as Microsoft SQL Server™ and MySQL.

ASP, насколько я знаю, поддерживает только то, у чего есть ODBC-интерфейс, PHP, кроме ODBC, поддерживает различные СУБД через их API, что менее универсально, зато быстро и позволяет использовать некоторые функции характерные для конкретной СУБД. Собственно, Microsoft относит это к недостаткам:

[..] ASP.NET breeds data-access familiarity amongst developers. In other words, once you've learned how to connect to and send queries to a Microsoft SQL Server, you're going to understand how to perform the same actions with almost any data source. No such comparison can be made with PHP since PHP uses a completely different set of data access functions for each data source.

Таких мест там — масса. Но это и понятно — всякий кулик своё болото… Кстати, нигде не сказано, что ASP.NET работает только на одной платформе — Windows.

13 комментариев
Spectator 2003

А что, есть другие платформы, кроме Windows?

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Spectator:

Билл, дружище, опять ты назвался чужим именем!

mivlad 2003

А что, бывают сервера с Windows?

Евгений Степанищев (bolknote.ru) 2003

Комментарий для mivlad:

12.62% по статистике netstat.
http://netstat.ru/

mivlad 2003

Вот это сильно понравилось:<blockquote>It is important to note that currently no product such as the Zend Accelerator exists for ASP.NET. The binary code that is generated by the CLR is already as optimized as possible; no add-on product is necessary to achieve maximum performance. In other words, ASP.NET is providing for free what PHP users must purchase from Zend.</blockquote>А многое из того, на что в этой статье наезжают, появится/будет доведено до ума в пятой версии, то есть уже в этом году наверное.
…и да, всё же я напрочь не понимаю, почему под sql-запрос, который по идее всего-навсего строка, надо создавать некий объект :-/

Евгений Степанищев (bolknote.ru) 2003

Комментарий для mivlad:

Ага. Тоже видел :)
Но идея с объектами неплоха — не надо боятся, что ф-и которые ты заводишь будут перекрыты в следующих версиях языка. Больше всего мне нравяться модули в Perl — можно импортировать ф-и в глобальную зону видимости, а можно вызывать из конкретного модуля. В TPascal есть примерно то же самое — можно явно указать из какого модуля вызывается ф-я.

dES 2003

Cоврал батенька… ASP.NET, ADO.NET, GTK#, C#/VB Compilers есть под Linuhami -— go-mono ( http://www.go-mono.com/ ). Заметь, они уже достаточно много написали. ASP.NET формы написаны, Web Services тоже писать можно, ADO.NET уже поддерживает достаточное количество Data Providers.

Евгений Степанищев (bolknote.ru) 2003

Комментарий для dES:

Про ASP я знал, но чтобы ASP.NET. С другой строны «достаточно много» — это не всё. Можно ли считать неполную функциональность достаточной? Для PHP, к примеру, есть BinaryPHP (пока ограниченный) — компилятор в C. Этак можно сказать, что PHP компилируется в бинарный код.

dES 2003

К сожалению я не пытался прикручивать на Apache Mono, но мне кажется, что основное уже написано и спустя какое-то время можно будет писать ASP.NET апликации мультиплотформенно.

PHP ведь тоже долгое время оставался в тени пока большинство писали на Perl’e, ANSI C, etc. Прошло время, PHP подрос, набрал достаточное кол-во полезных функций и вот он стал до-о-остаточно распространён.

Я достаточно писал на PHP (да и пишу время от времени), но .NET некоторыми моментами (особенно это касается ASP.NET) поразил.

Евгений Степанищев (bolknote.ru) 2003

Комментарий для dES:

PHP долгое время оставался в тени из-за низкой производительности. В PHP4 производительность стала куда выше. Я в своё время, отдал предпочтение Perl’у, но когда вышел PHP4 взглянул на него другими глазами.

А чем поразил ASP.NET?

dES 2003

Моментов есть много. Вот несколько из них:

  • когда стартует апликация (а она стартует раз, а не при каждом запросе -— что-то вроде JSP -— сервлетов) создаётся объекты Application, который можно использовать для хранения гловальных объектов, типа статических Resultset’ов или какой-нить конфигурации. В PHP этого не хватает.
  • встроеная поддержка Cache, начиная от slide/absolute expiration и заканчивая dependancy expiration (например при изменение какого-то файла)
  • есть новшество -— ViewState, это что-то вроде Hidden поля, в котором можно хранить значения контролов или ещё для каких-то целей. M$, например, использует ViewState для быстрой отрисовки DataGrid’а (данные для datagrid’a хранятся в этом самом ViewState’). Разные контролы типа InputBox (. Есть уже достаточное количество валидаторов (RegularExpressionValidator, RangeValidator, etc.) , но если их мало, то можно сделать еще своих, наследуемых от CustomValidation.

Блин, чего-то меня понесло уже… Сорри, но на это действительно стоит посмотреть. Хотябы для того, чтобы некоторые моменты перенести и в PHP :)

dES 2003

чего-то в последним посте вырезан кусок :(

  • офигенно продумана валидация введённых значений. на каждый контрол, который тебе надо проверять (например, обязательно должно быть введёно значение) довешивается контрол . Есть уже достаточное количество валидаторов (RegularExpressionValidator, RangeValidator, etc.) , но если их мало, то можно сделать еще своих, наследуемых от CustomValidation.

Блин, чего-то меня понесло уже… Сорри, но на это действительно стоит посмотреть. Хотябы для того, чтобы некоторые моменты перенести и в PHP :)

Евгений Степанищев (bolknote.ru) 2003

Комментарий для dES:

Стоп. Как это стартует не каждый раз? В каком смысле? Для одного пользователя одна копия или что?

В PHP тоже есть Cache. Платный от Zend и куча бесплатных. Степень интеграции самая разная, конечно.

А hidden где хранится? Валидаторов тоже куча — в смысле классов сторонних разработчиков.