我正在考虑创建一个具有Facebook复杂性的网站,该网站应该可以扩展到数百万用户。我的问题是:除了明显要求每个人都安装Flash并且不必依赖Adobe之外,是否有任何理由不将Adobe Flex用于这样的大型项目?在我看来,Adobe Flex会减少Facebook的服务器负载,因为我可以在客户端完成更多的工作。你同意吗?
答案 0 :(得分:7)
当然Facebook可以在Flash中实现。但问题是它会成功吗?谷歌,Facebook和雅虎等大型网络公司都有理由尽可能少地使用Flash。
我最担心的是疏远用户。 Flash插件并不是最好的软件。它很慢,很可能偶尔会崩溃。如果您的应用程序变大,您可能会获得一些用户可能无法接受的加载时间。另外在我看来,完整的Flash网站感觉不对,因为它们的行为与HTML网站不同。 Google,Flickr,Stackoverflow或Facebook等所有优秀网站都非常轻巧,非常优雅,非常优雅,可以提供极佳的可用性。
然后HTML和JavaScript更加灵活。您想在smartphonse上使用您的网站吗? iPhone没有闪存,甚至手机都有问题,用户很可能会讨厌一个完整的Flash网站,因为这些手机并不一定能像Flash一样扩展Flash,而且Flash会像疯了一样吸引电池。如果有人提出像智能手机这样的另一场革命,你可以肯定它支持HTML和JavaScript,但你不能对Flash这么肯定。
然后问题是你如何获得任何效率?当然,您可以使用Flex编写UI,只需调用非常轻量级的Web服务,就像将它们用于AJAX一样,您甚至可以在本地缓存一些站点内容,这样就不会为了用户交互而传输更多数据( UI只传输一次)。但你也可以用JavaScript做到这一点。您可以用HTML和JavaScript编写UI,加载一次,然后从服务器中提取裸JSON数据并使用JavaScript渲染它。您还可以提前获取大量此类数据以减少请求数量。但这种方法仍有其缺点。您是否注意到当您在stackoverflow上键入答案并且其他人提交答案时,您会在输入答案时收到通知。这样的实时功能非常酷,您可能希望在某个时间点使用此功能,这意味着更多的服务器交互。
但无论您做什么,如果您的网站增长,您的服务器仍然需要扩展。即使您最大限度地减少了攻击服务器的GET请求数量,当您的网站受欢迎时,它们仍然会增长很多,而您需要大量服务器来处理您,这只会提高您的用户/服务器比率。
最有趣的一点是,Flex比AJAX更容易编程(例如考虑浏览器不兼容性),但AJAX不仅被发明了,而且整个世界都混淆了随之而来的所有问题,而不是使用Flex 。我认为这可以说明在Flash中创建完整网站时获得的结果的价值。
答案 1 :(得分:4)
转到facebook并查看源代码...你看到所有的JavaScript吗?这一切都运行客户端
答案 2 :(得分:4)
Johannes指出服务器与客户端的区别是正确的。服务器端的东西是需要扩展的东西。
例如,Microsoft Silverlight团队已经汇集了facebook client app in silverlight(使用Facebook公共API)。我的观点是,使用当今的技术,完全可以编写针对许多不同类型的客户端技术的Web应用程序:经典的Web浏览器(HTML / javascript),“富Internet应用程序”(flex,silverlight),...
另请参阅那里的无数Twitter客户。
答案 3 :(得分:4)
我工作的公司在Flash中有一个大型应用程序供政府使用。它很难维护,有时也会失败。问题是所有.fla和.as文件都必须进行更改才能进行小的更改。是的,该应用程序本可以更好地构建,但即便如此,它仍然比HTML / JavaScript前端更难维护。
虽然我喜欢编写Flash / Flex应用程序,但我相信它们应该是对网站的补充,而不是网站。
使用像jQuery这样的优秀JavaScript框架会将浏览器兼容性问题排除在图片之外(大部分时间)并且允许很多功能。
答案 4 :(得分:2)
Flex是客户端的GUI。您仍然需要服务器端存储,这是必须扩展的。用户界面可以是Flex,而大多数用户不喜欢这样的界面。
答案 5 :(得分:1)
您必须为iPad / iPhone制作网站的自定义版本。
还有其他方法可以将负载转移到客户端。 Javascript会给你带来麻烦,但不会像Flex那样远离整个架构。
OTOH当你获得一百万用户时,你将有资源重新实现你的网站。
答案 6 :(得分:1)
我不认为你会看到像Facebook这样的网站的性能优势,因为内容是高度动态的,来自许多不同的地方,并由许多独立实体创建。 Flash(以及Flex)对于单一来源的单片应用来说更好,不需要经常更改。
Flash中的默认设置是将所有内容构建到一个包含所有内容的.swf文件中。当然,可以突破这种默认行为。您可以进行Web服务调用,通过SWC机制引入外部组件,通过HTTP加载静态内容等。但是,这不是默认模式,它会影响Flash开发库和工具的工作方式。此外,你做的越多,“在客户端运行我们可能做的一切”就越少。它在HTTP连接开销中被吸收了。
普通的基于标准的Web上的默认设置是分别存储所有资产并在客户端动态组装它们。这是网络速度慢的一个原因 - 再次,所有HTTP连接开销 - 以及它灵活和动态的原因。它与像Facebook这样的网站很好地配合,这需要许多独立开发者不断发展。
我说这已经开发了一个Flex应用程序,我很满意。只有一个人 - 我 - 必须维护它,它自然是一个单一的应用程序。它正好适用于Flex的优势。