2010-02-13 2 views
6

Я рассматриваю возможность создания веб-сайта со сложностью Facebook, которая должна иметь возможность масштабировать миллионы пользователей. Мой вопрос: есть ли какая-либо причина не использовать Adobe Flex для такого большого проекта, кроме того, что нужно, чтобы все были установлены Flash и не полагались на Adobe? На мой взгляд, Adobe Flex снизит нагрузку на сервер для Facebook, потому что больше работы я мог бы сделать на стороне клиента. Вы согласны?Может ли Facebook быть внедрен в Adobe Flex?

+3

Я действительно рад, что он не был реализован в Flex, это сосать, не имея возможности использовать facebook на моей ОС с открытым исходным кодом. – Earlz

ответ

7

Конечно, Facebook мог быть реализован во Flash. Но тогда вопрос в том, что это сработало? Есть причины, по которым крупные веб-компании, такие как Google, Facebook и Yahoo, используют Flash только как можно более экономно.

То, что я больше всего боюсь, - это отчуждение пользователей. Плагин Flash - это не лучшая часть программного обеспечения. Он медленный и, вероятно, сбой время от времени. Если ваше приложение станет больше, вы можете получить время загрузки, которое может быть неприемлемо для ваших пользователей. Также, на мой взгляд, полные Flash-сайты просто не чувствуют себя хорошо, потому что они ведут себя иначе, чем HTML-сайты. Все прекрасные веб-сайты, такие как Google, Flickr, Stackoverflow или Facebook, очень легкие и гладкие, которые очень элегантны, придают большое удобство.

А затем HTML и JavaScript намного более гибкие. Вы хотите, чтобы ваш сайт был доступен на смартфоне? У iPhone нет Flash и даже с телефонами, у вас есть проблема, что пользователи, скорее всего, ненавидят полный сайт Flash, так как эти телефоны не обязательно масштабируют Flash так же хорошо, как они масштабируют HTML, а Flash рисует аккумулятор как сумасшедший. Если кто-то придумает другую революцию, например, смартфоны, вы можете быть уверены, что она поддерживает HTML и JavaScript, но вы не можете быть настолько уверены в Flash.

Тогда возникает вопрос, как вы могли бы получить какую-либо эффективность? Конечно, вы можете написать свой пользовательский интерфейс с помощью Flex и просто вызвать очень легкие веб-сервисы, например, использовать их для AJAX, и вы даже можете кэшировать часть содержимого сайта локально, чтобы вы не передавали больше данных по мере необходимости для взаимодействия с пользователем (пользовательский интерфейс передается только один раз). Но вы также можете сделать это с помощью JavaScript. Вы можете написать свой интерфейс в HTML и JavaScript, загрузить его один раз, а затем просто вытащить обнаженные данные JSON с серверов и отобразить их с помощью JavaScript.Вы также можете получить много данных заблаговременно, чтобы получить количество запросов. Но все же такой подход имеет свои минусы. Вы когда-нибудь замечали, что когда вы вводите ответ в stackoverflow, а кто-то другой отправляет ответ, вы получаете уведомление при вводе вашего ответа. Такие функции реального времени очень круты, и вы можете захотеть этого в определенный момент времени, что означает большее взаимодействие с сервером.

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

Наиболее интересным моментом является то, что Flex намного проще программировать, чем AJAX (например, о несовместимости с браузером), и, тем не менее, AJAX был создан не только, но и весь мир смешивается со всеми теми проблемами, которые возникают с ним, вместо того, чтобы использовать Flex. Я думаю, что это много говорит о ценности результата, который вы получаете при создании полного веб-сайта во Flash.

4

Перейти на facebook и просмотреть источник ... вы видите все, что JavaScript? Что все работает на стороне клиента

+0

Но такие вещи, как многопоточность, насколько я знаю, поддерживаются только с помощью GoogleGears. Это означает, что утилизация клиента будет намного сложнее. – David

+0

@David, я считаю, что ваш чрезмерно используемый код на стороне клиента тогда .. Вам не нужен многопоточный код для запуска в браузере для всех практических целей. (вы знаете, что не хотите создавать SQL-запросы на стороне клиента?) – Earlz

+0

ваш клиент будет вызывать службу на сервере, которая может быть распараллелена там ... для всего, что вы знаете, клиент все еще работает с PIII 600 MHZ. , – SQLMenace

2

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

+0

Знаменитость, это хороший момент. – David

+0

Я не получаю downvotes здесь (может быть, аргументационное утверждение о том, что «пользователям не понравятся такие интерфейсы»?) Основная проблема клиента и сервера - очень важная точка. – jeroenh

1

Вам нужно будет сделать пользовательскую версию своего сайта для iPad/iPhone.

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

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

+0

Поддержка Ipad/iphone - отличная точка. Повторное использование сайта никогда не бывает выгодным даже при почти неограниченных ресурсах. – David

+0

Извините, я был немного увлекательным :-) Правильный ответ: когда у вас есть «миллион пользователей», вы сможете заплатить кому-то другому, чтобы переопределить его для вас или продать его Google :-) –

+0

Кстати, я считаю, что это прекрасное название для клона Facebook :-) –

4

Johannes имеет право указать разницу между сервером и клиентом. Материал на стороне сервера - это то, что нужно масштабировать.

В качестве примера команда Microsoft Silverlight собрала facebook client app in silverlight (используя публичный API Facebook). Моя точка зрения заключается в том, что, используя современные технологии, вполне возможно написать веб-приложение, ориентированное на множество различных видов клиентских технологий: классические веб-браузеры (HTML/javascript), «богатые интернет-приложения» (flex, silverlight), ...

См. Также множество клиентов Twitter.

+0

Мне нравится ваша точка использования множества клиентов. Однако это добавляет сложности. – David

4

Компания, в которой я работаю, имеет большое приложение в Flash, которое используется правительствами. Его очень сложно поддерживать, и иногда он терпит неудачу. Проблема заключается в всех файлах .fla и .as, которые необходимо изменить, чтобы внести небольшие изменения. Да, приложение могло быть построено лучше, но тем не менее, его еще сложнее поддерживать, чем интерфейс HTML/JavaScript.

Хотя я люблю писать приложения Flash/Flex, я считаю, что они должны дополнять сайт, а не быть сайтом.

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

+0

Зачем нужно обновлять больше файлов, когда сайт реализован в Flex? Является ли ваша мысль о том, что создание хорошей архитектуры в Flex сложнее, чем в HTML/Javascript? – David

+0

Это во Flash, но то же самое может произойти и в Flex. Существуют файлы SWF, содержащие пользовательский интерфейс и логику пользовательского интерфейса, а затем файлы AS, содержащие бизнес-логику. Эти AS-файлы должны взаимодействовать с уровнем базы данных на стороне сервера (в этом случае PHP). Это означает, что если у вас есть проблема, это либо в PHP, AS, либо SWF. Хотя PHP-приложение обычно имеет только класс PHP для данных и страницы пользовательского интерфейса для общения с этим классом. –

1

Я не думаю, что вы увидели бы преимущество в производительности с таким сайтом, как Facebook, потому что контент очень динамичный, происходит из разных мест и создается многими независимыми объектами. Flash (и, следовательно, Flex) лучше подходит для монолитных приложений из одного источника, которые не нужно менять очень часто.

По умолчанию во Flash необходимо создать все в одном .swf-файле, который содержит все. Конечно, можно выйти из этого поведения по умолчанию. Вы можете совершать вызовы веб-сервисов, вытягивать внешние компоненты через механизм SWC, загружать статический контент через HTTP и т. Д. Тем не менее, это не шаблон по умолчанию, который влияет на работу библиотек разработки и инструментов разработки Flash. Кроме того, чем больше вы это делаете, тем меньше выгоды от «запускать все, что мы можем на стороне клиента». Он впитывается в накладные расходы HTTP.

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

Я говорю об этом, разработав приложение Flex, которым я доволен. Только один человек - я - должен его поддерживать, и это, естественно, монолитное приложение. Он играет прямо в силе Flex.

+0

Отличные очки. благодаря – David

Смежные вопросы