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