富Web应用技术列表

26

我正在努力了解丰富的Web应用程序世界。维基百科上有一些可用技术的比较表,但我仍然不清楚丰富应用程序开发的选项是什么。

您能否验证并完善我下面收集的信息? 每个选项的主要优缺点是什么? 哪种选项是大型和非常丰富的Web应用程序的最佳选择?

选项1:ASP.NET/ASP.NET MVC
供应商:Microsoft
环境:Visual Studio
语言:C#
输出:HTML + JavaScript + AJAX
示例:www.stackoverflow.com

选项2:Silverlight
供应商:Microsoft
环境:Visual Studio
语言:C#
输出:.NET可执行文件?
示例:?

选项3:Google Web Toolkit
供应商:Google
环境:Eclipse
语言:Java
输出:HTML + JavaScript + AJAX
示例:http://www.projectkaiser.com:8080/pk/

选项4:Flex
供应商:Adobe
环境:?
语言:?
输出:Flash(.swf文件)
示例:http://listen.grooveshark.com/

选项5:Adobe AIR
供应商:Adobe
环境:?
语言:?
输出:AIR
示例:http://www.colabolo.com/en/download.html

选项6:Ruby on Rails
供应商:Rails核心团队
环境:?
语言:Ruby
输出:HTML + JavaScript + AJAX?
示例:?

选项 6:Java Applets
供应商:Sun
环境:Eclipse
语言:Java
输出:Java Applet

选项 7:OpenLaszlo
供应商:?
环境:?
语言:?
输出:?
示例:?

选项 8:Vexi
供应商:Vexi 核心团队
环境:Eclipse
语言:XML + JavaScript
输出:Java
示例:在 http://vexi.sourceforge.net/ 上有演示

选项 9:Django
供应商:Django 核心团队
环境:?
语言:Python
输出:HTML + JavaScript + AJAX
示例:?

选项 10:XUL
???


我不确定社区维基是用来做什么的,但我已经打开了它。 - Michal Czardybon
8个回答

24
您把所有东西都混在了一起。您有两层:用户界面使应用程序“丰富”,服务器端代码。
UI:
Silverlight 最适合.NET平台。我不会考虑将其与Java、Ruby on Rails、PHP或其他东西结合使用。 工具是商业的。
Flash/Flex(Flash平台) 这是我最喜欢的,也是我认为列表中最成熟的一个(因为我是Flex/Java开发人员,这是我的主观看法)。使用简单的Http服务、WebService可以与所有服务器端技术一起使用,但最好的集成是通过AMF服务(高效二进制协议)。集成处于不同的级别。基本远程调用(对于90%的项目而言已经足够)可用于所有平台(.NET、Java EE、PHP、RoR),但是对于Java EE来说,还有用于高级交互的库(数据同步、数据推送、客户端-服务器事件甚至客户端-服务器依赖注入):Adobe Livecycle Data Services(商业版)或GraniteDS和Tide Framework(免费版,适用于JBoss Seam)。
Flex SDK(编译器和库)是免费的,但FlexBuilder是商业的。
OpenLaszlo 有两个选项 - 在OpenLaszlo服务器上进行实时“编译”以生成flash或html+javascript,或者进行开发时编译以生成flash并上传到http服务器。与大多数服务器端技术集成。其思想与flex类似,但首创。
SDK是免费的,IDE相对较差。

JavaFX / Java Applet
这是一种实验性的技术,图形工具和IDE都比较简陋。它的想法是通过声明式(但不是XML)编写Swing界面代码,并将其作为Applet运行。我认为它还没有生产状态。

Flash/Flex和Silverlight提供了最先进的工具,可以创建具有多媒体功能的丰富用户体验界面(视频/音频流,使用网络摄像头,麦克风等)。

Adobe AIR
AIR代表Adobe集成运行时,可让您在桌面上运行Flex或HTML + Javascript应用程序(类似于java虚拟机+ WebStart)。对于Flex应用程序,与远程系统的集成与上述相同。AIR应用程序像任何应用程序一样安装在客户端计算机上并运行。您也可以访问文件系统。AIR在Windows,Mac和Linux / BSD上运行(我认为)。

服务器端:

Java
它是:Java EE 5(现在是Java EE 6),或者是没有应用程序容器的简单Web应用程序。 您可以拥有一些基于JavaScript的丰富UI,例如Google Web Toolkit,JBoss RichFaces,IceFaces和一些商业软件。

与Flex接口集成良好,具有集成框架-Adobe LiveCycle ...(商业软件),BlazeDS(简单,免费),GraniteDS + Tide + Gravity(高级,免费),WebOrb和其他一些工具。您可以在这里使用应用程序框架:Spring(2或3),JBoss Seam等。

.NET
我不是这方面的专家。它为JS丰富接口提供了机会。与Silverlight和Flex集成(WebOrb,.NET和AMF)。

有许多其他技术可用。它们中的一些具有自己丰富的用户界面,而另一些则没有。大多数与Flex集成。

PHP
使用Prado应用程序框架拥有丰富的用户界面。还有一些更简单的PHP框架(请问谷歌)。通过AmfPHP、WebOrb、SabreAMF与Flex集成。

Ruby on Rails
语言+服务器+应用程序框架。可以与Flex集成。

Python
有一些应用程序框架:Django、Pylons...可以与Flex集成。

Scala + Lift
Lift是用Scala编写的应用程序框架。在Java服务器上运行。

Coldfusion
Adobe技术。语言是CFML。运行在Adobe Coldfusion服务器上,但是JBoss有免费的Railo可用。与Flex集成。


Silverlight的工具是免费提供的。 - Murph
Adobe AIR 2.6 SDK允许导出到Android、iOS和Blackberry Tablet OS应用程序。这在我的书中是一个巨大的优势,绝对值得一提。 哦,AIR确实可以在Linux上运行(不确定*BSD)。但它并没有打包在某些发行版中。 - Nathan Moos
Adobe已经停止了对Linux的AIR支持,但是你可以使用OpenLaszlo来构建AIR应用程序,因为该产品集成了Adobe Flex编译器。 - raju-bitter
这是我为收集和澄清选择各种技术的原因而制作的知识库。请使用它来节省时间并贡献您所知道的内容。 http://www.dancancro.com/compare-app-technologies/ - Dan Cancro

2

我的意见

ASP.NET - 忘掉它吧。过时的技术,已经落后了一个千年。

Silverlight 优点 - 提供非常强大的商业库。如果需要“哇”效果,那么Silverlight就是你的选择,尽管你需要花些钱购买第三方软件。

例如,请看:

sirius2 . intersoftpt . com

demos . telerik . com / silverlight / salesdashboard /

Silverlight 缺点: 浏览器必须安装Silverlight插件,当新版本发布并用于你的软件时,这个插件应该随时升级,有时候升级这个插件会遇到问题。而且不确定这个插件是否完全适用于*nux操作系统 - 所以你可能会被限制在Windows上。

GWT 优点: 不需要插件,使用Java开发,并将Java编译成纯JavaScript。我最喜欢用来构建有效应用程序的工具,例如http://www.projectkaiser.com

GWT 缺点: GUI库较差(即使我们谈论商业库)

Java Applets. 你可以看看pivot . apache . org

所以,我的答案是Silverlight,“哇”效果很好。但要注意缺点!


3
如果你正在开发一款“网页”应用,为什么要选择将你锁定在单一供应商专有的运行时技术?如果你可以强制所有用户安装Silverlight(例如,如果你正在为一家公司开发应用),那当然可以这样做。但我甚至不会称之为网页应用——它只是一个插件,将浏览器变成混合的RIA平台。 - mckoss

2
我也在考虑使用哪种技术,我认为有一种你可能想要看看。 Appcelerator Titanium - 它允许您使用HTML5/CSS/JS等Web技术开发桌面和移动平台应用,甚至可以使用PHP/Python开发桌面应用。
还在评估中。
还在考虑RIA(AIR、Silverlight、Titanium)与原生Web应用(PHP、ASP.NET MVC)的优缺点。 RIA在与文件系统交互方面更强大,而且由于它们存在于本地,因此通常速度更快。Web应用程序无法与文件系统交互,通常速度较慢且延迟更大。但是由于它们存在于Web上,因此我可以随时访问它。
我实际上想使用基于开放Web技术的工具,如HTML5/CSS3/JS/PHP/Python,但正在认真考虑.NET平台。C#/F#/WPF/Entity Framework/Silverlight以及Windows 7覆盖图标、进度条、跳转列表等功能都有很大潜力。并且能够使用1个框架和几种语言同时进行Web和桌面应用甚至RIA的开发非常有吸引力。我也看过很多关于MS推荐的模式和实践的视频,质量等方面都很棒。虽然一开始可能会有些难以学习,但我认为这是值得的。缺点是经常被人们所指出,包括我在内,它是闭源的工具通常更加昂贵。

2
如果你说的是在客户端构建具有丰富交互功能的 Web 应用程序,那么有三种主流选择:
1. 基于 Flash - 但你的应用程序无法在 iPad 上运行。 2. Silverlight - 需要插件,不如 Flash 被广泛采用,即使微软最近已经开始淘汰它。 3. HTML - Web 2.0 主要使用本地的 HTML + JavaScript 在 Web 浏览器中构建丰富的应用程序。
对我来说,HTML 是迄今为止最有趣的平台。它活跃度最高,并且正在快速在各个浏览器中标准化。HTML5 添加了对本地存储和后台处理等功能的支持。甚至 Google Chrome 现在也拥有了一个 3D 图形库(WebGL)- Firefox 很快也会有。
如果我是你,我会专注于学习 HTML(5) 技术栈 - HTML、CSS、CSS3、HTML5、jQuery,并查看像 backbone.js、jQuery mobile、JQTouch、angular.js 等开源框架。我在 GitHub 上关注了许多这些项目 - 你可以在此处查看更大的列表:

https://github.com/mckoss/following

您丰富的Web应用程序可能需要某种服务器端基础设施来支持它。Ruby on Rails可能是最流行的框架,非常容易上手。Heroku可以非常轻松地为您托管应用程序,并具有可扩展性。
如果您已经有很多Java代码(我本人不是Java的粉丝)- Google的GWT是一种非常好的纯Java构建应用程序的框架,它会将客户端位编译成JavaScript。
我个人喜欢在服务器端使用Python-Google App Engine提供了一个非常好的选项,可扩展且简单易用(对于非平凡应用程序,在Google App Engine上使用Django框架是最佳选择)。
如果我能推荐一些新的东西,那就是我一直在开发的Pageforest.com提供了一个纯JavaScript Web应用程序平台。您可以在客户端JavaScript中编写所有代码,并使用AJAX / REST登录用户并将数据保存到Pageforest服务器(此服务对开发人员开放且免费)。
祝你好运!

1

Sencha Ext JS是一个强大的前端库,可在浏览器中提供类似桌面的体验。优点:外观一致,架构强大(基于原型的面向对象编程),有很多小部件。缺点:在大多数情况下不免费。

如果您选择坚持模块化方法(对于具有数百个模型的复杂数据丰富的Web应用程序是明智的选择),并希望在后端使用Ruby,请查看Netzke:https://github.com/nomadcoder/netzke-core


1
我完全同意Peter Gwiazda的观点,所以我对那部分没有更多的评论。我想要补充的是其他一些规格。首先,清楚地了解你希望用它实现什么。你想要开发什么应用程序?还要搜索你希望该应用程序在哪个操作系统上运行。然后,你将决定你希望使用哪种类型的语言/框架来开发应用程序。明确你的目标,分析哪种框架更适合开发(根据我的看法),然后去学习。你不能一次学习所有东西!每种语言/平台都有其优缺点,因此你将决定哪种更适合你!

1
我认为随着时间的推移,Web开发变得越来越复杂(多个平台和设备、更强大的设备)。随着这种情况的发生,软件层变得越来越明确和复杂。如果您考虑长期发展,那么在这些层之间的集成和独立性变得非常重要。您不能再仅依赖一种技术来构建解决方案。因此,我会考虑像Web 2、3等开放系统/标准。

0

针对Python开发者的选择:

Pyjamas(Google Web Toolkit)- 将Python编译成JS

+任何Python后端(Django,Web.py等)。

所有通信都通过JSON-RPC进行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接