次のようなさまざまなコンポーネント/レイヤーを備えた ASP.NET MVC 3 Web アプリケーションがあります。
- ウェブ
- サービス (キャッシュ、外部 API、クラウド サービスなど)
- コア (ドメイン ロジック、POCO など)
- リポジトリ (エンティティ フレームワーク)
今、私が自分のウェブサイトで何かをするとき (たとえば、フォームを送信する、別名 POST) - 最悪の場合、すべてのレイヤーに通知する必要があるかもしれません。
これで、このすべてのロジックをコントローラーの HTTP POST アクションに組み込むことができましたが、ロジックが非常に重くなります。
パブリッシャー-サブスクライバー パターン (AOP) の使用に手を出しましたが、まだ非常に優れた .NET 実装を見つけていません。また、これは Web アプリケーションの適切な方法ではないと言う人もいます。
誰でもここでアドバイスをもらえますか、または次のようなコードで立ち往生していますか?
[HttpPost]
public ActionResult Do(Something model)
{
_repository.Save(model); // this should be the only line IMO
_service.DoSomething();
_repository.DoSomethingElse();
_domain.DoSomethingMore();
}
ここでは、マルチスレッドなどについて話しているのではなく、単純にコントローラーの責任を取り除き、これらのアクションを処理するコンポーネントに責任を負わせます。