1

技术栈:Java 1.6、JPA (Hibernate 3)、Spring 3、Oracle 11g、JAX-RS (RESTEasy)、Freemarker、Spring Webflow、jQuery、JBoss5

你好,

目前我正在做一个项目,我们有两组功能

  1. 发布一组Web 服务 (RESTful)供外部客户端使用。
  2. 创建一基本上允许执行管理功能的屏幕(大约 10 个),例如创建 MI 报告、设置新数据、配置和查看过去的数据。

我的方法是:

  1. 创建服务层
  2. Webflow 和 Freemarker 模板调用此服务层上的方法。

  3. 并为 REST (@Path) 创建另一层组件,再次使用相同的服务层。

现在在一次设计会议上,有人提出了以下建议:

  1. 将层分离为单独的模块(如在 maven 中)
  2. 为每个创建一个模块:

    a2。RESTful 服务(带有服务层和 javax.ws.rs.Produces)

    b2。带有调用模块 a2 中发布的服务的服务层的屏幕。这将使用 org.apache.commons.httpclient。HttpClient来调用 a2 服务。

我不确定我是否真的能看到好处,或者这是否是正确的方法。我想也许我不明白建议的方法。

有人可以详细说明哪种方法更好,为什么?

谢谢,阿迪

4

1 回答 1

1

恕我直言,这没有必要使用 HttpClient 和一切来访问服务层。

这种机制将产生巨大无用的CPU 开销(序列化/伪造 http 传输/反序列化消息)以在非常接近的 2 层之间进行通信(在同一战争中)。

如果您确定管理屏幕和 REST 服务将始终部署在一起,请使用直接通信,保持务实。

您应该保留一个 Maven 项目。无需为 10 个屏幕和 5 个 REST 服务创建复杂的项目。把事情简单化。

创建一个处理业务 + 业务的服务层。创建具有 2 个独立实现的传输层:

  • 一种用于 REST 服务,直接从服务层调用 java 类
  • 一种用于管理,也可以直接从服务层调用java类

如果您真的想创建 maven 模块, - 创建一个模块,将业务服务类捆绑在一个 jar 中 - 创建两个模块,将传输实现捆绑在 2 个单独的 jar 中 - 创建一个模块,捆绑业务 services.jar,这两个传输implementation.jar 及其在战争中的依赖关系

HIH

于 2012-08-14T08:27:12.243 回答