【问题标题】:Choosing technologies for building Ajax RIA framework with scaffolding选择使用脚手架构建 Ajax RIA 框架的技术
【发布时间】:2010-07-13 17:59:31
【问题描述】:

构建体面的 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's showcase。我必须说每个选择 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 客户端与服务器端连接起来。那么还有哪些方法/技术值得考虑呢?

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

【问题讨论】:

    标签: ajax frameworks dojo smartgwt


    【解决方案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

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

    【讨论】:

    • 感谢您的回答。我对 SmartGWT 有点困惑:将网格和编辑器绑定到同一个数据源。但编辑通常需要更全面的设施。例如,我们经常使用子编辑器编辑嵌套对象并将所有内容保存在一个事务中。那么 SM 的数据源对嵌套对象的支持情况如何?
    • 我猜你来自同构,对吧?如果是这样,我想指出,如果您创建一些与 .net 平台的集成,那就太棒了。还在这里问过这个问题:forums.smartclient.com/showthread.php?t=12211
    • Master-detail 也是高度自动化的:smartclient.com/smartgwtee/showcase/#master_detail_batch 请注意,如果您使用的是 .NET,则需要在此处使用 RestDataSource 而不是可用于 Java 服务器的预构建 Hibernate 连接器。然后,您将获得一个嵌套的 JSON 或 XML 文档 POST'd 到您的服务器,然后您可以将其保存到 SQL 或任何您的存储系统。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2011-05-07
    相关资源
    最近更新 更多