2

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

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

したがって、オブジェクトはプレゼンテーション レイヤーで変更されます。たとえば、「user」: user->setName("Fred") で、この user->commit() のようにコミットします。commit メソッドはデータ プロバイダーの commit メソッドを呼び出します。次に、オブジェクトをエンコードしてサーバーに送信します。次に、サーバーはそれをビジネス層オブジェクトで「装飾」し、そこから続行します。

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

これが合理的なアプローチのように思えるかどうか疑問に思っていますか?DAL オブジェクトをクライアントに直接公開するのではなく、別のレイヤーが必要かどうか疑問に思っています。おそらく、データ転送オブジェクト層で、データ アクセス オブジェクト、ビジネス ロジック オブジェクト、およびデータ転送オブジェクトの 3 つの層が得られます。

ありがとう。

4

1 に答える 1

1

DAL で使用/返却されたオブジェクトのような「内部オブジェクト」を公開することはお勧めできません。すべての内部オブジェクトをクライアントから隠し、クライアントとサーバー間の通信用に完全なオブジェクト セットを用意することをお勧めします。あるオブジェクトを別のオブジェクトに変換するのは余分な作業になるかもしれませんが、サーバーとクライアントが一緒にアップグレードされない場合は、システムのアップグレードがはるかに簡単になります。

于 2010-09-09T21:14:46.140 に答える