Скачать презентацию Итак что лучше PHP 4 ASP NET Скачать презентацию Итак что лучше PHP 4 ASP NET

7065ec2c1a300ba9b3680601e23719dc.ppt

  • Количество слайдов: 16

Итак, что лучше – PHP 4, ASP. NET … - с точки зрения независимого Итак, что лучше – PHP 4, ASP. NET … - с точки зрения независимого Webпрограммиста? Выдержки из заметок Алексея Филатова Немного о себе. Я сделал пару небольших проектов на PHP 4 (к сожалению, до сегодняшнего дня ни один из них не дожил). Зато могу похвастаться завершенными сайтами, сделанными по технологии ASP. NET: Melodyland, который был переписан мною с ASP на ASP. NET, и своим "домашним" сайтом, который был создан как тестовая площадка для программирования на ASP. NET.

ASP - ASP. NET - PHP ASP. NET - это не продолжение ASP. Это ASP - ASP. NET - PHP ASP. NET - это не продолжение ASP. Это концептуально новая технология Microsoft, созданная в рамках идеологии. NET. Ключевыми сторонами. NET являются масштабируемость, кроссплатформность, межъязыковое взаимодействие и шаткое понятие "безопасное программирование" (safe-programming). PHP - наоборот, открытая и бесплатная технология. Разумеется, расшифровывать сегодня PHP как Personal Home Page было бы неправильно, но отголоски прошлого дают о себе знать и по сей день. PHP скриптовый язык, созданный исключительно для динамического вывода HTML. Это не значит, что на нем нельзя создать крупный проект. Это значит, что создать крупный проект на PHP дорого и трудно. Для программирования на PHP не нужна дорогая среда программирования. Чтобы научиться писать более или менее работоспособные скрипты, достаточно одного-единственного учебника. С ASP. NET такой фокус не пройдет. Без Visual Studio, MSDN и иногда - доступа в Интернет там делать нечего. Большую часть времени начинающий разработчик тратит на штудиро-вание MSDN. А к тому времени, когда он выучит навороченную модель классов и все необходимые ему функции, Microsoft наверняка придумает что-то новое.

ASP - ASP. NET - PHP Зато если выучить. . . Счетчик посещений? - ASP - ASP. NET - PHP Зато если выучить. . . Счетчик посещений? - пожалуйста, десять строчек. Добавить сюда такую же таблицу? - два-три щелчка мышкой, пятнадцать строчек текста. Другой вывод информации? - нет проблем: делаем дочерний класс, перекрываем функцию, отводим на отладку четверть часа, привязываем к выводу второй таблицы - готово! Теоретически под ASP. NET можно писать программы на любом языке, для которого имеется соответствующий компилятор. Однако на практике для создания ASP. NET-приложений используются главным образом Visual Basic. NET и C# (где-то позади плетутся managed C++ и J#). "Родная" среда ASP. NET - IIS, работающий под управлением Windows. Да, IIS известен как не самый стабильный веб-сервер, а Windows - как не самая стабильная операционная система. Но вот небольшая история из жизни…

Windows, Free. BSD… На одной моей работе стоял сервер под управлением Windows 2000 и Windows, Free. BSD… На одной моей работе стоял сервер под управлением Windows 2000 и IIS, на котором сисадмин держал в тот момент больше двух сотен сайтов. Большая их часть состояла из динамически сгенерированных ASPстраниц (ASP. NET тогда только появился, и единственный, кто рисковал с ним работать, - правда, на отдельной машине, - был ваш покорный слуга). Так вот, сервер за два года перезагружался всего пару раз, если не считать обязательных перезагрузок после установки критических обновлений. На другой работе, которой я занимался параллельно, стоял сервер с Free. BSD 4. x, исполнявший роль прокси/файрволла для локальной сети. Он падал раз, а то и два раза в месяц. Я сам некоторое время был сисадмином и не понаслышке знаю, как надо постараться, чтобы достичь таких впечатляющих результатов в стабильности работы и Windows, и Free. BSD. С тех пор я уверен, что 90– 95% стабильности работы сервера обеспечивается вовсе не выбором "правильной" системы, а выбором "правильного" сисадмина.

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

ASP. NET По идеологии Microsoft, программист - маленький винтик хорошо отлаженного механизма. Одиночки-камикадзе вроде ASP. NET По идеологии Microsoft, программист - маленький винтик хорошо отлаженного механизма. Одиночки-камикадзе вроде меня, свято верящие в светлое будущее этой корпорации, не считались и не считаются. Исключаем нас - и остаются большие, быстро и постоянно расширяющиеся интернет-проекты, где один программист отвечает за один модуль. А каким, собственно говоря, еще проектам требуется кроссплатформность и мультиязычность по умолчанию? Только таким, где могут нанять такого профи, что язык, на котором он пишет, отличается от основного проектного. Только таким, которым впоследствии может потребоваться безболезненное портирование на Pocket PC, MAC, могут потребоваться интернет-сервисы и т. д. Вот в таких проектах ASP. NET разворачивается на славу. Проблемы с производительностью, нехватка ресурсов? Чепуха! Купим еще компьютеров, купим еще программистов, купим звезды с неба, лишь бы темпы разработки не падали.

РНР РНР-программистам в подобных проектах делать нечего. Почему? Да потому, что им потребуется куча РНР РНР-программистам в подобных проектах делать нечего. Почему? Да потому, что им потребуется куча координаторов, которым деньги платить надо. Координаторов, большую часть работы которых берет на себя сама среда. NET. И, кстати, с кластерными Unix-системами обращаться тоже непросто. Как ни крути, Unix - это прекрасная stand-aloneсистема, но именно поэтому сделать кластер на ней гораздо сложнее, и соответственно, денег уйдет больше. Я не говорю о суперкомпьютерах, я говорю о парке в 20– 50 машин. За то время, что уйдет на автоматизацию и подключение дополнительной Unix-машины к Unix-кластеру, программисты на Windows уже давно будут писать следующий модуль. Не говоря уж о том, что кластерная СУБД My. SQL как кластер существует только в альфаверсии. Автоматизация же взаимодействия между машинами на Windows Server 2003 и SQL Server - одна из сильнейших сторон этих систем.

РНР PHP 4 слишком доверяет программисту. В нем нет типов, объявлять переменные необязательно, существуют РНР PHP 4 слишком доверяет программисту. В нем нет типов, объявлять переменные необязательно, существуют опасные конструкции. Синтаксис PHP заточен под быстрое и простое решение типовых проблем. При этом вся ответственность за опасные трюки лежит на программисте. Что, в частности, приводит к такому распространенному явлению, как обнаружение серьезных ошибок в коде через месяц-другой после сдачи проекта. Область применения PHP - небольшие проекты, которые делает или тесно сработавшаяся группа, или вообще один человек. Благодаря бесплатности PHP (а также бесплатности My. SQL и самой платформы), этот язык становится идеальным выбором для небольших авторских сайтов или сайтов для малого и среднего бизнеса. Кроме того, PHP работает быстрее чем ASP. NET.

PHP + My. SQL + Apache ASP. NET + IIS + Microsoft SQL Server PHP + My. SQL + Apache ASP. NET + IIS + Microsoft SQL Server Теоретически ASP. NET должна работать быстрее (все-таки здесь мы имеем дело с единожды скомпилированными бинарными кодами, тогда как PHP-скрипты каждый раз обрабатываются заново). Однако PHP летает как на IIS, так и на Apache и при большой (правда, искусственно вызванной) нагрузке всегда выдает результаты лучше, чем ASP. NET. И уж тем более лучше, чем классический ASP. Обескураженный, я пошел на сайт Microsoft, чтобы найти хотя бы одну статью, в которой бы сравнивалось быстродействие PHP и ASP. NET. Безуспешно. Зато на других ресурсах нашлось довольно много статей, авторы которых пришли к тому же выводу, что и я. "Родная" связка PHP + My. SQL + Apache работает быстрее ASP. NET + IIS + Microsoft SQL Server 2000. Значит ли это, что ASP. NET хуже? Отнюдь. На том же сайте Microsoft есть масса данных, из которых следует, что решения на базе Linux/Unix в целом обходятся среднему и большому бизнесу намного дороже, чем аналогичные решения на основе Windows. Бесплатность технологий вовсе не означает бесплатности их использования.

Такие, казалось бы, парадоксы на самом деле вполне логичны. Скорость работы обеспечивается тем, что Такие, казалось бы, парадоксы на самом деле вполне логичны. Скорость работы обеспечивается тем, что все РНР-приложения работают в едином адресном пространстве, тогда как ASP. NET за счет навороченной модели классов многократно проверяет и перепроверяет данные, удерживая каждое приложение в отдельном адресном пространстве. Первый подход более быстр, но менее надежен, второй - более надежен, но за это приходится платить. Чудес не бывает. Быстродействие же связки РНР + My. SQL обеспечивается тем, что разрабатывающие эти две технологии группы очень тесно сотрудничают. То же самое и со связкой ASP. NET + MS SQL. Однако скорость работы РНР с другими СУБД (через ODBC) разочаровала. С большинством известных СУБД, включая MS SQL Server, SAP и Max. DB, он у меня работал медленнее ASP. NET. Насколько я понял, из-за того, что ASP. NET старается делать из БД как можно меньше выборок, помещая все актуальные таблицы и даже связи между ними в кэш (технология ADO. NET в случае с MS SQL), в то время как РНР склонен генерировать множество запросов к СУБД.

Парадокс с ценами, когда оплатить несколько лицензий Microsoft дешевле, чем взять бесплатные Unix/Linux, PHP Парадокс с ценами, когда оплатить несколько лицензий Microsoft дешевле, чем взять бесплатные Unix/Linux, PHP и My. SQL, тоже вполне логичен. Следует учитывать, что, во-первых, эти продукты бесплатны, пока вы не собираетесь делать на них коммерческие проекты (Linux и PHP, конечно, бесплатны без всяких условий. Коммерческая лицензия в полном смысле этого слова есть только у My. SQL. Некоторые затраты на PHP, пожалуй, грозят только программистам, делающим скрипты на продажу. Дабы не открывать код скриптов, им приходится использовать продукты компании Zend, а они, увы, платные. - Прим. ред), а во-вторых, что разработка и поддержка проектов под эти платформы в целом обходится дороже. Кроме того, Linux в ряде случаев работает медленнее Windows. Возможно, я ошибаюсь, но ни для какой СУБД я и близко не видел такого количества критических исправлений и сообщений, как для My. SQL. А все это есть риск.

Рынок труда Соотношение РНР- и ASP. NET-программеров сейчас в России составляет 3: 2, что Рынок труда Соотношение РНР- и ASP. NET-программеров сейчас в России составляет 3: 2, что говорит как о доступности бесплатных продуктов, так и о большом количестве небольших, но амбициозных проектов, для которых PHP подходит идеально. Иная ситуация, например, в Израиле (там соотношение примерно 1: 10), Америке и Европе. Заработок ASP. NET-программиста тоже выше, и если хороший PHP-программист получает у нас в лучшем случае 800, ну максимум 1000 долларов, то зарплата ASP. NET-программиста, как правило, начинается с 800 долларов. Оно и понятно - ответственности больше, работы больше, геморроя больше, свободы меньше. Итак, § маленькие и средние проекты - удел маленьких групп программистов и PHP; § средние и большие - удел больших групп, использующих продукты Microsoft, а также очень немногочисленных хорошо организованных групп программистов на РНР; § гигантские проекты делят между собой продукты HP, IBM, Sun, Oracle, и расценки там в несколько раз выше.

Особенности и преимущества ASP. NET Разрабатываются на платформе. NET и автоматически приобретают все ее Особенности и преимущества ASP. NET Разрабатываются на платформе. NET и автоматически приобретают все ее преимущества: 1. Имеют полную поддержку со стороны IDE. Синтаксис, графические инструменты, процесс-точки останова, вывод в отдельное окно промежуточных значений и т. п. 2. Имеет множество уникальных особенностей: a. веб события (начало-завершение инициализации страницы, компонента, начало загрузки, рендеринга…), возможность разработки фильтров сервера, b. общие переменные для всех веб страниц одного сеанса (без куки), c. серверные элементы управления, d. веб части (связь с Share. Point), e. Master. Page (дизайн-макет, достаточно указать для страницы, что она наследуется от мастерстраницы), f. Встроенная поддержка веб служб (общие в Web-пространстве функции, методы…) 1. Возможности расширения на мультипро цессорные и кластерные решения. 2. Встроенная поддержка локализации сайтов (многоязычность) a. Модель codebehind — позволяют не только отделить программный код от HTML, но и использовать многократно один и тот же код.

продолжение. . . 3. Встроенные средства кэширования, мониторинга, позволяющие повысить производительность и масштабируемость приложений. продолжение. . . 3. Встроенные средства кэширования, мониторинга, позволяющие повысить производительность и масштабируемость приложений. 4. Полностью отпадает необходимость в написании клиентских скриптов (генерируются средой IDE VS автоматически) 5. Интерпретатор PHP для каждого запроса клиента компилирует код, а в ASP. NET код компилируется один раз для всех, 6. Эволюционирует вместе с платформой. NET, библиотеки Windows Card. Space, Windows Workflow Foundation, Windows Communication Foundation, поддержка Silverlight… 7. Для разработчиков баз данных – LINQ, пожалуй, самая значительная смена парадигмы с момента прихода ODBC. LINQ устраняет разрыв между приложением и базой данных и обеспечивает полностью объектно ориентированный доступ к базе данных.

Особенности и преимущества PHP 1. Специально компилированный код (Zend Optimizer, Zend Encoder) и кэшированный Особенности и преимущества PHP 1. Специально компилированный код (Zend Optimizer, Zend Encoder) и кэшированный (Zend Perfomance Studio) делает файлы немного меньше и немного быстрее работающие на Apache. 2. Дешевле установка всего ПО. 3. Не нужна высокая квалификация программистов для написания небольших сайтов.

Выводы Что выбрать начинающему программисту? Затрудняюсь ответить однозначно. РНР, конечно, проще… но я все-таки Выводы Что выбрать начинающему программисту? Затрудняюсь ответить однозначно. РНР, конечно, проще… но я все-таки советовал бы изучать ASP. NET, у него абсолютно точно есть будущее в средних и крупных компаниях, чего не скажешь о РНР. Отмечу также, что ситуация на рынке труда всего лишь год-полтора назад была примерно 1: 9 в пользу РНР, и радикальное изменение этого соотношения (10: 1) не может не насторожить. Итак, общий вывод: Ш ASP. NET: поначалу темпы разработки должны резко падать, потом стабильно расти и в конце концов остановиться на определенном уровне. Ш PHP: при достаточно большом объеме кода темпы разработки должны падать с начально очень высокого уровня, причем не удивлюсь, если скорость падения будет пропорциональна квадрату объема кода.