正在构建RESTful应用程序。。。从…里面Java Web应用程序

正在构建RESTful应用程序。。。从…里面Java Web应用程序,java,spring,hibernate,architecture,restful-architecture,Java,Spring,Hibernate,Architecture,Restful Architecture,我们当前的Web应用程序体系结构包括以下内容: Java 6、JBOss 5、MySQL 5.6 表示层(ZK框架) 代理+服务+DAO层(Spring和Hibernate) 打包:包含上述所有层的单个War文件 业务要求: 使用HTML5和本机iOS库为上述web应用程序的几个模块创建移动应用程序。移动应用程序将能够执行CRUD、下载/上传文件和发送电子邮件 问题: 我们正在确定上述业务需求的体系结构。请记住以下属性 数据逻辑共享(使用Hibernate在DAO层实现) 业务逻辑共享(使用S

我们当前的Web应用程序体系结构包括以下内容:

Java 6、JBOss 5、MySQL 5.6

表示层(ZK框架)

代理+服务+DAO层(Spring和Hibernate)

打包:包含上述所有层的单个War文件

业务要求:

使用HTML5和本机iOS库为上述web应用程序的几个模块创建移动应用程序。移动应用程序将能够执行CRUD、下载/上传文件和发送电子邮件

问题:

我们正在确定上述业务需求的体系结构。请记住以下属性

  • 数据逻辑共享(使用Hibernate在DAO层实现)

  • 业务逻辑共享(使用Spring在服务层实现)

  • QoS—性能、可扩展性

我们的一些想法:

  • 在web应用程序中创建一个单独的委托层,并将其作为RESTAPI公开。底层、服务对象和DAO层可以按原样使用

    • 将需要扩展应用程序,以处理web应用程序和移动应用程序的负载
  • 为通用功能创建一个通用项目(Jar),并与两个不同的项目共享,一个用于web应用,另一个用于移动应用

    • Hibernate是否可以与两个应用程序共享同一个数据库,而不存在任何并发问题
  • 如果您能就上述问题提供任何建议/意见,我将不胜感激


    谢谢

    在我看来,您应该考虑使用MQ系统(例如RabbitMQ),并将应用程序分为3层:

  • 前端-接受客户端请求(一个用于浏览器,第二个用于移动应用等)并将其传输到MQ
  • 中间(传输)-MQ系统。传送信息
  • 后端-接受来自MQ的入站消息,处理请求并返回答案
  • 这是您在第二个选项中描述的。但我认为最好使用中间层(MQ)来避免耦合

    我认为Hibernate需要配置分布式二级缓存(例如EhCache),以使后端可扩展。

    使用此体系结构,您可以通过添加后端服务器并在MQ中的队列上订阅它来简单地扩展应用程序的吞吐量。

    非常感谢您的响应,从根本上说,我理解,为了将业务/服务层服务于不同的前端,需要在表示层和服务层之间进行解耦。然而,我读了一些关于MQ及其使用的文章,发现了这篇好文章,它解释了MQ与REST的区别。基于这些信息,我倾向于认为在我们的场景中,将中间层实现为RESTAPI是合适的@BAhmed786选择权在你。感谢有用的链接。