web-dev-qa-db-ja.com

ビジネスロジック-サーバー側とクライアント側

現在のプロジェクトでは、いくつかのWebサービスからデータをプルし、バックエンドAPIを介してデータベースからデータをプルし、すべてのリソースに同じデータがあるかどうかをチェックする画面があります。

他のウェブサービスはデータベース内のデータの部分的なミラーであり、画面にはデータの状態を示すテーブルが表示されます(サーバー全体ですべてが同じ場合)

以前は、画面は完全にクライアント側のjavascript(残りのすべての呼び出し、すべての比較ロジック)で表示され、後でその大部分をJavaバックエンドに移動し、現在の状態でjsonを公開しています)そしてクライアント側はそれをテーブルビューに変換します

しかし、私はこれに非常に満足していません。

JSプロ:

  • 小さいコード。
  • 実装が簡単

JSの短所:

  • より脆弱で、Webサービスの単純な変更に対して脆弱
  • ビジネスロジックとプレゼンテーションが絡み合う
  • Uglierコード
  • クライアントコードはデータ構造について多くを知っています

Javaバックエンドプロ:

  • より読みやすい
  • より分離された

Javaの短所:

  • はるかに複雑な多数のクラス(dtosなど)
  • Javaはjsonとうまくいきません
  • 実装が難しい
  • 抽象化のために一部の機能を実装するのが難しい

正しいアプローチは何ですか?クライアントまたはサーバー?

1
Amit Mizrahi

私は好きです David Packer's answer あなたの他の質問について。しかし、もう少し蒸留するには:

  • ラウンドトリップを減らすためのフロントエンドのビジネスロジック。

  • しかし、すべてのビジネスロジックはバックエンドにあります(つまり、ビジネスロジックが複製されます)

また、言語に実装するのがどれほど難しいかを忘れてください。言語に依存しないアーキテクチャの決定を下している(実装の難しさが実際に懸念される場合は、別の言語を使用することもできます)。

1
Miyamoto Akira