1

技術スタック: Java 1.6、JPA (Hibernate 3)、Spring 3、Oracle 11g、JAX-RS (RESTEasy)、Freemarker、Spring Webflow、jQuery、JBoss5

こんにちは、

現在、私は2つの機能セットを持つプロジェクトに取り組んでいます:

  1. 外部クライアントが使用する一連のWeb サービス (RESTful)を公開します。
  2. MI レポートの作成、新しいデータの設定、構成、過去のデータの表示など、基本的に管理機能を実行できる一連の画面 (約 10 個)を作成します。

私のアプローチは次のとおりです。

  1. サービス層を作成するには
  2. このサービス層でメソッドを呼び出す Webflow および Freemarker テンプレート。

  3. また、同じサービス層を使用して、REST (@Path) 用のコンポーネントの別の層を作成します。

設計会議で、誰かが次のことを提案しました。

  1. レイヤーを分離してモジュールを分離します(mavenのように)
  2. 次のモジュールをそれぞれ作成します。

    a2. RESTful サービス (サービス層と javax.ws.rs.Produces を使用)

    b2. モジュール a2 で発行されたサービスを呼び出すサービス レイヤーを含む画面。これは org.apache.commons.httpclient を使用します。a2 サービスを呼び出すためのHttpClient 。

本当にメリットがあるのか​​、それともこれが正しいアプローチなのかはわかりません。提案されたアプローチを理解していない可能性があると思います。

どちらのアプローチが優れているか、またその理由について詳しく説明してください。

ありがとう、アディ

4

1 に答える 1

1

IMHO、これは HttpClient とすべてを使用してサービス層にアクセスする必要はありません。

このメカニズムは、(同じ戦争で)非常に近い2つのレイヤー間で通信するために、巨大無用なCPUオーバーヘッド(httpトランスポートのシリアル化/偽装/メッセージの逆シリアル化)を生成します。

管理画面と REST サービスが常に一緒に展開されると確信している場合は、直接的なコミュニケーションを使用し、実用的であり続けてください。

1 つの Maven プロジェクトを保持する必要があります。10 画面と 5 つの REST サービスの複雑なプロジェクトを作成する必要はありません。複雑にしないでおく。

ビジネス+ボーを処理するサービス層を作成します。2 つの個別の実装でトランスポート層を作成します。

  • 1 つは、サービス層から Java クラスを直接呼び出す REST サービス用です。
  • 1 つは管理用で、サービス層から直接 Java クラスを呼び出します

本当に Maven モジュールを作成したい場合は、 - ビジネス サービス クラスを 1 つの jar にバンドルする 1 つのモジュールを作成します - トランスポートの実装を 2 つの個別の jar にバンドルする 2 つのモジュールを作成します - ビジネス services.jar をバンドルする 1 つのモジュールを作成し、2 つのトランスポート戦争中の implementation.jar とその依存関係

ハイ

于 2012-08-14T08:27:12.243 に答える