Java GWT不同后端的反馈
我必须重新设计一个现有的应用程序,它在后端使用Python(Python),在前端使用GWT。Java GWT不同后端的反馈,java,python,gwt,architecture,web-frameworks,Java,Python,Gwt,Architecture,Web Frameworks,我必须重新设计一个现有的应用程序,它在后端使用Python(Python),在前端使用GWT。 在重新设计的过程中,我还可以更改后端系统。 我试图了解各种后端系统(Java、Python等)的优缺点,但我非常感谢社区的一些反馈 现有应用程序: 现有应用程序是使用GWT 1.5开发的(现在在2.1上运行),是一种多主机页面设置。 Pylons MVC框架定义了一组控制器/主机页面,其中嵌入了GWT小部件(“经典网站”) 数据存储在MySQL数据库中,由后端使用SQLAlchemy/Elixir访问
在重新设计的过程中,我还可以更改后端系统。
我试图了解各种后端系统(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): 优势:
- 快速成型李>
- 重复使用现有应用程序的部分内容
- Numpy/Scipy用于处理大型数据集
- 弱类型语言->调试可能会很痛苦
- 服务器/客户端通信(JSON解析或使用第三方库)李>
- Python GIL->使用并发请求进行扩展
- 服务器语言(python)客户端语言(java)
Java(Hibernate/JPA、Spring等) 优势:
- 客户端和服务器都使用一种语言(Java)
- “更容易”调试李>
- 要实现的服务器/客户端通信(RequestFactory、RPC)简化程序
- 性能、多线程等
- 可以传输对象图(RequestFactory)
- CRUD“易于”实现
- 多线程体系结构(特性)
- 多线程体系结构(复杂性,需要大量配置)
- 数组/矩阵的处理(不确定java中是否有numpy/scipy的挂件)
- 并非使用了Java web应用程序层/框架的所有功能(overkill?)李>
对于python,我可以重用用于加载和过滤科学数据的代码。
对于Java,我必须重新实现这一部分 两种后端系统各有优缺点。 如果有任何进一步的反馈,我将不胜感激。
也许有人对后端和/或该用例都有经验
提前感谢我们过去也遇到过同样的困境。 我参与了设计和构建一个系统,该系统具有GWT前端和Java(Spring,Hibernate)后端。我们的一些其他(相关)系统是用Python和Ruby构建的,所以专业知识就在那里,出现了一个和你一样的问题 我们决定使用Java主要是为了在整个堆栈中使用一种语言。由于相同的人员同时在客户端和服务器端工作,因此在从客户端代码移动到服务器代码时(例如调试时),使用单一语言可以减少上下文切换的需要。事后看来,我觉得我们被证明是正确的,这是一个好的决定 我们使用了RPC,正如您所提到的,它确实简化了c/s通信的实现。但我不能说我很喜欢它。REST+JSON感觉更合适,至少在服务器和客户端之间实现了更好的解耦。我猜你