-1

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

我将为此类应用程序构建自己的框架。关键要求之一是脚手架(从模型生成 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、connections、Defered、modules、Json 解析器、Dijit 的模板、数据抽象),并且它有很多 widjets。它是免费的。

但比我看的 ExtJS 还要好。我还没有深入学习它。但是他们的演示非常好。在我看来,GUI 的质量比 Dojo 的 widjet 好得多。但是 ExtJS 用于商业用途是要花钱的。但是为一个好的框架花钱并不是什么大问题。
然后我查看了 SmartClient。特别是在SmartGWT 的展示会上. 我必须说每个选择 Ajax 框架/库的人都必须看到这一点。真是太棒了。它是一个合并到 GWT 中的客户端库 (SmartClient)。因此,我们可以使用 Java 创建一个令人惊讶的 Ajax 应用程序。有编译语言,没有脚本语言!伟大的!但他们还有更多——SmartGWT EE。它将客户端代码(从 Java 生成)与服务器 Java 对象无缝集成,在数据模型(与服务器连接)和 GUI 控件之间提供双向数据绑定。
这是我需要的,但我需要.NET这样的东西。是的,我知道 Script#。但它非常有限(c# 1.0)。还有jsc。它可以工作,甚至可以调试。但它与GWT+SmartGWT 的设施相去甚远。

所以,看了这么漂亮的东西,用asp.net mvc+dojo搭建框架,好像也不是什么好主意了。

我相信你们中的许多人都面临着类似的问题:如何在数据密集型 crud 类(通常是企业/内部网)应用程序(而不是网站)中有效地将 Ajax RIA 客户端与服务器端连接起来。那么还有哪些方法/技术值得考虑呢?

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

4

1 回答 1

1

如果可重用脚手架是一个关键问题,那么这是 SmartGWT/SmartClient 的强项之一。在此处查看功能齐全的 CRUD 屏幕需要多少代码:

http://www.smartclient.com/smartgwt/showcase/#featured_pa​​ttern_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

从现有对象/表派生数据源的一种选择是使用 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

于 2010-07-12T21:43:32.203 回答