私はクライアント/サーバーシステムを書いています。サーバーは DAL/BLL 設計です。クライアントは、データ オブジェクトを提示し、ダイアログとウィザードを提供して、ユーザーがこれらのオブジェクトを更新できるようにする (つまり、ユーザーの追加/編集) 必要があります。
最初は、DAL オブジェクトにユニバーサル データ プロバイダー オブジェクトを持たせて、クライアントだけでなくサーバーでも使用できるようにしようと考えていました。たとえば、データ オブジェクトがサーバーによって使用されている場合、データベースがデータ プロバイダーになります。データ オブジェクトがクライアントによって使用されている場合、サーバーがデータ プロバイダーになります。
したがって、オブジェクトはプレゼンテーション レイヤーで変更されます。たとえば、「user」: user->setName("Fred") で、この user->commit() のようにコミットします。commit メソッドはデータ プロバイダーの commit メソッドを呼び出します。次に、オブジェクトをエンコードしてサーバーに送信します。次に、サーバーはそれをビジネス層オブジェクトで「装飾」し、そこから続行します。
私は現在、クライアントとサーバーの両方で使用される共有プロジェクトで定義された DAL オブジェクトを使用して、これをプロトタイプとして機能させています。次に、サーバーはそのデータ プロバイダー (データベースを使用する) を注入し、クライアントはサーバーを使用するデータ プロバイダーを注入します。
これが合理的なアプローチのように思えるかどうか疑問に思っていますか?DAL オブジェクトをクライアントに直接公開するのではなく、別のレイヤーが必要かどうか疑問に思っています。おそらく、データ転送オブジェクト層で、データ アクセス オブジェクト、ビジネス ロジック オブジェクト、およびデータ転送オブジェクトの 3 つの層が得られます。
ありがとう。