“エンティティ”を処理するクラスを作成しますかデータ駆動型アプリの場合

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

質問

私は初心者であり、データベースアプリケーションの作成をいじるときは、常にフォームを作成し、そこにすべてのコードとバインディングを配置するだけです。情報を保持する配列とリストを使用する代わりに、データベースに直接変更を加えました。

これで少し進化したので、ウィジェットを顧客に販売し、販売情報をデータベースに保存したとしましょう。データベースにアクセスするためのプログラムを作成している場合、これらのエンティティを操作するために「Customer」および「Widget」タイプのクラスを作成したくないでしょうか?

間違えた場合、データベースアプリケーションをプログラミングするための適切なアプローチは何ですか?

役に立ちましたか?

解決

はい。

n層プログラミングを調べます。

基本的に、クラスライブラリ(ビジネスレイヤー)へのフロントエンド(プレゼンテーションレイヤー)アクセスのみを許可します。その後、クラスライブラリはデータベースにアクセスします。

これにより、密結合の少ないソリューションが提供され、コードの保守性が向上します。また、階層を導入することにより、ビジネスレイヤーとのインターフェイスを変更する必要がない限り、フロントエンドでコードを書き換える必要なく、DBを変更できます。

バインディングに関する限り、Visual Studio Windows Forms(2005以降)を使用している場合は、 bindingSource を使用してコントロールをバインドできます。 ASP.NETを使用している場合、コントロールは問題なくオブジェクトのリストにバインドする必要があります。

ASP.Netの場合、 ObjectDataSource を調べる価値があります。 。私自身は使っていませんが、ウェブ上にはたくさんのサンプルがあります。 こちらまたはこちら

他のヒント

はい。

オブジェクトリレーショナルマッピングをよく見てください。

実際のビジネスエンティティは、リレーショナルテーブルにマッピングされるオブジェクトによってモデル化されます。

プレゼンテーション層をデータベース構造に直接依存させたくない場合。問題は、データベース構造がまったく変更された場合、プレゼンテーション層を変更する必要があり、長期的には問題を引き起こす傾向があることです。さらに、プレゼンテーション層がデータベースと直接対話することに関連するセキュリティ上の問題があります。

ここでの大まかな例えは、市場です。店に行ってパンを買うとき、小麦の栽培方法を知る必要はありません。あなたが知る必要があるのはあなたがお金を持っていること、そして彼らがパンを持っていること、そして彼らが一定量のパンを一定量のお金と交換することだけです。裏打ち層があなたのためにそれを世話するので、あなたは小麦を植える時期、またはもみ殻を取り除く方法、またはそのいずれかを知る必要はありません。同様に、農家はパンをたくさんの人に売る方法や、パンの作り方を知る必要もありません。彼がしなければならないことは、小麦の栽培方法を知ることだけです。

最新の設計哲学では、中間層を使用してプレゼンテーション層とデータベース層の間で対話することを推奨しています。ここにビジネスロジックを配置します。たとえば、サイトでウィジェットを販売しているとしましょう。プレゼンテーションコードでウィジェットをデータベースに照会して表示する代わりに、ウィジェットを処理するビジネスオブジェクトがあります。この方法では、ビジネスオブジェクトはデータベース構造を知る必要がありますが、プレゼンテーションレイヤーは、表示するウィジェットのリストをビジネスオブジェクトに問い合わせる方法を知るだけで済みます。さらに重要なことは、ビジネスオブジェクトに、特定のことが発生したときに呼び出されるルールを配置できることです。そのため、プレゼンテーションレイヤーが注文時に在庫と注文のデータベースに直接変更を加える代わりに、ビジネスオブジェクトは、プレゼンテーションレイヤーが販売の発生を要求するときに変更の方法と変更するテーブルを認識します。

この方法では、情報の表示を永続性およびWebサイトの基礎となるロジックから分離します。関係するのは適切な計画です。具体的には、特定の時点でWebサイトが何をしているのか、そしてビジネスオブジェクトが提供するインターフェイスの観点からそれが何を意味するのかを把握する必要があります。次に、これらの要件に基づいてビジネスオブジェクトを実装します。これらのビジネスオブジェクトは、データベース構造と特定のビジネスロジックの知識を配置する場所です(「Aが発生したらBを実行してからCを実行する」など)。

これは、最初は多くの余分な作業のように思えますが、本当に価値があります。

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