Интернет-магазин для прижимистого предпринимателя

18 Сентября 2013

Какой коммерсант не прижимист? Бросать деньги на ветер не станет ни один человек, всерьез вступивший на тернистый путь коммерческой деятельности, где продавать надо всегда дороже, чем купил. Только коммерсант ведет себя по особому рационально, он все оценивает как товар, всему назначает свою цену и точно знает, когда и где тот или иной товар можно купить и продать. Его ум и интуиция неиссякаемы на трюки и выдумки. Он чувствует, на чем можно заработать, каким образом следует продавать в настающих объемах. И никто не сможет объяснить, как он додумался до той или иной формы торговли, потому что мыслит коммерсант по-особенному, его изобретательность и потенциал по использованию марксовой формулы Д-Т-Д поистине неиссякаемы.

Помимо коммерсантов есть еще физики и лирики, весьма далекие от рационального поведения. Имеются еще программисты, помешенные на красоте алгоритмов и изяществе исполняемого кода. Да, впрочем, кого только не встретишь среди разношерстной публики, населяющей нашу планету! Но только коммерсанту мы обязаны за постоянное воспроизводство товарно-денежных отношений, только он по-настоящему знает цену деньгам.

Конечно, не всякий, у кого есть коммерческая жилка, становится миллионером. У ступившего на путь торговли имеется множество конкурентов, ему могут помешать неблагоприятная политическая ситуация, природные катаклизмы и другие непредвиденные обстоятельства.

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

Говорят, что хороший коммерсант никогда не ошибается. Как бы интуитивно он всегда находит перспективное для себя решение. Естественно, за кажущейся интуитивностью скрывается огромная интеллектуальная работа и самоорганизованность. Недостающая информация добывается. Имеющаяся информация рационально оценивается. Причем затраты на обработку информации могут быть весьма высокими, если это объективно необходимо. Не ошибиться означает вовремя получить необходимую информацию и рационально ею распорядится. Такова, по-видимому, «формула» успеха истинного коммерсанта.

Интернет-торговля – это одна из форм коммерции. Хороший товар, низкие цены и высокое качество обслуживания отнюдь не гарантируют здесь успех. Успешным на этом поле можно стать только в случае умелой работы с информацией. Умелая работа с информацией включает в себя целый ряд составляющих, одной из которых является грамотный выбор программной платформы для интернет-магазина. Грамотный выбор – это искусство. Среди множества факторов, от которых такой выбор зависит, один из факторов – это наличие структурированного знания о возможных вариантах решения. Обсуждению этой темы и посвящена данная статья.

Следует особо выделить, что грамотный выбор платформы для интернет-магазина зависит от множества факторов, среди которых не все являются техническими. Необходимо также учитывать менталитет и психологию коммерсанта, сектор экономики, конкурентов и др. Данные вопросы в статье не затрагиваются и анализируются только в ходе 4С-анализа.

Статья является некоторым обобщением серии отчетов, подготовленных в рамках проводимого нами 4С-анализа для ряда компаний, занятых в сфере интернет-торговли. Почему появилась эта статья?

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

В статье не рекламируется (по крайней мере, явно) тот или иной продукт. Однако для придания статье большей объективности сразу отметим, что свое личное предпочтение мы отдаем технологиям Microsoft и JavaScript.

Внимание! В статье не дается никаких советов и рекомендаций.

Из чего традиционно выбирают

Наиболее популярной программной платформой для интернет-магазина является PHP. Второе место по популярности, по-видимому, занимает платформа корпорации Microsoft ASP.NET. Далее идут J2EE. Ruby, Perl и др.

Готовое решение интернет-магазина на PHP и ASP.NET можно сравнить в приведенной далее таблице.

Характеристики

PHP

ASP.NET

начальная стоимость

$300-500

$800-1100

стоимость обслуживания (хостинг)

от $100

от $200

стоимость доработки
(месячная зарплата программиста)

$1500-2000

$2000-3000

Цифры могут варьировать (в зависимости от региона, состояния экономики и т.д.), но их соотношение вряд ли изменится.

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

***

Объяснить более высокую стоимость платформы ASP.NET довольно просто. Все дело в подходе, который изначально использовался при создании среды разработки. ASP.NET – это продукт профессионального системного подхода, тщательно спланированного проекта и менеджмента, PHP – это «творческая фантазия», результат эволюционирующей мысли группы талантливых программистов.

ASP.NET

Данная технология изначально создавалась в Microsoft таким образом, чтобы обеспечить высокотехнологичную разработку ПО (максимально удобную для проектировщика, программиста, тестировщика, аналитика) и масштабируемость (дальнейшую наращиваемость) решения. В составе технологии имеется все необходимое, чтобы создавать программы высокой степени сложности: гибкая архитектура, удобная среда разработки Visual Studio, изумительные средства отладки, обширные библиотеки классов, технология ADO.NET, хорошая документация. Освоив ASP.NET, разработчик не имеет принципиальных проблем с производством программы, когда порой не понятно, каким образом реализовать ту или иную функциональность. Технология ADO.NET позволяет взаимодействовать с базами данных вне зависимости от их типа. В последней версии ADO.NET разработчики Microsoft хорошо потрудились над оптимизацией и значительно повысили производительность. Писать программы можно как на C#, так и на Visual Basic (VB.NET). Язык C# был разработан в Microsoft специально для удобного программирования в соответствии с современной парадигмой ООП.

ASP.NET в своем развитии прошла долгий путь от версии 1.0 (2002 год) с Web Forms до 4.5 (2012 год), в которой присутствует поддержка всех современных веб-стандартов.

Когда версия ASP.NET 1.0 впервые вышла на арену, она главным образом ориентировалась на модель проектирования веб-страниц посредством так называемых веб-форм (Web Forms). Модель веб-форм представляет собой просто абстракцию, которая позволяет моделировать страницу в виде комбинации объектов. При запросе браузером конкретной страницы ASP.NET сначала создает объект для самой страницы, а затем для всех остальных элементов управления ASP NET, которые присутствуют внутри нее. После этого страница и ее элементы управления проходят через ряд событий жизненного цикла, после чего – по завершении обработки страницы – они визуализируют окончательный вариант HTML (производится так называемый рендеринг, от англ. Слова render) и удаляются из памяти. За все, что происходит между этим, по большей части отвечает программирование ASP.NET.

Благодаря удачному проектному решению ASP.NET 1.0 и 1.1, лишь несколько из появившихся в ASP.NET 2.0 изменений являлись исправлениями для существовавших функциональных возможностей. В целом в ASP.NET 2.0 была сохранена та же самая базовая абстракция (модель веб-форм) и просто добавлены новые возможности более высокого уровня, наиболее заметные из которых перечислены ниже:

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

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

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

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

Элементы управления источниками данных. Модель элементов управления источниками данных позволяет определять то, как страница взаимодействует с источником данных, декларативным образом в разметке, а не написанием кода доступа к данным вручную. Лучше всего то, что это средство не вынуждает отказываться от удобного проектного решения на основе компонент: привязка к специальному компоненту данных осуществляется так же легко, как напрямую к базе данных.

Веб-части. Веб-приложением одного из наиболее распространенных типов является портал, предусматривающий централизованное размещение различной информации с использованием отдельных панелей на единственной веб-странице. Веб-части (Web Parts) предоставляют готовую платформу для создания портала с плавающей компоновкой, конфигурируемыми представлениями и даже поддержкой перетаскивания.

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

Модель поставщиков. Многие из появившихся в ASP.NET 2.0 средств работают через абстракцию, которая называется моделью поставщиков. Прелесть этой модели состоит в том, что она позволяет использовать простые поставщики для создания кода страниц. Если требования изменяются, модифицировать страницы не понадобится – достаточно будет просто создать специальный поставщик и обновить конфигурацию веб-сайта.

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

Веб-формы позволяют переложить управление отрисовкой HTML-страницы на «плечи» ASP.NET и заняться разработкой функциональной части. Притом можно перегрузить любой элемент управления под свои нужды, и, соответственно, сделать шаг к созданию системы поддержки контента (CMS). В версии 2.0 был добавлен набор стандартных компонентов для приложений, и они могут уменьшить объем кода, который надо писать самостоятельно. Объективно веб-формы имеют право на жизнь и обладают целым рядом преимуществ, например, с ними очень быстро можно сделать достаточно сложную форму, но, скажем, реализация Ajax здесь выглядит как надругательство над разумом. Релиз Ajax в 2007 году был ответом Microsoft на бум Web 2.0/Ajax, он поддерживал хорошее взаимодействие со стороной клиента, не усложняя жизнь разработчикам.

По сравнению с ASP NET 2.0, версия ASP. NET 3.5 эволюционировала более плавно. Новые функциональные возможности в этой версии относятся в основном к двум таким технологиями, как LINQ и Ajax.

Технология LINQ (Language Integrated Query – язык интегрированных запросов) представляет собой набор расширений для языков С# и Visual Basic. Она позволяет писать на С# или Visual Basic код, способный манипулировать находящимися в памяти данными во многом в той же манере, что и запросы к базе данных.

Технология ASP.NET Ajax. Из-за того что традиционный код ASP.NET выполняется на веб-сервере, всякий раз, когда на странице происходит какое-то действие, браузеру приходится отправлять серверу данные, получать новую копию страницы и обновлять отображаемый экран. Этот процесс, хотя и происходит быстро, но сопровождается заметным мерцанием, а также занимает достаточное время. Такой подход непрактичен для реагирования на часто возникающие события, связанные с перемещением курсора мыши или нажатием клавиш на клавиатуре. Разработчикам веб-приложений удается обходить подобные ограничения за счет применения языка JavaScript, который является пока что единственным широко поддерживаемым языком для написания клиентских сценариев. В ASP.NET во многих наиболее мощных элементах управления присутствует приличный объем кода JavaScript. Например, элемент управления Menu немедленно реагирует на наведение пользователем курсора мыши на различные подзаголовки. При его использовании страница не производит обратную отправку серверу до тех пор, пока пользователь не щелкнет на каком-то элементе.

Разработчики используют серверные элементы управления типа Menu внутри традиционных страниц ASP.NET и получают преимущества, которые предоставляют встроенные в элементы клиентские сценарии JavaScript. Но даже в случае применения таких более совершенных элементов управления обратная отправка данных серверу все равно неизбежна. Например, если необходимо обновить информацию в какой-то части страницы, единственно возможным вариантом в случае обычной страницы ASP.NET является обратная отправка этой страницы серверу и получение совершенно нового HTML-документа. Такое решение работает, но далеко от идеала. Поэтому разработчики стали решить эти проблемы путем использования дополнительного клиентского кода и его применения более совершенными способами. Одним из наиболее обсуждаемых на сегодняшний день примеров является технология программирования клиентской стороны под названием Ajax (Asynchronous JavaScript and XML – асинхронный JavaScript и XML).

Ajax позволяет странице связываться с сервером и обновлять содержимое без полной обратной отправки (регенерации всей страницы). Обычно в странице Ajax используется код клиентского сценария для выполнения асинхронного запроса «за кулисами». Сервер получает этот запрос, выполняет некоторый код и затем возвращает необходимые странице данные (зачастую в виде блока XML-разметки). После этого клиентский код получает новые данные и использует их для выполнения еще какого-то действия, например, для обновления части страницы. Хотя концептуально Ajax является довольно простой технологией, она позволяет создавать страницы, которые функционируют очень похоже на непрерывно выполняющиеся приложения.

Релиз ASP.NET 4 впервые самым серьезным образом поддержал новый веб-стандарт. В версии ASP.NET 4 присутствуют следующие значительные улучшения и усовершенствования:

Согласованная визуализация XHTML. В ASP.NET 3.5 стала возможной визуализация веб-страниц ASP.NET в виде HTML-документов, но тогда ничего не подозревающим разработчикам все равно требовалось позаботиться о нескольких вещах (например, корректировать параметры в конфигурационном файле для получения по-настоящему правильного XHTML). В ASP.NET 4 этих шероховатостей больше нет, и XHTML получается достаточно чистым и без всяких требующих внимания особенностей.

Обновленное обнаружение браузера. В ASP.NET 4 поставляются обновленные файлы определений браузеров, что позволяет отвечающему за визуализацию механизму на стороне сервера распознавать и предоставлять корректно направленную поддержку для более широкого спектра браузеров. Улучшена поддержка следующих браузеров: Internet Explorer 8, Firefox 3.5, Opera 10, Safari 4, а также мобильные браузеры для устройств BlackBerry, IPhone, IPad и Windows Mobile.

Сжатие данных состояния сеансов. В NET 2.0 появилось новое пространство имен (библиотека подпрограмм) System.I0.Compression, обеспечивающее поддержку сжатия gzip. Теперь ASP.NET его может использовать для сжатия данных, передаваемых функционирующей за пределами процесса службе состояния сеансов. Применение подобного приема может быть целесообразно только при весьма ограниченных обстоятельствах, но когда это действительно подходит, производительность улучшается почти автоматически.

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

Расширение возможностей для кэширования. Кэширование является одной из главных функций в ASP.NET, но за исключением зависимостей кэша SQL Server, никакими новыми возможностями кэширование со времен .NET 1.0 не пополнялось. В ASP.NET 4 разработчики из Microsoft, наконец, начали предлагать точки для расширения возможностей кэширования, которые позволят им (и другим разработчикам) использовать новые типы механизмов кэширования, в том числе распределенные решения кэширования типа Windows Server AppFabric и memcached.

Хотя интерфейс Visual Studio 2010 в целом сохранил прежний дизайн, он был полностью переделан с использованием .NET и WPF (Windows Presentation Foundation). Кроме того были добавлены новые средства вроде расширенной функции IntelliSense.

Маршрутизация. В ASP.NET MVC включена поддержка для осмысленных и дружественных в отношении поисковых механизмов URL-адресов. В ASP.NET 4 можно использовать ту же самую технологию маршрутизации для перенаправления запросов веб-форм.

Более эффективные инструменты для развертывания. В Visual Studio теперь можно создавать так называемые веб-пакеты т.е. сжатые файлы, включающие в себя содержимое приложения и прочие детали, такие как схемы баз данных SQL Server и настроек IIS.

Веб-пакеты также работают вместе с новым средством трансформации web.config, позволяющим четко разделить параметры, которые должны применяться к тестовой сборке приложения, и параметры, применяемые к развертываемому экземпляру.

Наконец, упрощена загрузка и предварительная компиляция нового развертываемого приложения за счет использования модуля подготовки приложений IIS (Application Warm-Up).

Хотя все перечисленные средства, несомненно, полезны, наиболее впечатляющие новые добавления для разработки приложений ASP. NET поставляются в двух дополнительных компонентах – ASP.NET MVC и ASP.NET Dynamic Data. Оба средства предлагают забыть о части традиционной модели разработки ASP.NET (веб-формы) и использовать вместо нее другой подход, обладающий как своими преимуществами, так и своими недостатками.

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

Компонент ASP.NET MVC (Model-View-Controller – модель-представление-контроллер) предлагает совершенно иной способ для построения веб-страниц по сравнению со стандартной моделью веб-форм. Суть его состоит в разбиении приложения на три отдельных логических части. Модель включает весь бизнес-код приложения, например, логику доступа к данным и правила верификации. Представление создает для модели походящее представление за счет ее визуализации в HTML-страницы. Контроллер координирует весь этот процесс за счет обработки операций взаимодействия с пользователем, обновления модели и передачи информации в представление.

В схеме MVC некоторые традиционные концепции ASP.NET, в том числе веб-формы, веб-элементы управления, состояние представления, обратные отправки и состояние сеанса, отходят на второй план. Это вынуждает разработчиков учиться смотреть на вещи по-другому (и мириться с временным спадом производительности).

Технология ASP.NET MVC – это попытка приблизить ASP.NET к PHP по производительности. В этой технологии происходит отказ от компонентной архитектуры в пользу серверных вставок и выделения Master-страниц. Master-страница представляет собой шаблон, на основе которого создаются конкретные страницы путем вставки в указанные места шаблона специфического контента. Весь контент пишется на чистом html + javascript + серверные вставки, позволяющие при рендеринге страницы вставлять в нее код, сгенерированный контроллером, написанным под CLR. Таким образом, ASP.NET MVC – это отказ почти от всех преимуществ классического ASP.NET, кроме строго типизированного языка для разработки логики, ради борьбы с основным недостатком (низкая производительность) этой технологии.

Одним схема MVC кажется более «прозрачной» и больше подходящей для веб-приложений. Другие считают, что она заставляет прилагать дополнительные усилия и никакой очевидной выгоды при этом не приносит. Но если хоть какой-нибудь из перечисленных ниже моментов является важным, обязательно стоит рассмотреть вариант применения ASP.NET MVC:

Разработка через тестирование. Благодаря четкому разделению частей в приложении ASP.NET MVC, можно легко создать для него модульные тесты. В случае применения веб-форм автоматизированное тестирование является утомительным и зачастую невозможным.

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

И хотя это означает, что проектирование страниц со сложным форматированием может потребовать больших усилий, это также означает возможность полностью контролировать каждую деталь в разметке. Это очень полезно при планировании написания какого-то клиентского сценария JavaScript либо использования сторонней библиотеки сценариев JavaScript, такой как jQuery. (С другой стороны, если нет желания возиться с HMTL, то веб-формы будут более подходящей платформой для разработки приложений.).

Контроль над URL-адресами. Хотя ASP.NET-разработчикам продолжает предлагаться больший контроль над маршрутизацией URL-адресов, в ASP.NET MVC эта концепция является встроенной. За сопоставление URL-адресов и логики приложения отвечают контроллеры, а это значит, что вместо /Products/List.aspx?category=Beverages можно использовать такие конфигурации URL, как /Products/List/Beverages. Такие понятные и удобные для чтения URL-адреса упрощают и делают более эффективной поисковую оптимизацию.

Компонент ASP.NET Dynamic Data (Динамические данные ASP.NET) является вспомогательной платформой, которая позволяет быстро создавать управляемые данными приложения. При использовании в сочетании с LINQ to SQL или LINQ to Entities (как бывает практически всегда) он предоставляет комплексное решение, проводящее от схемы базы данных до полнофункционального веб-приложения с поддержкой для просмотра, редактирования, вставки и удаления записей.

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

Dynamic Data может рассматриваться как логическое расширение многофункциональных элементов управления данными, которые уже имеются в ASP.NET (наподобие GridView, DetailsView и FormView). Но вместо того, чтобы заставить изменять множество различных элементов управления данными на множестве различных страниц для получения желаемого эффекта, Dynamic Data позволяет использовать шаблоны полей, которые определяются один раз и применяются везде.

Если объединить такое чистое проектное решение с новыми средствами, такими как проверка достоверности на основе схемы данных и упрощенная фильтрация на основе отношений внешнего ключа, то сразу же станет понятно, почему Dynamic Data является столь привлекательной платформой для разработки веб-приложений, фокусирующихся на просмотре и редактировании записей в базах данных.

Самый последний релиз, ASP.NET 4.5, имеет многие черты ASP.NET MVC и применяет их к миру Web Forms, что помогает решить некоторые довольно значимые проблемы, но, несмотря на это, многие внутренние ограничения все же присутствуют.

Наиболее популярной базой данных, используемой с ASP.NET, является Microsoft SQL Server. Благодаря ADO.NET можно с успехом использовать Oracle, MySQL и другие базы данных.

ASP.NET работает исключительно на Windows-серверах, более дорогих, чем UNIX-сервера, что существенно ограничивает распространенность данной технологии.

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

PHP

Когда-то в далеких 70-х люди писали на простых для понимания алгоритмических языках PL/1, Алгол и Фортран. Диалог с пользователем велся в основном в алфавитно-цифровом режиме. Тогда никто даже не подозревал, что появится сеть Интернет и связанные с ней проблемы интерактивного манипулирования объектами на экране, синхронной и асинхронной передачи данных между клиентом и сервером и др.

PHP по своей примитивности мало чем отличается от старых алгоритмических языков. Можно сказать, он вырос из этих языков для решения задач нового поколения.

История PHP начинается осенью 1994 года, когда датский программист, проживающий в Канаде, Расмус Лердорф (Rasmus Lerdorf) создал набор скриптов на Perl/CGI чтобы, выяснить, кто читает его онлайн-резюме. (CGI является стандартным средством подключения веб сервера к произвольно выполняемой программе, которая возвращает динамический контент.) В то время, являясь независимым подрядчиком, Лердорф рассылал потенциальным работодателям свое мини-резюме с URL ссылкой на его полную версию. Чтобы следить за посетителями, он написал на Perl программу (скрипт), который вставлялся как специальный тег (инструкция) в HTML код его страницы, и собирал информацию о посетителях. С целью произвести впечатление на потенциальных работодателей, Лердорф позволил любому посетителю страницы просматривать собираемую статистику посещений.

Лердорф назвал свой код для сбора статистики «PHP-Tools for Personal Home Page», поскольку сам использовал его на своей персональной домашней странице (personal home page). Несколько человек поинтересовались тем, как они могли бы получить этот инструмент, и Лердорф принял решение бесплатно предоставить его другим лицам. В то время движения Open Source еще не существовало. Тогда оно назвалось «freeware». Ближе к концу 1995 года Лердорф открыл для людей первый список рассылки по PHP, чтобы можно было обмениваться идеями, исправлениями ошибок и кодом.

В результате своей активности Лердорф получил контракт в Университете Торонто на создание системы, предоставляющей студентам доступ в Интернет. Требование включало разработку административного веб-интерфейса, обеспечивающего доступ студентов к Университетской библиотечной системе, хранившейся на мейнфрейме IBM. Было необходимо, чтобы администраторы библиотеки могли предоставлять студентам доступ на основе сделанных ими платежей, и, чтобы эта информация обновлялась в базе данных в реальном времени.

В середине 1995 года синтаксический анализатор PHP был переписан на языке C. Кроме того, чтобы облегчить разработку веб-сайтов, которым необходима реляционная база данных, Лердорф добавил в PHP поддержку базы данных mSQL. Объединив интерпретатор форм с пакетом PHP-Tools, он подошел в 1996 году ко второй версии PHP, названной PHP/FI.

Лердорф получал огромное число сообщений от других программистов, которые присылали ему улучшения кода и исправления ошибок. Привести точную статистику непросто, но приблизительно в конце 1996 года PHP/FI использовался не менее чем на 15,000 веб-сайтов во всем мире. А в середине 1997 года это число уже превысило за 50,000. К идее создания коммерческого продукта он отнесся легкомысленно.

В 1997 году два израильских программиста, Энди Гутманс (Andi Gutmans) и Зеев Сураски (Zeev Suraski), разработчики из израильского технологического института, расположенного в городе Хайфе, полностью переписали код интерпретатора. PHP/FI 2.0 был сочтен ими непригодным для разработки приложения электронной коммерции, над которым они в то время работали. Для совместной работы над PHP 3.0 с помощью базы разработчиков PHP/FI 2.0 Гутман, Лердорф и Сураски решили объединиться и объявить PHP 3.0 официальным преемником PHP/FI, разработка же PHP/FI была практически полностью прекращена. После 9 месяцев публичного тестирования в июне 1998 года выходит официальная версия PHP 3.0. PHP 3.0 был первой версией, которая близко походила на тот PHP, который мы знаем сегодня.

Одной из сильнейших сторон PHP 3.0 была возможность расширения ядра дополнительными модулями. Впоследствии интерфейс написания расширений привлек к PHP множество сторонних разработчиков, работающих над своими модулями, что дало PHP возможность работать с огромным количеством баз данных, протоколов, поддерживать большое число API. Другой возможностью, представленной в PHP 3.0, была поддержка объектно-ориентированного синтаксиса и гораздо более мощный и последовательный синтаксис языка. Большое количество разработчиков привело к быстрому развитию языка и стремительному росту его популярности.

К зиме 1998 года, практически сразу после официального выхода PHP 3.0, Энди Гутманс и Зеев Сураски начали переработку ядра PHP. В задачи входило увеличение производительности сложных приложений и улучшение модульности базиса кода PHP. Расширения дали PHP 3.0 возможность успешно работать с набором баз данных и поддерживать большое количество различных API и протоколов, но PHP 3.0 не имел качественной поддержки модулей и приложения работали неэффективно.

Новый движок, названный Zend Engine (от имен создателей, Зива и Энди, также основателей Zend Technologies), успешно справлялся с поставленными задачами и впервые был представлен в середине 1999 года. PHP 4.0, основанный на этом движке и принесший с собой набор дополнительных функций, официально вышел в мае 2000 года, почти через два года после выхода своего предшественника PHP 3.0. В дополнение к улучшению производительности, PHP 4.0 имел еще несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций.

Пятая версия PHP была выпущена разработчиками 13 июля 2004 года. Изменения включают обновление ядра Zend (Zend Engine 2), что существенно увеличило эффективность интерпретатора. Введена поддержка языка разметки XML. Полностью переработаны функции ООП, которые стали во многом схожи с моделью, используемой в Java. Нововведения, однако, были сделаны с расчетом сохранить наибольшую совместимость с кодом на предыдущих версиях языка. Распространялась пятая версия бесплатно, по лицензии Open Source.

«Замешанный» на старой парадигме, PHP неизбежно уступит место событийным языкам типа с JavaScript и C#. А пока мы еще долго будем наблюдать его вялотекущее умирание.

Наиболее популярной базой данных, используемой с PHP, является MySQL.

PHP в связке с веб-сервером Apache и базой данных MySQL работает на всех UNIX(Linux)-серверах и Windows-серверах. Данная возможность называется кросс-платформенностю. Она делает технологию PHP весьма тиражируемой и популярной.

Понять принципы работы PHP гораздо проще, нежели ASP.NET. Это одна из главных причин, почему PHP сейчас более распространен. «Порог вхождения» у PHP гораздо ниже, и новичку гораздо легче освоить работу с PHP, чем сложную модель ASP.NET.

Ruby on Rails и Sinatra

В 2004 году Ruby on Rails был не особенно известной технологией с открытым исходным кодом от неизвестного игрока. И вдруг пришла слава, которая перевернула правила веб-разработки. Не то, что бы Ruby на Rails содержал революционные технологии, но эта концепция взяла существующие ингредиенты и смешала их таким убедительным и привлекательным образом, что существующие платформы начали «гореть для стыда».

Ruby on Rails (или просто Rails, как его обычно называют) принял архитектуру MVC. Применяя MVC и работая в гармонии с HTTP-протоколом, а не против него, содействуя конвенциям вместо потребности в конфигурации и интегрируя в своей основе инструментарий объектно-реляционного маппинга (ORM), приложения Rails заняли достоянное место без особых усилий.

Благодаря Rails вскоре многие веб разработчики стали использовать Ruby в качестве основного языка программирования. Но в таком интенсивно развивающемся сообществе это было только вопросом времени, когда появится альтернатива Rails. Самая известная, Sinatra, появилась в 2007 году.

Sinatra отбрасывает почти всю стандартную инфраструктуру Rails (маршрутизацию, контроллеры, представления и т.д.) и просто картирует URL шаблоны для блоков кода Ruby. Посетитель запрашивает URL, вызывающий блок кода Ruby, который будет выполнен, и данные передаются обратно браузеру – вот и все. Это невероятно простой вид веб разработки, но он нашел свою нишу в двух основных направлениях. Во-первых, для поддерживающих REST веб-сервисов он просто быстро выполняет свою работу. Во-вторых, поскольку Sinatra может быть подключена к широкому спектру HTML шаблонов с открытым исходным кодом и ORM технологиям, она часто используется в качестве основы, на которой собирается пользовательский Web-фреймворк в соответствии с архитектурными потребностями любого проекта, который есть под рукой.

Sinatra еще предстоит отвоевать свою долю рынка у серьезных MVC платформ, таких как Rails (или ASP.NET MVC). Мы упоминаем ее здесь лишь для иллюстрации текущих тенденций индустрии веб-разработки в сторону упрощения, а также потому что Sinatra выступает в качестве противоположной силы относительно других фреймворков, все более накапливая в себе основной функционал.

JavaScript и Node.js

Появление новых технологий – Ajax, JQuery, HTML5/CC3 и т.д. – открыло перед веб-разработчикам богатые возможности выполнять работу, которая ранее была исключительной прерогативой серверов, на стороне клиента. Эти новые возможности связаны с наступающей зрелостью языка JavaScript и его библиотек, таких как JQuery, JQuery UI и JQuery Mobile.

Другой важной тенденцией является движение в сторону использования JavaScript в качестве основного языка программирования. Ajax впервые показал нам, что JavaScript очень важен, JQuery показал нам, что он может быть мощным и элегантным, а движок Google JavaScript V8 с открытым исходным кодом показал нам, что он может быть невероятно быстрым. Сегодня JavaScript становится серьезным серверным языком программирования. Он служит хранилищем данных и является языком запросов для нескольких нереляционных баз данных, в том числе CouchDB и MongoDB. Также он используется в качестве универсального языка на серверных платформах, таких как Node.js.

Node.js появился в 2009 году и получил широкое признание очень быстро. Архитектурно он похоже на Синатру в том, что он не применяет MVC паттерн. Это более низкоуровневый способ подключения HTTP запросов к коду. Его основные нововведения заключаются в следующем:

1. Использование JavaScript: Разработчикам нужно работать только с одним языком, от клиентского кода до логики на стороне сервера и даже до логики запросов данных с помощью CouchDB и тому подобного.

2. Абсолютная асинхронность: Базовый API Node.js просто не блокирует потоки во время ожидания ввода/вывода (I/O) или во время любой другой операции. Все I/O осуществляются с началом операции и затем получением обратного вызова, когда I/O завершается. Это означает, что Node.js делает чрезвычайно эффективным использование системных ресурсов и может обрабатывать десятки тысяч одновременных запросов для CPU (альтернативные платформы, как правило, ограничиваются около сотней одновременных запросов для CPU).

3. Как и Sinatra, Node.js является нишевой технологией. Обычно большинство бизнес-проектов, создавая реальные приложения в ограниченных временных рамках, нуждаются в полных фреймворках, таких как Ruby on Rails и ASP.NET MVC. Node.js упоминается здесь только для того, чтобы мы могли рассмотреть другие современные технологии, а не только ASP.NET MVC. Например, ASP.NET MVC включает в себя асинхронные контроллеры. Это способ обработки HTTP-запросов с неблокируемым I/O и обработки большего числа запросов для CPU. ASP.NET MVC очень хорошо интегрируется со сложным JavaScript кодом, работающим в браузере.

***

Среди вышеперечисленных технологий только ASP.NET является коммерческим продуктом. Остальные технологии распространяются бесплатно, как Open Source (с открытым кодом).

Дале следует информация, какие платформы используются на наиболее популярных веб-сайтах:

  • Google.com – Linux, C, Java, C++, PHP & MySQL, Python for search
  • Facebook.com – Linux, PHP, MySQL and C++
  • YouTube.com – Linux, C, Java and MySQL
  • Yahoo.com – Linux, C++, C, Java, PHP & MySQL
  • MSN.com – Windows, ASP.net
  • Live.com – Windows, ASP.net
  • stackoverflow.com –Windows, ASP.net
  • MySpace.com – Windows,ASP.net
  • Wikipedia – Linux, PHP & MySQL
  • Amazon.com – Linux, Solaris, C++, Java, J2EE
  • WordPress.com – Linux, PHP & MySQL

StackOver Flow software:

  • Windows Server 2008 R2 x64: Operating System
  • SQL Server 2008 R2 running Microsoft Windows Server 2008 Enterprise Edition x64: Database
  • Ubuntu Server
  • CentOS
  • IIS 7.0: Web Server
  • HAProxy: for load balancing
  • Redis: used as the distributed caching layer.
  • CruiseControl.NET: for builds and automated deployment
  • Lucene.NET: for search
  • Bacula: for backups
  • Nagios: (with n2rrd and drraw plugins) for monitoring
  • Splunk: for logs
  • SQL Monitor: from Red Gate – for SQL Server monitoring
  • Bind: for DNS
  • Pingdom: an external monitor and alert service.

StackOver Flow hardware:

  • 10 windows server 2008 r2 (3 za stackoverflow)
  • 2 sql server 2008 r2

***

Дополнительно прочитать о сравнении PHP и ASP.NET можно здесь:

«PHP против ASP.Net - что лучше?»
http://nevlabs.ru/articles/web/php-vs-aspnet/

«PHP4 или ASP.NET - что лучше»
http://old.computerra.ru/hitech/35912/

Таблица. Сравнение достоинств и недостатков

 

ASP.NET

PHP

Комментарии

Последняя стабильная версия

4.5

5.3.8

Ноябрь 2011

Лицензия

MS EULA

PHP License v3.01

 

Стоимость

ASP.NET – free
OS – Windows – not free
Webserver- IIS – included in OS

PHP – free
OS- Linux free
Webserver- Apache free

PHP может работать на любом веб-сервере и любой операционной системе.
ASP.NET работает только на Windows/IIS. Имеется Apache-модуль для работы ASP.NET на  Linux.

Стоимость хостинга

Shared hosting – одинаково
VPS/Dedicated – дороже

Shared hosting – одинаково
VPS/Dedicated – дешевле

 

Распространяется

Microsoft

PHP Community

 

Тех. поддержка

Yes

No

 

Security Fixes

Auto Update – part of OS

Need to update separately when available

 

Языки

C#
VB.NET
JScripts
a lot more

PHP

 

Database

любая

любая

Предпочтительной базой данных для ASP.NET является MS-SQL
для PHP - MySQL

Development IDE

Visual Studio
MonoDevelop

любая IDE

You can write php code even in Notepad, however prefered IDE is ZendStudio

Простота изучения

yes

yes

 

Content Management Systems

yes

yes

PHP здесь является абсолютным победителем

Совместимость с предыдущими версиями

Old code will work on new framework versions without change

Old code might need tweaks to make it work on latest versions

There can be some problems with converting ASP.NET versions, however those fixes are few and quick compared to PHP.

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

зависит от архитектуры

зависит от архитектуры

There is no «AUTO» button to make your website secured. Its all about developer experience.

Производительность

компилятор кода
работает ыстрее

интерпретатор кода
работает медленнее

 

ASP.NET работает значительно быстрее, нежели PHP. Касательно Facebook, следует понимать:

1. Здесь используется переписанный PHP
2. Transformer+compiler, называемый HipHop, трансформирует PHP-код в высокооптимизированный C++ код, который затем компилируется посредством gcc. Мы же говорим о PHP, который разработчики получают на php.net.

Мы не рассматриваем технологию Java, J2EE в связи с ее малой популярностью в России. Также из поля рассмотрения выпала технология на базе интерпретатора Perl, Python и др.

Наши сентенции

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

Тем не менее, свое предпочтение мы однозначно отдаем ASP.NET. ASP.NET значительно удобней в разработке благодаря своей библиотеке классов. Эта технология, на наш взгляд, высокотехнологична, продумана до мелочей, хорошо описана, снабжена достаточным количеством примеров ее использования. Нет необходимости искать по различным форумам и блогам информацию о том, как ту или иную возможность можно реализовать, чего не надо делать, каких «подводных камней» следует избегать.

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

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

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

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

В PHP с усложнение программной системы в геометрической прогрессии возрастает сложность ее дальнейшего сопровождения. Конечно, этого можно частично избежать, если использовать объектные возможности PHP (ООП). Однако в реальной действительности ООП мало кто использует.

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

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

Низкий порог вхождения в технологию PHP делает ее привлекательной для множества начинающих программистов. На PHP любой студент может быстро «слепить» работающий прототип будущей системы, и такой эффект вполне устраивает большинство клиентов. Заказчик, как правило, не понимает «кухню» программирования, и для него критерием профессионализма в этой области является оперативность предоставления первого результата. Создается неизгладимое впечатление, что «у руля» мастер своего дела. В дальнейшем вдумчивого заказчика ждет разочарование, но, как говорится, «коней на переправе не меняют».

Стереотипное поведение несведущего в IT-технологиях заказчика изменить нельзя. Его нежелание вникать в чуждые ему технологии вполне понятно. Как следствие, такому заказчику все нужно быстро по принципу «позвонил, заказал и тут же привезли», а также дешево. Быстрота и дешевизна обеспечивается PHP в полной мере. Подавляющее большинство заказчиков остаются довольными качеством предоставляемых услуг, поскольку в силу свое некомпетентности им практически не из чего выбирать.

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

Имеется несколько производителей «коробочных» решений. Эти фирмы не «застревают» на обслуживании конечных пользователей. Их проблемы состоят в бесконечном переписывании ядра (или, как говорят, «движка») своего интернет-магазина, что вызвано целым рядом причин:  выход новых версий PHP, расширений к нему (фреймворков), непродуманность программной архитектуры, желание соответствовать нарастающим потребностям клиентов, духу времени и др.

Компьютеры и сети с каждым годом становятся все быстрее. Это открывает широкие возможности для интенсивного манипулирования данными. Появление Ajax и jQuery в корне изменило наше представление о роли клиентского веб-приложения. PHP перестает быть «эксклюзивным» средством динамической отрисовки контента веб-страницы. Потребность в PHP постепенно начинает отпадать, эта технология устаревает и уступает свое место JavaScript.

«Чистого» PHP уже практически нигде не встретишь. А PHP в связке с jQuery не представляется столь легкой для программирования технологией. Все это уже давно поняли в Google, где роль JavaScript с каждым годом все больше возрастает.

Технология ASP.NET оказалась значительно лучше готовой к интеграции с JavaScript. И в этом нет ничего удивительного, ведь с самого начала ASP.NET задумывалась как высокотехнологичное решение, рассчитанное на интеграцию с новыми сервисами и технологиями.

Однако, как уже не раз упоминалось, конечного пользователя мало интересуют технические подробности. Каждому хочется попробовать себя на поприще интернет-коммерции. Массовый заказчик желает получить готовый к продажам веб-магазин в короткие сроки и за минимальные деньги. И желание такого заказчика по законам рынка должно быть исполнено без каких-либо скучных рассуждений о преимуществах одной веб-технологии перед другой.

Сотни IT-компаний и индивидуальных предпринимателей неустанно трудятся, чтобы снабдить каждого желающего доступным веб-магазином. И сегодня в Интернет активно торгуют уже всем, что можно встретить на прилавках обычных магазинов, киосков и палаток. Как восклицал Остап Бендер: «Лед тронулся, господа присяжные заседатели!»

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

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

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

Спустя месяц после открытия новый магазин не продал ни одного товара. Тогда предприниматель решил потратить еще 2 тыс. долл. на платную рекламу в Google (стоит упомянуть, что дело это происходило в США). Прошел еще месяц – продаж в веб-магазине не было. По истечении третьего «пустого» месяца стало ясно, что деньги были выброшены «на ветер».

Почему не «пошел» новый проект? В самом начале молодого человека предупреждали, что успех его предприятию не гарантирован. Имеется целый ряд причин, почему у него не станут покупать. Но молодой человек не послушал. В результате он потерял боле 6 тыс. долл.

Аналогичных примеров можно привести тысячи. Даже у успешных компаний, например, Amazon.com бизнес идет далеко не идеально. Не от хорошей жизни в Amazon.com пошли на сокращение числа собственных складских площадей, предоставление арендуемых торговых площадок мелким компаниям и частным предпринимателям.

Казалось бы, получить онлайн-заказ так просто! Но поставьте себя на место обывателя, которому надо сделать онлайн-покупку. Перед тем как сделать окончательный выбор, вы просмотрите целую дюжину сайтов, изучите цены, товарный ассортимент, составите свое мнение о дизайне сайтов и т.д. Хорошо, когда вам попадается сайт с низкой ценой на товар. А если все сайты торгуют по одной цене? На каком из них разместить свой заказ?

Многие полагают, что попасть на первую страницу в списке, формируемом поисковой машиной типа Yandex или Google, – это залог успеха. Так ли это на самом деле? Стоит ли тратить немалые деньги на поисковую оптимизацию ради одной-двух дополнительных продаж в день? Здесь все зависит от типа бизнеса, компании, сезона, купонной/рекламной компании и других факторов. Каждый конкретный случай требует специального рассмотрения.

Сделать веб-магазин, на котором каждый захочет покупать, очень и очень непросто. Потребуется вложить немало денег и труда, чтобы сайт превратился в комфортное для покупки место. Об этом написано сотни книг. Однако сплошь и рядом в Интернет мы сталкиваемся с отвратительно выполненными сайтами, покупать на которых нет никакого желания. Но ведь они существуют! Значит они кому-то нужны.

В интернет-торговле существую свои правила, о которых надо знать. О некоторых из простейших правил можно узнать практически на любом сайте, предлагающем услуги поисковой оптимизации (СЕО). Многие веб-агенства привлекают к себе внимание, публикуя статьи о том, как следует вести интернет-торговлю. Однако никто не публикует бесплатную информацию о целом комплексе правил успешной интернет-торговли, подробную историю успеха во всех ее деталях сайтов-лидеров. Почему? Во-первых, потому что среди правил есть и такие, которые могут разочаровать, оттолкнуть многих новоиспеченных энтузиастов, готовых потратить деньги на свои веб-магазины. А во-вторых, каждый пытается продавать собственный консалтинг.

Одного владельца торговой фирмы спросили, приносит ли прибыль его веб-сайт. Владелец откровенно ответил, что сам по себе сайт убыточен. Но без сайта сложно было бы вести основной бизнес. Многим клиентам фирмы удобно заказывать товары не по телефону, а через веб-сайт. Благодаря сайту информация обо всех новых товарах оперативно попадает к клиентам. Также часть новых клиентов приходит через Интернет.

Сегодня трудно себе представить фирму, у которой нет своего сайта. Для ведения бизнеса необходимо иметь, по крайней мере, сайт-визитку. По сайту судят об уровне фирмы, ее отношению к бизнесу, взаимоотношении склиентами. В определенном смысле веб-сайт – это лицо компании. Изучая веб-сайт, можно со всей определенностью сказать о стиле руководства в компании, отношении к своим сотрудникам. За дизайном, за кодом обязательно стоит психология, которую трудно скрыть. Каждый сэкономленный на разработке рубль «отпечатывается» на лице сайта.

Если глава фирмы нанимает для создания своего сайта прыщавого первокурсника технического вуза, то это будет непременно заметно. Если предприниматель клонирует веб-магазины, чтобы искусственно поднять объем продаж, это также не ускользнет от взгляда.

Два года назад мы написали статью «Почему у вас не покупают товары?». Сейчас эта статья будет вполне к месту. Встречаются как безликие, так и наполненные «жизнью» (энергией) сайты. Энергия не берется ниоткуда – она приходит от людей, от их мыслей, интеллектуальных усилий.

Люди только по большой нужде покупают товары, не заряженные энергетикой их создателей. Красивый, стильный, элегантный – все это энергетические атрибуты. Огромная популярность iPhone заключена в его высокой энергетике, излучаемой покойным Стивом Джобсом.

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

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

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

PHP сделал Интернет «грязным проходным двором» для миллионов. В этом его главная «заслуга». И приходящий ему на смену JavaScript призван хоть как-то «раскрасить потускневшую картинку».

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

О готовых решениях

PHP
На платформе PHP существует масса типовых решений:

  1. Zen Cart
  2. osCommerce
  3. Virtuemart – Joomla Shopping Cart
  4. Magento
  5. nopCommerce
  6. DashCommerce
  7. Get Shopped
  8. Tutorialzine
  9. BigCommerce
  10. Simple Cart(JS)
  11. CRE Loaded PCI CE
  12. Open Cart
  13. jCart
  14. OXID eSales
  15. Freeway
  16. Ubercart
  17. PrestaShop
  18. LiteCommerce
  19. Magento
  20. X-Cart
  21. Zeus Cart
  22. Cube cart
  23. CS Cart
  24. Flying Cart
  25. Live Cart
  26. Fast Spring
  27. Product Cart
  28. Store Portal
  29. Znode Storefront
  30. Digistore
  31. Satchmo Storefront
  32. Batavi
  33. Shop CMS
  34. Drupal Commerce
  35. CMS Status-X

Мы бы особо выделили два аналогичных решения:

  1. X-Cart (версия Gold Plus)
  2. CS Cart

Обе «коробки» стоят $395. Их сравнение приводится здесь.

Благодаря обширной библиотеке модулей оба решения обладают богатой функциональностью. Некоторые считают, что CS Cart изначально являлось клоном X-Cart.

В CS Cart есть версия с множеством поставщиков в одном магазине (Multi-Vendor). Ее стоимость

Нам приходилось работать с X-Cart. Данное решение появилось еще в конце 90-х годов и сразу же завоевало множество поклонников. Позднее ядро не раз существенно переписывалось, отчего веб-магазин становился все лучше и лучше. Никаких особых нареканий к X-Cart предъявить нельзя. Следует только отметить, что вносить свои изменения в ядро было крайне сложно.

Среди бесплатных решений следует выделить OpenCart и PrestaShop. OpenCart немного проще по функционалу, чем PrestaShop. Но для небольших магазинов выбор однозначно падает на OpenCart.

Для больших магазинов рекомендуют использовать Magento. Естественно, это решение сложнее, чем OpenCart и PrestaShop.

ASP.NET
Среди решений на платформе ASP.NET следует выделить BV Commerce 2013 от компании BV Software.

Решение появилось почти сразу же после выхода первой версии Visual Studio. Основатель фирмы Marcus McConnell ранее работал в различных компаниях в области электронной коммерции. Поэтому в архитектуре веб-магазинов он неплохо разбирался. Уже первая версия, написанная на веб-формах, имела впечатляющие возможности.

В 2005 году нам пришлось портировать BV Commerce на Oracle. Портирование заняло всего два месяца и не вызвало никаких сложностей. Работа с исходным кодом доставила нам массу удовольствия: код был написан весьма грамотно и поучительно; вся работа с базой данных вынесена на отдельный уровень. Позднее мы без труда смогли существенно расширить базовую функциональность веб-магазина. От проекта у нас остались только одни хорошие воспоминания.

Стоимость BV Commerce 2013 составляет $995, включая исходный код на C#.

Интервью с основателем BV Software можно прочитать здесь.

Решение BV Commerce для некоторых российских компаний может оказаться неприемлемым. Во-первых, потребуется произвести локализацию продукта на русский язык. Во-вторых, имеются свои особенности работы с кредитными картами в России. Поэтому в качестве полноценной замены BV Commerce можно предложить чисто российское решение AdVantShop.NET.

Стоимость AdVantShop.NET составляет 20 тыс. руб., включая исходный код на C#.

Вводная статься о функционале AdVantShop.NET напечатана здесь.

На блоге AdVantShop.NET есть неплохая статья «Сколько стоит создать интернет-магазин?»

Мы с удовольствием поучаствовали бы в проекте по вдумчивому внедрению AdVantShop.NET в какой-нибудь компании. Хотелось бы в «боевой обстановке» потрогать это изделие «за кишки», сравнить его с великолепным, на наш взгляд, решением BV Commerce.

 

 
Бэкмология для компаний: предоставление деловых интеллектуальных услуг 4С-анализ