EntityDeveloperを使用して生成したドメインがあります。これにより、すべてのエンティティとデータベーステーブルが作成されます。NHibernateを使用して、リポジトリを介して公開されているエンティティにデータを入力します。次に、リポジトリを有用なサービスに集約するサービス層があります。このレイヤーは2つの方法で使用されます。1つは、Webレイヤーとの間の唯一の通信手段としてサービスを使用しており、いつかWCFのサービスを使用したいと考えています。現在、私は自分のWebレイヤーに取り組んでおり、自分のサービスと通信するための最良の方法を見つけようとしています。私のサービスは現在エンティティを返しています。私のWebレイヤーは、コントローラーのサービスを介してこれらのエンティティを取得しています。これはおそらくDRY/DDDではありません。サービスレイヤーはDTOを介してインターフェイスする必要があると想定しています。DTOは私のWCFサービスに最適です。私のWebレイヤーに関しては、私は
つまり、これが私のアーキテクチャのようになります。
Domain
Entities
Repository Interfaces
Infrastructure
NHibernate
Concrete Repositories
Services
DTO's
Concrete Services
Service Interfaces
IIS hosted WCF
Website
ViewModels
そして、AutomapperまたはValueInjecterを使用してマッピングを行います(エンティティ/ DTOをフラット化およびフラット化解除する機能があるため、おそらくValueInjectorです。
それで、これはやり過ぎですか?このアーキテクチャを使用しているシステムは非常に大規模です(すべてを書き直しています)。私はそれを正しくやっていますか?いつでもシステムの任意の部分を変更したいと思うことがあるので、すべてが依存関係に関してNinjectと切り離されています。考え、アイデア、批判は大歓迎です。