2017-03-19 1 views
1

私は、Clientsプロジェクト(Clients.csproj)に含まれるC#プロジェクトに取り組んでいます。データベース(Products.DAL.csproj)からクライアント用のデータを取得するDALライブラリがあります。 Inside Products.DAL.SQL.csproj私はメソッドGetProducts()(MS SQLデータベースから製品を読み込む)を持つIProductsServiceインターフェイスを持っています。今では別のプロジェクト(Products.DAL.Mongo.csproj)を作成するために余分なデータソースを追加するという要件があります。この新しいプロジェクトでIProductsServiceインターフェイスを実装する必要がありますが、インターフェイスを取得するためにProducts.DAL.SQL.csprojを参照したくありません。これを行うための推奨される方法は何ですか?事前リポジトリとしての契約ライブラリ

+0

IProductServiceは、アプリケーションのDataServiceです。アプリケーションがデータを要求/送信する方法について説明します。したがって、そのインタフェースはアプリケーションに多く属し、DALには属しません。 IProductServiceの具体的な実装はDAL –

答えて

1

に私は名前空間がProducts.Core.BusinessとProducts.Core.Interfaceになりますので、フォルダ内のすべてのビジネスクラスとインタフェースを保持しているコアプロジェクトをやる

感謝。 コアプロジェクトを参照するだけです。

このようにして、SQLプロジェクトを参照せずにProducts.DAL.SQLとProducts.DAL.Mongoの両方でIProductServiceを実装する必要があります。

[EDIT]:

私はDDDについてfrench postを引用します:

あなたのソリューションは、5層があります:

  1. インフラ:サービスインフラストラクチャ(インターフェース)
  2. リポジトリ:データアクセス層と持続性
  3. ドメイン:エンティティとドメイン層とビジネスロジック
  4. サービス:Webアプリケーションまたはあなたのサービスを消費クライアントアプリケーション:
  5. クライアントは、ユーザーにサービスを提供しています。
+0

に属していますが、DALがCoreプロジェクトを参照すると、Core.Businessへのアクセスはすぐに得られますが、Core.Contractsのみが必要です。 – pantonis

+0

私はここで何をしますか(私はあなたがビジュアルスタジオを使用していると仮定します):コアプロジェクト用のソリューションフォルダを作成し、次にこのフォルダにビジネス、契約、プロジェクトを作成します。 –

+0

別のプロジェクトでそれらを分割することは悪いことではないと思います。特に多くのプロジェクトがある場合は特にそうです。読みやすさとメンテナンス性を提供します。 –

関連する問題