プレゼンテーションレイヤーからのWeb参照に依存するビジネスロジックの分離
-
27-10-2019 - |
質問
私は、個々のプロジェクトとしてプレゼンテーションレイヤーとビジネスレイヤーを備えたWebアプリを持っています。 1つはWebアプリケーションであり、もう1つはクラスライブラリです。 WebアプリケーションへのWebリファレンスを追加して、Webサービスを使用しました。私はサービスAPIを使用するのに問題はありませんが、プレゼンテーションレイヤーに多くのビジネスレイヤータイプロジックを追加してこのAPIを利用することに気付いています。 Webサービスで動作するようにビジネスレイヤーコードの一部を変更できれば、私はそれが大好きですが、そのような音の構成は大きな円形のように聞こえます。とにかく、私は自分のオブジェクトに彼らがやっていることをやり続けることができますが、それはウェブサービスでも動作しますが、プレゼンテーションレイヤーにヘルパー/マネージャーのクラスを作成してWebで動作する必要があります。 -サービス。これにより、サービスに追加したいオブジェクトのアクションを実行しているすべての場所でコード変更が必要になります。この問題を攻撃する正しい方法は何ですか?
とりとめのないところに正当な質問があるかどうかさえわかりませんが、誰かが役立つ言葉を提供できれば、私は非常に感謝しています。
ありがとう!!
解決
私がこれにアプローチした方法は、この効果に何かを作成することです。
- データアクセスレイヤー
- ビジネスロジックレイヤー
サービスレイヤー(ビジネスロジックの欠如、単なるインターフェイス)
サービスアクセスレイヤー(ビジネスロジックやプレゼンテーションロジックがない)
- プレゼンテーションレイヤー(MVC、プレゼンテーションロジックなど...)
ビジネスロジックがないサービスレイヤーは、ビジネスロジックに影響を与えることなく変更できます。クライアント側のサービスアクセスレイヤーは、サービスインターフェイスの変更からもシェルターを備えています。
他のヒント
サービスレイヤーがサービスのような方法のみを公開している場合(おそらくSaveInvoice(InvoicedTo)などの単純なCRUDメソッドなど)、ほとんどの場合、大丈夫です。ただし、あなたの側からいくつかのコードを使用できます。
サービスレイヤー、ステートフル、状態ではないなどを構築する方法は本当にたくさんありますので、プレゼンテーションでどのような繰り返しを得るかを説明してみてください
おそらく、サービスもビジネスロジックをカプセル化する必要がありますか?そうすれば、プレゼンテーションレイヤーはサービスにのみアクセスします - サービスはビジネスロジックレイヤーにアクセスします。