加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 对GWT的不同后端的反馈

发布时间:2020-12-15 02:24:39 所属栏目:Java 来源:网络整理
导读:我必须重新设计一个现有的应用程序,它在后端使用Pylons( Python),在前端使用GWT. 在重新设计的过程中,我还可以更改后端系统. 我试着阅读各种后端系统(Java,Python等)的优点和缺点,但我要感谢社区的一些反馈. 现有申请: 现有的应用程序是使用GWT 1.5(现在在2
我必须重新设计一个现有的应用程序,它在后端使用Pylons( Python),在前端使用GWT.
在重新设计的过程中,我还可以更改后端系统.
我试着阅读各种后端系统(Java,Python等)的优点和缺点,但我要感谢社区的一些反馈.

现有申请:

现有的应用程序是使用GWT 1.5(现在在2.1上运行)开发的,并且是一个多主机页面设置.
Pylons MVC框架定义了一组控制器/主机页面,其中嵌入了GWT小部件(“经典网站”).

数据存储在MySQL数据库中,后端使用SQLAlchemy / Elixir进行访问.使用RequestBuilder(JSON)完成服务器/客户端通信.

该应用程序不是典型的业务,如具有复杂CRUD功能(事务,锁定等)或复杂权限系统的应用程序(需要简单的ACL).

该应用程序用于科学数据的可视化(图表,表格).客户端界面主要用于以只读模式显示数据.可能有一些CRUD功能,但它不是应用程序的主要方面.
只有一部分科学数据将被转移到客户端界面,但该子集是由大型数据集生成的.
现有的后端使用numpy / scipy从db / files读取数据,创建矩阵并过滤它们.
访问或使用应用程序的用户数量相对较少,但每个用户/请求的后端负担非常高,因为它必须读取和过滤大型数据集.

新系统的要求:

我想从多主机页面设置转移到MVP架构(一个主机页面).
因此后端只提供一个主机页面,并充当AJAX调用的数据源.
数据仍将存储在关系数据库(PostgreSQL而不是MySQL)中.
将有一个简单的ACL(定义谁可以看到什么样的数据)和一些CRUD功能(但它不是优先级).
数据集的大小将会增加,因此后端的负担可能会更高.并发请求不会很多,但很少有并发快速处理后端请求.后端服务器的硬件(RAM和CPU)不是问题.

可能的后端解决方案:

Python(SQLAlchemy,Pylons或Django):

好处:

>快速原型制作.
>重复使用现有应用程序的部分内容
> Numpy / Scipy用于处理大型数据集.

缺点:

>弱类型语言 – >调试可能很痛苦
>服务器/客户端通信(JSON解析或使用第三方库).
> Python GIL – >并发请求缩放?
>服务器语言(python)<>客户语言(java)

Java(Hibernate / JPA,Spring等)

好处:

>客户端和服务器的一种语言(Java)
>“更容易”调试.
>服务器/客户端通信(RequestFactory,RPC)易于实现.
>性能,多线程等
>可以传输对象图(RequestFactory).
> CRUD“易于”实施
> Multitear架构(功能)

缺点:

> Multitear架构(复杂性,需要大量配置)
>处理数组/矩阵(不确定java中是否存在numpy / scipy的悬挂).
>并非使用Java Web应用程序层/框架的所有功能(过度杀伤?).

我没有提到任何其他后端系统(RoR等),因为我认为这两个系统对我的用例来说是最可行的.
说实话,我不是Java新手,但对Java Web应用程序框架来说相对较新.我知道我在Pylons的方式虽然在新的设置中没有太多的Pylons功能(MVC,模板)将被使用,因为它可能只用作AJAX后端.

如果我使用Java后端,我必须决定是否执行RESTful服务(并明确地将客户端与服务器分开)或使用RequestFactory(更严格的耦合). “RESTfulness”没有具体要求.在Python后端的情况下,我可能会使用RESTful后端(因为我必须处理客户端/服务器通信).

虽然主要显示科学数据(不是任何域对象图的一部分),但是相关的元数据也将显示在客户端上(这将有利于RequestFactory).
在python的情况下,我可以重用用于加载和过滤科学数据的代码.
在Java的情况下,我将不得不重新实现这一部分.

两种后端系统都有其优点和缺点.
我会感谢任何进一步的反馈.
也许有人有后端和/或用例的经验.

提前致谢

解决方法

我们过去也遇到了同样的困境.
我参与了设计和构建具有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替代品.我没有经验.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读