インターフェイスは実装とは別のプロジェクトに含める必要がありますか?

StackOverflow https://stackoverflow.com/questions/1636970

質問

私の質問は、インターフェースの使用に関するものではなく、プロジェクト組織の性質に関するものです。

注:多層アプリケーションでVisualStudioを使用しています。

インターフェイスファイルは実装とは別のプロジェクトに存在する必要がありますか私の最初の考えは、すべてのサービスインターフェイスを独自のプロジェクト(および最初のプロジェクト実装)必要に応じて、将来的に実装/コンクリートプロジェクトを削除し、新しいプロジェクトに置き換えることができます。

例を明確にするために、MyApp.Business.Services名前空間に存在するIBusinessServiceというビジネスレイヤーインターフェイスがあるとします。私の実装FooBusinessServiceは同じ名前空間に存在しますが、VisualStudioのプロジェクトは異なります。後で実装をやり直す必要がある場合、開発者はFooService.projへの参照を削除し、BarService.projへの参照に置き換えることができます。

これは、具体的な実装を取得せずにインターフェースのみを使用してプロジェクトを参照できるようにすることでアプリソリューションを混乱させるように見えます(廃止または役に立たない可能性があります)が、何か不足していますか?

役に立ちましたか?

解決

私はあなたと一緒です。私は自分のインターフェースを別のプロジェクトに配置し、別の名前空間に配置することを好みます。典型的な例は、データアクセスクラスです。同じインターフェイスを実装するMSSQLバージョンとMySQLバージョンをコーディングできるようにします。そのため、インターフェイス定義は別のアセンブリ/プロジェクトに含めることをお勧めします。アセンブリと名前空間のレイアウト方法の例を次に示します。

  • Elder.DataAccess.Core-インターフェースと共通ユーティリティが含まれています
  • Elder.DataAccess.MSSQL-インターフェースの特定のMSSQL実装
  • Elder.DataAccess.MySQL-インターフェースの特定のMySQL実装

これにより、インターフェイス定義を含むプロジェクトに触れることなく、実装を変更できます。これは、バージョン管理と変更追跡にも役立ちます。この猫の皮を剥ぐ方法は他にもあるかもしれないので、他の人の答えを楽しみにしています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top