Может ли Facebook быть реализован в Adobe Flex? - PullRequest
6 голосов
/ 13 февраля 2010

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

Ответы [ 7 ]

7 голосов
/ 14 февраля 2010

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

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

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

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

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

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

4 голосов
/ 14 февраля 2010

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

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

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

4 голосов
/ 13 февраля 2010

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

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

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

4 голосов
/ 13 февраля 2010

Зайдите на Facebook и просмотрите исходный код ... Вы видите весь этот JavaScript? Это все работает на стороне клиента

2 голосов
/ 13 февраля 2010

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

1 голос
/ 15 февраля 2010

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

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

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

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

1 голос
/ 13 февраля 2010

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

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

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

...