选择使用脚手架构建Ajax RIA框架的技术

时间:2010-07-10 00:20:16

标签: ajax frameworks dojo smartgwt

构建体面的RIA数据密集型类似crud的应用程序仍然很难。尽管存在大量框架。

我将为这种应用程序构建自己的框架。关键要求之一是scaffolding(从模型生成UI)。另一个是.NET服务器端。 我知道asp.net动态数据,oracle ADF,fornax / sculptor等(是的,两个后者是Java)。 有许多服务器端框架,如Django(基于python),Grails(基于Groovy),ruby on rails。它们通常包含一些ORM和一种脚手架。但对我来说,主要的问题是它们不包含客户端框架。它们确实生成了脚手架UI代码,但它不能在手工编写的代码中重用。 我也不喜欢asp.net WebForms的“服务器控件”方法。即使生成了所有服务器标记(如类似或类似的JSF / JSP)。

另一方面,还有(甚至更多)客户端框架。它们通常与服务器技术无关。在这里我们有Dojo,ExtJS,SmartClient,QooxDoo等。他们都为我们提供编写JS代码并做一些css / html设计。这不错,但JS代码(因为它是脚本代码)非常错误。

所以我最初的愿景是将asp.net mvc用于服务器端并采用一些不错的客户端框架。问题是选择哪一个。

我的第一个决定是采用Dojo工具包。这是一个有很多JS(mixins,pub / sub,连接,Defered,模块,Json解析器,Dijit的模板,数据抽象)的好框架,它有很多widjets。它是免费的。

但是我看着ExtJS。我还没有潜入学习它。但他们的演示非常好。在我看来,GUI的质量比Dojo的widjets要好得多。但ExtJS需要花钱购买商业用途。但为一个好的框架付钱并不是什么大问题 然后我看了一下SmartClient。特别是SmartGWT's showcase。我必须说每个选择Ajax框架/库的人都必须看到它。这绝对是令人敬畏的。 它是一个集成到GWT中的客户端库(SmartClient)。所以我们可以用Java创建一个令人惊讶的Ajax应用程序。使用编译语言,没有脚本语言!大! 但他们还有更多--SmartGWT EE。它将客户端代码(由Java生成)与服务器Java对象无缝集成,提供数据模型(与服务器连接)和GUI控件之间的双向数据绑定。 这就是我需要的东西,但我需要.NET这样的东西。是的,我知道脚本#。但它非常有限(c#1.0)。还有jsc。它可以工作,甚至可以重新组合。但它远不是GWT + SmartGWT的设施。

所以,看了这样的美貌后,用asp.net mvc + dojo构建一个框架似乎并不像 再好一点了。

我相信你们中许多人都面临着类似的问题:如何在数据密集型的类似crud(通常是企业/内部网)应用程序(不是网站)中有效地连接Ajax RIA客户端和服务器端。那么接近/技术的其他方面有什么意义呢?

P.S。我甚至考虑使用GWT。但我必须使用两个IDE:一个用于客户端代码(java),另一个用于服务器代码(asp.net mvc)。但这不是梦想的边缘。

1 个答案:

答案 0 :(得分:1)

如果可重复使用的脚手架是一个关键问题,这是SmartGWT / SmartClient的最强点之一。看看完整功能的CRUD屏幕需要多少代码:

http://www.smartclient.com/smartgwt/showcase/#featured_pattern_reuse

请注意,您可以对模型生成的UI进行非常精细的覆盖,同时仍然避免重复:

http://www.smartclient.com/smartgwt/showcase/#layout_form_databinding

确实,没有适用于.NET的SmartGWT EE,但使用RESTDataSource与.NET的集成非常简单:

http://www.smartclient.com/smartgwt/showcase/#restfulds_xml_integration_category

从现有对象/表中导出DataSources的一个选项是使用SmartGWT读取XML模式的能力:

http://www.smartclient.com/smartgwt/showcase/#featured_xsd_ds

您可以将此与DataSource继承结合使用,例如,您可以声明配置为与服务器通信REST的DataSource从自动从XML Schema派生的DataSource继承它的字段定义:

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/data/DataSource.html#setInheritsFrom%28com.smartgwt.client.data.DataSource%29

相关问题