私は以前はWinformsプログラマーです。私は常に、作成するプログラムをフロントエンド(Winforms)とミドルティア(Remoting / WCFによって促進される)の2つの部分に分割します。
そのアプローチでは、フロントエンドコードはLinqまたはSystem.Data.SqlClientにアクセスできません。ただし、これには、中間層がインスタントSOAシチズン(サービス指向アーキテクチャー)であり、B2Bシナリオで使用でき、データベースに依存せず、単なるWinformsアプリであってもインターネット対応であるという追加の利点があります。
今、私はウェブスキルを学んでいます。本ProASP.NETMVCのSportsStoreプロジェクトを使用すると、その本の古い(?)アプローチ(中間層)とリポジトリアプローチを比較することは避けられません。リポジトリアプローチは、データアクセスメカニズム(Linq to SQL)をフロントエンド(SportsStore.WubUI)に直接公開します。リポジトリアプローチを使用すると、SportsStore.WebUIは引き続きデータベースに直接接続します。
質問は、Webプログラムで、フロントエンドを中間層にのみインターフェースすることを目指すべきか(つまり、フロントエンドはデータベースに依存せず、中間層はインスタントSOA市民になるべきか)、それとも私がすべきかということです。フロントエンドでデータベースを直接(リポジトリアプローチ、ORMなどを使用して)使用しますか?