プロジェクト(または建築家)が求められていない限り、そのアプリのアクセスサービス・レイヤーのすべてのメソッド私は、WCFを不必要に使用することを避けようとします(それは、Webサーバーとバックエンドの間のすべてのデータが、パフォーマンスやデータのシリアライズなどの影響を持ち、潜在的にデータベース接続とトランザクション、これは遅延ロードなどを奪う可能性があります)。 同意するならば、ビジネスレイヤのすべてのアクセス可能なインターフェイスがインターフェイス上に公開されていることを確認し、コントローラに直接BLLインターフェイスを消費または注入することをお勧めします。
MVC - ASP NET MVCで単語"Model"に注意する必要があります。MVCは、より論理的なドメインモデルを表す「エンティティ」ではなく、プレゼンテーション層に固有でビューとコントローラの間で渡されるViewModelsを推奨します。ビジネスロジックで使用され、EFやNHibernateなどのORMを使用してデータの永続性に結びつけることができます。 MVCプロジェクトテンプレートは、ViewまたはControllerでないすべてのものを "Model"にまとめる。isn't necessary very helpful。しかし
、あなたはまだいくつかの設計上の決定を行う必要がありWCFサービス層を介して、あなたのBLLにアクセスすることを選択しない場合:
- はあなたを使用すると、クライアント側のバックエンド・エンティティを共有するかどうかを選択し、または実行代りに代理実体を使用してください。
- WCFサービスプロキシをコントローラで直接使用するか、または注入するかを選択するか、別のファサードレイヤを作成しますか(たとえば、CABはこれらのServiceAgentを呼び出します)。後者は、インタフェースの変更に対応するために、SOA側とクライアント側を別々のチームやベンダーが構築する場合に意味があります。