- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我必须重新设计一个在后端使用Pylons(Python)在前端使用GWT的现有应用程序。
在重新设计的过程中,我还可以更改后端系统。
我试图阅读各种后端系统(Java,Python等)的优缺点,但是我很感谢社区提供的反馈。
现有应用程序:
现有应用程序是使用GWT 1.5开发的(现在在2.1上运行),并且是一个多主机页面设置。
Pylons MVC框架定义了一组嵌入GWT小部件的控制器/主机页面(“经典网站”)。
数据存储在MySQL数据库中,并由后端使用SQLAlchemy / Elixir访问。服务器/客户端通信通过RequestBuilder(JSON)完成。
该应用程序不是具有复杂CRUD功能(事务,锁定等)或复杂权限系统(需要简单的ACL)的典型业务,如应用程序。
该应用程序用于科学数据的可视化(图表,表格)。客户端界面主要用于以只读模式显示数据。可能有一些CRUD功能,但这不是应用程序的主要方面。
仅科学数据的一个子集将被传输到客户端界面,但是该子集是从大型数据集中生成的。
现有后端使用numpy / scipy从db /文件中读取数据,创建矩阵并对其进行过滤。
访问或使用该应用程序的用户数量相对较少,但是每个用户/请求的后端负担非常高,因为它必须读取和过滤大型数据集。
新系统要求:
我想从多主机页面设置转移到MVP体系结构(一个主机页面)。
因此,后端仅服务于一个主页,并充当AJAX调用的数据源。
数据仍将存储在关系数据库(PostgreSQL而不是MySQL)中。
将有一个简单的ACL(定义谁可以看到什么样的数据),也许还有一些CRUD功能(但这不是优先事项)。
数据集的大小将增加,因此后端的负担可能会更高。并发请求不会很多,但是少数几个必须由后端快速处理。后端服务器的硬件(RAM和CPU)不是问题。
可能的后端解决方案:
Python(SQLAlchemy,Pylons或Django):
优势:
最佳答案
过去我们有同样的困境。
我参与了设计和构建具有GWT前端和Java(Spring,Hibernate)后端的系统的工作。我们的其他一些(相关)系统是用Python和Ruby构建的,因此专业知识就在那里,并且像您一样提出了一个问题。
我们主要决定使用Java,因此可以在整个堆栈中使用一种语言。由于相同的人同时在客户端和服务器端工作,因此使用单一语言工作可以减少从客户端代码到服务器代码(例如,调试时)进行上下文切换的需要。事后看来,我认为我们被证明是正确的,这是一个很好的决定。
我们使用了RPC,正如您自己提到的那样,它无疑简化了c / s通信的实现。我不能说我很喜欢。 REST + JSON感觉更正确,至少至少可以在服务器和客户端之间建立更好的解耦。我猜您将不得不基于是否期望将来将来需要重新实现客户端或服务器来做出决定。如果不太可能,我会采用KISS原则,因此采用RPC,这会使它在这种特定情况下保持简单。
关于您提到的Java的缺点,我倾向于在原理(我更喜欢RoR自己)上达成共识,但在细节上不同意。 IMO并不是多层结构和配置体系结构真正的问题-如今,Spring和Hibernate已经足够简单了。 IMO在该项目中跨客户端和服务器使用Java的优势胜过使用python的相对简便性,此外,您还将在接口中引入复杂性(即通过REST与本机RPC进行比较)。
我无法评论Numpy / Scipy和任何Java替代方案。我在那里没有经验。
关于java - 对GWT的不同后端的反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5417372/
我想知道 GWT、GWT-RPC、EXT-GWT 和 Smart GWT 之间的区别。目前,我设法借了有关 GWT 的书籍,据我所知,它只是一个旨在促进快速高效的 Ajax(异步 JavaScript
不,这不是问如何让 Guava 在 GWT 中工作,因为我已经让它工作了。 我的问题是,当我执行继承时 我希望在命名空间 com.google.common.collect 中找到一个文件 Coll
Ext GWT 和 GWT-Ext 之间有区别吗?因为我在浏览 Ext GWT 时看到了这个页面 http://gwt-ext.com/demo/ .有什么帮助吗? 最佳答案 ExtGWT 由开发 E
调查gwt-dispatch之后和 Google Wave I/O presentation (Best practices) ( video here ),我想知道为什么官方 GWT 版本 (2.0
我在我的应用程序中使用带有 ext 的 GWT 2.0.3。该项目不再处于积极开发状态并且已被 Smart GWT 取代。我正在为此应用程序使用 HMVC 模式。现在使用现有的 GWT 2.0.3 和
当我尝试在 Windows Vista 上为 ie 8 使用 GWT 开发模式插件时,我不断看到安装插件的提示。 运行插件后我仍然总是看到这个页面。有谁知道如何解决这样的问题? 最佳答案 看这个:Ca
我正在尝试对 GWT RPC 序列化策略进行一些背景阅读,发现 GWT 在编译后将 *.gwt.rpc 文件中的可序列化类型列入白名单。 以下是我的应用程序中生成的一个此类 .gwt.rpc 文件的摘
如果 Enum 实现了 java.io.Serializable,我无法将它序列化为 GWT。它会成功编译 GWT,但在运行时,我会感到害怕: Type 'com....security..Admin
是否有可以与 GWT 一起使用的进度条小部件,还是必须自己制作?我尝试在 google-web-toolkit-incubator、gwtupload 和 upload4gwt 中使用进度条,但没有任
由于 Javadoc 没有说明使用 com.google.gwt.core.shared.GWT 的原因,它似乎包含 com.google.gwt.core.client.GWT 的功能子集,前者存在
我必须在 gwt 中创建一个图像按钮,它使用三个图像(左侧图像、中心拉伸(stretch)图像和右侧图像)。左侧图像和右侧图像具有圆角。中心图像想要拉伸(stretch)取决于按钮标题大小.创建的 I
我正在尝试在 GWT 的垂直面板中设置 align 属性,如下所示: vpanel = new VerticalPanel(); vPanel.setHorizontalAlignment(HasHo
我想在 GWT 中添加可编辑的组合框,请告诉我解决方案? 最佳答案 试试 Advanced GWT Components , 具体来说 org.gwt.advanced.client.ui.widge
我在使用 GWT Designer 配置 GXT 时遇到问题。我拥有 Eclipse、GWT 插件和 GXT 的所有新版本,但无法将 GXT 配置为与 GWT Designer 一起使用。我设置了我的
我们有一个当前使用 Capistrano 部署的应用程序。该应用程序使用 php 作为后端,使用 GWT 作为前端。 我已经设法通过 Ant 文件编译 GWT,但想用自定义 Capistrano 任务
这应该很简单,但不知何故我找不到在 GWT 中创建简单超链接的方法。基本上,我想在用户点击某些东西时加载另一个页面。 Hyperlink似乎仅指向内部 GWT 应用程序状态。我想我可以把链接放在 HT
在 GWT 界面中哪个更好,使用带有 javacode 的普通 MVP,还是 UiBinder?从性能、编辑、简单性方面。 最佳答案 这就是Google says : Besides being a
GWT 2.5.0 开发模式 我在下面对文件上传做了一个简单的测试, startupUrl: http://127.0.0.1:8888/UploadTest.html?gwt.codesvr=127
我需要创建一个SuggestBox,在按下时将显示所有选项 Enter键。 我已经写了以下实现,看来是 工作正常。 我希望有人审查我的实现情况,并让我知道 在任何特定情况下都会引起问题。 另外,要传递
在哪里可以找到有关 GWT 和 GWT-Ext 延迟加载的更多信息? 最佳答案 快速谷歌搜索显示 nice blog entry由 GWT 团队提供。 关于 GWT-Ext,我无话可说,但无论采用何种
我是一名优秀的程序员,十分优秀!