0

GUI インターフェイス、クライアント、サーバー、およびデータベースで構成されるアプリケーションを作成しています。

しかし、数え切れないほどの時間をかけた後でも、すべてを整理する方法がわかりません。

GUI はいくつかのかなり異なる Swing コンポーネントによって構築されているため、それぞれに個別のモデルを用意することを考えました。

現在、情報の流れは次のようになっています。

  1. ユーザーが GUI に情報を挿入します。
  2. GUI は、コントローラーにイベントを与えることによって、何かが起こったことをコントローラーに伝えます。
  3. コントローラはイベントをサーバーに送信します
  4. サーバーはイベントを評価し、適切なクエリを DB に送信します。
  5. その後、DB からの結果がイベントに添付され、クライアントに送り返されます。
  6. コントローラーはイベントを取得し、適切なモデルを新しい情報で更新します
  7. 次に、モデルは対応するビューを更新します。

ユーザーが GUI を介してエントリを検索し、結果が返されるというシナリオが考えられます。

このアーキテクチャは正気ですか?

すべての異なるビューに独自のモデルが必要ですか? はいの場合、独自のコントローラーも必要ですか? いいえの場合は、何ですか?

モデル全体をサーバーに送信し、サーバーでモデル内の情報を操作してから、クライアントに送信することを考えました。クライアントがそれを受け取ると、コントローラーは新しいモデル情報がビューに添付されていることを確認します。このソリューションにより、個別のイベント クラスが不要になりますが、これを行うのは適切ではないようです。

私が求めているのは、MVCパターンに従ってサーバー/クライアント/データベースアプリケーションを編成する最良の方法は何ですか?

4

1 に答える 1

1

最良の方法は、クライアント、サーバー、およびDBを分離することです。

つまり、最初のステップは、クライアントで何を実行する必要があるか、サーバーで何を実行するか、DBで何を実行するかを知ることです。

データベース:

データベースは実際にはデータベースに他ならないので、データベースでできることは何もありません。

サーバ:

サーバーでは、データベースへのアクセス、ファイルへのアクセスなど、サーバーで発生する可能性のあるすべてのことを実行する必要があります。

クライアント:

残りはクライアントが行います。ここでは、「データの表示」を区別する必要があります。それが「表示」とデータの管理になります。それがコントローラーになります。GUIに機能を提供するには、「コントローラー」を使用して、最後にMVCモデルがクライアント内に残るようにします。

したがって、あなたの考えはあなたが思っているほど悪くはないと思います。私はそのように機能するプロジェクトに取り組んでいます。私たちは私が説明した方法で作業しており、すべてが非常に見栄えがすることを保証できます。すべてが分離されています。サーバーとクライアントは、他のサーバーとクライアントを変更することなく交換できます。データベースを変更すると、サーバーだけがそれに気づきます。GUIライブラリ(swt、awt、swing ...)を変更すると、クライアントだけが気づきます。サーバーとクライアントの両方が異なる環境で実行でき、誰もそれに気づきません。

だから私があなたならあなたが言ったように私はそれをするでしょう。試してみると、完全に機能することがわかります。私が言ったように、私は多かれ少なかれ同じワークフローに従っていて、良いことしか言えません。

于 2013-03-05T21:25:10.437 に答える