Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT不同后端的反馈_Java_Python_Gwt_Architecture_Web Frameworks - Fatal编程技术网

Java 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访问

我必须重新设计一个现有的应用程序,它在后端使用Python(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):

优势:

  • 快速成型
  • 重复使用现有应用程序的部分内容
  • Numpy/Scipy用于处理大型数据集
缺点:

  • 弱类型语言->调试可能会很痛苦
  • 服务器/客户端通信(JSON解析或使用第三方库)
  • Python GIL->使用并发请求进行扩展
  • 服务器语言(python)客户端语言(java)

Java(Hibernate/JPA、Spring等)

优势:

  • 客户端和服务器都使用一种语言(Java)
  • “更容易”调试
  • 要实现的服务器/客户端通信(RequestFactory、RPC)简化程序
  • 性能、多线程等
  • 可以传输对象图(RequestFactory)
  • CRUD“易于”实现
  • 多线程体系结构(特性)
缺点:

  • 多线程体系结构(复杂性,需要大量配置)
  • 数组/矩阵的处理(不确定java中是否有numpy/scipy的挂件)
  • 并非使用了Java web应用程序层/框架的所有功能(overkill?)
我没有提到任何其他后端系统(RoR等),因为我认为这两个系统对于我的用例来说是最可行的。 老实说,我对Java并不陌生,但对Java web应用程序框架相对较新。虽然在新的设置中没有太多的挂架特性(MVC、模板)将被使用,但我知道我在挂架方面的方法,因为它可能只用作AJAX后端

如果使用Java后端,我必须决定是使用RESTful服务(并明确地将客户机与服务器分开)还是使用RequestFactory(更紧密的耦合)。对“宁静”没有具体要求。在Python后端的情况下,我可能会使用RESTful后端(因为无论如何我都必须处理客户机/服务器通信)

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

两种后端系统各有优缺点。 如果有任何进一步的反馈,我将不胜感激。
也许有人对后端和/或该用例都有经验


提前感谢

我们过去也遇到过同样的困境。 我参与了设计和构建一个系统,该系统具有GWT前端和Java(Spring,Hibernate)后端。我们的一些其他(相关)系统是用Python和Ruby构建的,所以专业知识就在那里,出现了一个和你一样的问题

我们决定使用Java主要是为了在整个堆栈中使用一种语言。由于相同的人员同时在客户端和服务器端工作,因此在从客户端代码移动到服务器代码时(例如调试时),使用单一语言可以减少上下文切换的需要。事后看来,我觉得我们被证明是正确的,这是一个好的决定

我们使用了RPC,正如您所提到的,它确实简化了c/s通信的实现。但我不能说我很喜欢它。REST+JSON感觉更合适,至少在服务器和客户端之间实现了更好的解耦。我猜你