ASPコントロールイベントをBLLに入れようとする必要がありますか?
-
28-09-2019 - |
質問
私は最近、データアクセスレイヤー、ビジネスロジックレイヤー、プレゼンテーションレイヤーについて学んでいますが、まだ明確ではないことがいくつかあります。
プレゼンテーションレイヤーでDALとBLLを使用して、データベースで情報を取得または設定できます。
しかし、私はまた、ASPコントロールイベントとそれらをどのように実装すべきかについて考えました。
たとえば、ボタンクリックイベントをBLLに入れてみる必要がありますか、それともファイルの後ろのASPXコードに残しておく必要がありますか?
そして、もし私がそれらをBLLに入れなければならないなら、私はこれをどうやってやろうとしますか?
BLLにある方法をイベントコールにする方法がわかりませんので、どんなアドバイスも大歓迎です。
解決
イベントがビジネスモデルに関係している場合は、BLLにメソッドを作成する必要があります。 UIタイプのイベントの場合は、背後のコードで処理します。したがって、たとえば、ユーザーがボタンをクリックして配送を計算した場合、ボタンのクリックイベントハンドラー(背後のコード)で、BLLオブジェクトのcalculateShipping()メソッドを呼び出します。ただし、ページの背景色を変更するボタンがある場合(より良い例は考えられませんでした)、背後のコードでそれを完全に処理します。
他のヒント
このアーキテクチャを考えると、
プレゼンテーション - >ビジネス - >データ
任意のレイヤーは、レイヤーについてのみを知り、その直接的な右に想定する必要があります。これは、プレゼンテーションレイヤーがビジネスレイヤーと通信し、APIを使用できることを意味しますが、データレイヤーに直接通信しないでください。ビジネスレイヤーはデータレイヤーのAPIを使用できますが、それを消費するプレゼンテーションレイヤーについて知っているか、仮定を立てるべきではありません。そして明らかに、データレイヤーは他のレイヤーのいずれについても何も知らないはずです。
この一般的な校長をフォローすると、アプリケーションがよりシンプルでメンテナンスが容易になることがわかります。
ただし、質問に答えるために、ボタンクリックイベントがプレゼンテーションレイヤーに属します。ボタンクリックイベントをビジネスロジックに入力すると、2つのレイヤー間のラインが曖昧になり、不要な結合が作成されます。
ファイル(プレゼンテーションレイヤー)の背後にあるASPXコードは、BLLを直接参照する(カップリングの結果)か、よりサービス指向のアプローチを使用することもできます。これには、プレゼンテーションレイヤーによって参照され、ビジネスレイヤーによって実装されるインターフェイスを作成することが含まれます。アプリケーションの初期化(つまり、Global.AsaxファイルのIE)で、依存関係インジェクションまたはその他のアプローチを介してBLLをプレゼンテーションレイヤーに接続できます。