建议选择java的网络框架

时间:2013-03-19 19:23:08

标签: java network-programming

简短版本:需要有关为客户/服务器应用程序选择Java网络框架的建议(优点/缺点),用户/请求数量较少且数据量较大。

可能的选择:

  1. RMI
  2. Apache River
  3. Netty(这看起来更像异步,可以进行同步调用吗?)
  4. 其他一些让我的生活更轻松的框架? :)
  5. 长版本:我正在处理的当前项目是一个用java编写的桌面应用程序,允许用户优化供应链的一部分。请注意,到目前为止,该应用程序仅适用于桌面。它有一个安装在本地机器上的数据库,就是这样。现在我们有了更新代码以支持共享/网络数据库的新要求。在网络服务器上安装数据库并启动应用程序的多个实例(如预期的那样)会出现很多问题。最大的问题来自于数据库交互不是以并发为目的而开发的。我们有很多锁等待和几个死锁发生。决定修改数据访问层以考虑新要求。

    似乎不可能编写DAL来允许并发访问而不将客户端和服务器中的应用程序分开来处理数据访问和可能的某些业务逻辑。我们不需要非常高性能的解决方案,没有那么多消息,但问题在于数据量。

    典型的使用场景如下所示:

    1. 启动应用程序
    2. 从CSV文件导入数据(通常介于600MB-1GB之间)并存储以备将来使用
    3. 添加方案配置(非常少量的数据)并存储它们
    4. 启动优化(从步骤1获取数据,应用配置,应用一些优化/限制)
    5. 显示优化结果。
    6. 步骤4将在服务器上完成,步骤1-3和5将在客户端上执行。

      你们有建议吗? 感谢。

1 个答案:

答案 0 :(得分:0)

所以真正的问题是如何上传大量数据。 对于这样的解决方案,我不会去RMI - 它太受限制了。 Apache River似乎是某种发明。 Netty是一个低级别的网络框架。你被迫编写自己的协议。

我只是使用简单的HTTP服务器并使用HTTP POST请求上传数据。您可以使用Gzip压缩。对于大文件,HTTP非常好。

在服务器端,任何servlet容器都可能这样做(Tomcat,Jetty等)。

在客户端Apache HTTP Components应该足够了。您也可以尝试Ning Async HTTP Client