Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Выбор платформы для написания веб-сервисов (главные критерии: надежность, масшта  (Прочитано 15534 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rss354
Гость
« : 25-08-2006 12:34 » 

Выбор платформы для написания веб-сервисов (главные критерии: надежность, масштабируемость, скорость) – помогите определиться с выбором платформы

Помогите определиться с выбором платформы.

Из кандидатов:
1. Perl
2. PHP
3. ASP (ASP .NET)
4. Ruby, Python (другие?)...

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

Если составить базовый список критериев, то получится:
1. Надежность (99,999%) и безопасность.
2. Масштабируемость.
3. Скорость.
4. Работа с большими нагрузками – большие объемы трафика, большое количество одновременно работающих пользователей.

По результатам поиска в интернете получается:
1. Самый надежный и безопасный - Perl. Следом - ASP, потом PHP (с безопасностью для него ситуация вроде довольно быстро меняется в лучшую сторону – благодаря PHP Security Consortium).
2. По масштабируемости - неясно. PHP активно используют крупные компании – к примеру Yahoo и JupiterMedia (http://www.citnews.ru/news/341/), про ASP встречал упоминания eBay.com. Идеальный вариант - чтобы в случае большой нагрузки можно было просто добавить новый сервер с минимальным переконфигурированием. Что в этом случае лучше?
3. По скорости - получается что Perl и PHP приблизительно одинаковы при использовании mod_perl и mod_php. А как в случае использования ASP .NET? Если разделить задачи на расчетные (скажем формирование контента) и выборки/занесения данных из базы?
4. Что здесь предпочтительней? Платформа на основе PHP/Perl или на основе ASP?


Конечно есть и другие не менее важные критерии:
1. Скорость написания кода.
2. Удобство отладки.
3. Сопровождение кода (тем-же или другим человеком).
4. Расширение функциональности действующей системы.
5. Наличие готовых стандартных библиотек "на все случаи жизни" (обработка XML, юникод и т.д.).

... в общем полный цикл поддержки системы.

Как здесь обстоит дело? Если исходить из того, что это будет не пара скриптов, а система, которую будет разрабатывать команда (около 5-10 человек) в течении минимум полугода и потом она будет активно развиваться - что в этом случае предпочтительней?

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

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

Спасибо за помощь!

P.S. Буду также благодарен за ссылки на статьи, обсуждения в форумах, проясняющие вопрос - возможно я что-то упустил при поиске информации.

Мой e-mail для приватных сообщений - rss354_собака_rambler_точка_ru
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 25-08-2006 21:47 » 

Считаю неправильным критерий "Работа с большими нагрузками" - это применимо к системе в целом, а не к языку.

Все только по моему опыту.

Работал с PHP и Perl, чуть-чуть с ASP и Python. С Ruby мне работать не приходилось.
Для программирования на любом из них нужен опыт, иначе будет выходить хреново.

Все перечисленные языки не нуждаются в управлении памятью, не имеют жесткой типизации базовых типов (числа, строки) и каждый по своему подерживает ООП.

Perl.
Язык одновременно простой и сложный. Что хорошо, что не обязательно знать его весь - эффективность от этого сильно не пострадает.
Большая гибкость структур данных, простота работы с ними. Простой и удобный синтаксис работы с индексированными и ассоциативными массивами. Интегрированная в язык поддержка регулярных выражений. Поддерживает многопоточность.
Своеобразная реализация ООП - не легко разобраться во всех тонкостях, но применять не сложно.
Высокая скорость исполнения. По моему опыту perl5.6 быстрее php3 раз в 10. Php4 сравнивал уже с php3, но 10-и кратного ускорения программ не заметил.
Для большего ускорения perl можно компилить в байт-код - исключается фаза синтаксического разбора.
Встроенные возможности безопасности: меченые данные (ряд ограничений на применение этих и поизводных от них данных) и песочницы (изолированные пространства имен). Еще можно применять блоки с eval - пространство имен то же, но ошибки в блоке приводят к завершению только этого блока.
Богатая библиотека на www.cpan.org, но многие модули не документированы - приходится изучать код.

PHP.
Простой и понятный язык.
Содержит огромное число встроенных ф-ий - это, на мой взгляд, не очень хорошо.
Реализация ООП в php4 немного своеобразна. Например, нет последовательного вызова конструкторов при наследовании. В php5 реализация ООП ближе к классической.
Так же как и в perl имеется большая гибкость в построении структур данных, но целочисленные и строковые индексы замешаны в единый тип - по моему это минус.
Безопасность: ограничение дерева директорий на доступ к файлам, возможность запрета встроенных ф-ий по выбору.
Контроль ошибок: php4 - единственная ф-ия на всю программу, php5 - блоки try-catch.

ASP.
Ничего такого, что не могли бы php и perl я не увидел. Работает только под windows.

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

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Chuda
Гость
« Ответ #2 : 26-08-2006 03:21 » 

Насчёт Питона.
Указанные минусы при правильном стиле минусами не являются.
Реализация ООП гораздо более своеобразна, чем во всех остальных языках. Как например нравится возможность создать свойство класса в отдельно взятом _объекте_ ?
Записан
rss354
Гость
« Ответ #3 : 26-08-2006 10:37 » 

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

Что для этого нужно - просто высказать свое мнение. Приблизительная табличка (это мое мнение) - во вложении.
Лучше все содержание стереть, и заполнить своим - в произвольной форме. Это не обязательно будет табличка. Вообще пишете то, что считаете нужным (с чем вы сталкивались).

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

Ключевые моменты:
1. Тема "Выбор платформы для веб на основе С++, Java, PHP, Perl, ASP" (возможны другие языки).
2. Каждый пишет только то, что считает нужным (т.е. нет задачи описать все). Это может быть просто пару абзацев о вашем инструменте и о опыте использования.
3. Это ваше субъективное мнение. Задача читателя - сформировать свое объективное мнение.
4. Напишите также кратко кто вы и чем занимаетесь и откуда. Cвоеобразная реклама авторам в благодарность за потраченное время Улыбаюсь

Очень надеюсь что инициатива не заглохнет и документ появится и будет полезен всем.
В своем роде это будет уникальный документ - _практическое_ мнение _разных_ участников.

Можно отвечать в форуме, или если удобней - то на мою почту (rss354_собака_rambler_точка_ru) - я обязательно пришлю подверждение о получении письма.

* Comparison.zip (5.17 Кб - загружено 1052 раз.)
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 27-08-2006 00:27 » 

Chuda, эту "своеобразность" можно сделать, к примеру, в JavaScript и в Perl.

rss354, а пельмени не сварить? Ага
Мы делимся опытом - ты  записывашь и сравниваешь. Справедливо?
Как я понимаю, это ведь не движение души, а партийное задание...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 27-08-2006 08:43 » 

Цитата: RXL
ASP.
Ничего такого, что не могли бы php и perl я не увидел. Работает только под windows.
ООП в VBScript, JavaScript... Одно дело - поддержка объектов (например, ActiveX, документов, окон и т.п. - готовых объектов). Другое дело - написание собственных объектов. Вот для последнего в JavaScript и VBScript мне встречалось лишь так называемое HTC - собственные компоненты для страничек.

Однако в ASP серверный код пишется на VBScript и JavaScript. И в нём-то собственных объектов средствами языка не создашь.

Совсем другое дело ASP.NET. По своим возможностям близок к Java, основан на достаточно богатых библиотеках .NET. В ASP.NET 1.0 и 1.1 ещё несколько непрозрачно был организован дизайн Web-страниц (HTML-код) и его интеграция с кодом программы. В ASP.NET 2.0, говорят, это устранили, но сам пока ещё не пользовался - ручаться не могу... Может в ближайшие полгода познакомлюсь, если привлекут к соответствующим проектам.

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

Цитата: rss354
1. Надежность (99,999%) и безопасность.
Я думаю, это на 80% зависит от квалификации программиста, и лишь на 20% от платформы. Между тем пункт "безопасность" применительно к языку мне несколько непонятен: идёт ли речь о глючности трансляторов языков, идёт ли речь о защите языка программирования (на уровне конструкций языка) "от дурака"?

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

Затем для крупных проектов немаловажно наличие удобной среды разработки: просмотрщики объектов, отладчики и т.п. Например, отладка ASP без отладчика - это сущий кошмар, когда на любую ошибку получаешь "500 Internal server error", и ищи потом, где и почему это "500" возникло. Пока пишется новое приложение, это ещё можно обойти методом "написал новую строчку - проверил как работает". Но вот сопровождение ранее написанного крупного проекта без отладчика, особенно если проект реализован методом "спагетти", понижает КПД программиста в разы, а то и десятки раз. Вставил новую строчку - где-то в другом конце системы что-то упало, и потом часами ищи эту одну ошибку. А ошибки, бывает, возникают группами.

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

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
rss354
Гость
« Ответ #6 : 29-08-2006 11:35 » 


rss354, а пельмени не сварить? Ага
Мы делимся опытом - ты  записывашь и сравниваешь. Справедливо?

Как я понимаю, это ведь не движение души, а партийное задание...

Совершенно верно Улыбаюсь
Записан
rss354
Гость
« Ответ #7 : 03-09-2006 12:50 » 

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

Спасибо всем участникам!

Романча Сергей.
Мой e-mail для приватных сообщений - rss354_собака_rambler_точка_ru

* PlatformChoose.zip (26.41 Кб - загружено 1063 раз.)
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 03-09-2006 19:35 » 

Цитата
про ASP встречал упоминания eBay.com.
Ну и такие мелочи, как Microsoft. Улыбаюсь

Цитата
Идеальный вариант - чтобы в случае большой нагрузки можно было просто добавить новый сервер с минимальным переконфигурированием. Что в этом случае лучше?
Точно знаю, что IIS 6.0 в содружестве с ASP.NET такие функции поддерживает. Как-то это там романтично называлось словом garden. Улыбаюсь При этом балансировка нагрузки серверов происходит автоматически. Видимо, подобные решения есть и для платформы Java, но наверняка не знаю.

Цитата
сбор информации из разных сайтов, парсинг
Perl ориентирован именно на парсинг.

И вообще, документ вызывает ощущение, что проекта ещё нет, а платформа уже выбирается... Начинают-то с архитектуры с анализа предметной области - это всё от платформы не зависит.

Цитата
Надежность (чем надежней, тем меньше вероятность "плохого" кода "положить" систему)

ASP - высокая
Ну... это очень оптимистичное предположение, если под "плохим" кодом понимать баги программистов.

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

C++ - низкая, ASP - высокая
Вот этого я не понимаю...

Относительно баз данных "в связке" тоже как-то странно... Непонятно, к чему. В том же ASP или Java работа с БД осуществляется через специализированные библиотеки доступа к данным, и работа равно происходит с любой БД, с которой умеет работать библиотека.

Цитата
Лучше использовать только для "внутренних", критичных к скорости частей. Писать полностью всю систему на C++ - имеет смысл если количество компьютеров изначально настолько велико, что любой сэкономленный такт процессора очень важен
Я бы это отнёс к C. Объектная структура программы не особо располагает к подсчёту "тактов".

Цитата
PHP ... часто критикуют за ... массовое использование "чайниками".
Есть место, в которое и цари пешком ходят. Неужели бы цари туда не ходили только лишь потому, что в то же место всякий смерд ходит? Улыбаюсь

Цитата
ASP Медленно, но стабильно набирает популярность
С ума сойти... А мне кажется, что оно уже почти умерло и в новых разработках не используется, ибо .NET есть. Меж тем ASP.NET и ASP - это такие же две большие разницы, как VB и VB.NET.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
rss354
Гость
« Ответ #9 : 04-09-2006 08:52 » 

dimka, спасибо за критику!

Насчет замечания "что проекта ещё нет, а платформа уже выбирается" - частично верно. Есть общая идея - "поиск и метапоиск" (идея не нова Улыбаюсь ) - и несколько мыслей (вот это конечно видится новым) вокруг этой идеи.

Ещё раз спасибо за комментарии!
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #10 : 14-09-2006 09:20 » new

Ну уж и я выскажусь Улыбаюсь Програмил я немного на Perl, ASP, C и C++. Много програмил на PHP, сейчас на C#. И лично моё ИМХО, то вэб-сервисы писать на ASP.NET (C# или VB.NET) милое дело!
Цитата
1. Надежность (99,999%) и безопасность.
и надёжно и безопасно Улыбаюсь Ну конечно на 100% не бывает да и от админов многое зависит ну и от рук программера естественно Улыбаюсь
Цитата
2. Масштабируемость.
есть Улыбаюсь
Цитата
3. Скорость.
вполне приличная Улыбаюсь

Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines