DAL/BLLおよびクライアント/サーバー:クライアントはプレゼンテーションにBLLまたはDALオブジェクトを使用する必要がありますか?または多分別のレイヤー(データ転送オブジェクト?)

StackOverflow https://stackoverflow.com/questions/3678824

質問

クライアント/サーバーシステムを書いています。サーバーにはDAL/BLL設計があります。クライアントは、データオブジェクトを提示し、ダイアログとウィザードを提供して、ユーザーがこれらのオブジェクトを更新できるようにする責任があります(つまり、ユーザーの追加/編集)。

最初は、DALオブジェクトにユニバーサルデータプロバイダーオブジェクトを作成するだけで、クライアントとサーバーが使用できると思いました。たとえば、データオブジェクトがサーバーによって使用されている場合、データベースはデータプロバイダーです。データオブジェクトがクライアントによって使用されている場合、サーバーはデータプロバイダーです。

したがって、オブジェクトはプレゼンテーションレイヤー、たとえば「ユーザー」:user-> setName( "fred")で変更され、このユーザー - > commit()のようにコミットします。次に、オブジェクトをエンコードしてサーバーに送信します。サーバーは、ビジネスレイヤーオブジェクトで「装飾」し、そこから引き継がれます。

現在、これはプロトタイプとして機能しており、クライアントとサーバーの両方が使用する共有プロジェクトでDALオブジェクトが定義されています。次に、サーバーはそのデータプロバイダー(データベースを使用する)を注入し、クライアントはサーバーを使用するデータプロバイダーを注入します。

これが合理的なアプローチのように思えるのだろうか? DALオブジェクトをクライアントに直接露出させるのではなく、別のレイヤーが必要かどうか疑問に思います。データアクセスオブジェクト、ビジネスロジックオブジェクト、データ転送オブジェクトの3つのレイヤーが得られるデータTranferオブジェクトレイヤーかもしれません。

ありがとう。

役に立ちましたか?

解決

使用される/返されたオブジェクトのような「内側のオブジェクト」を公開するのは良い考えではありません。すべての内側のオブジェクトをクライアントから隠したままにし、クライアントサーバー通信用のオブジェクトの完全なセットを持っています。あるオブジェクトを別のオブジェクトに変換する追加作業かもしれませんが、サーバーとクライアントが一緒にアップグレードしない場合にシステムのアップグレードがはるかに簡単になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top