複数の Visual Studio プロジェクト間でコードを最適に共有する方法についての推奨事項を探しています。私は基本的なトピックに苦労しており、それを乗り越えるためのアイデアを得ようとしています.
私のソリューションは次のとおりです。
- いくつかの Web アプリ プロジェクト
- Windows サービスやコンソール アプリ、Azure Web ジョブなど、複数のスタンドアロン プロセス プロジェクト
すべてのプロジェクトに共通する機能の例としては、共通の Web サービスを呼び出す必要がある場合や、Amazon S3 から読み書きする必要がある場合などがあります。
私が苦労しているのはこれです。明らかに、共通の機能を実装するコードは、たとえば別のクラス ライブラリ プロジェクトで、独自に分割する必要があります。たとえば、S3 と対話するには、コードが Amazon 資格情報、S3 エンドポイントなどを認識する必要があります。通常、これらはすべてアプリ構成ファイルに保存されます。しかし、特定の実装をそれらにバインドするため、構成ファイルをクラス ライブラリ プロジェクトに配置するという考えは好きではありません。しかし、そうしないためには、呼び出し元のプロジェクトからこの情報を渡す必要があります。たとえば、Web アプリの web.config ファイルとコンソール アプリの app.config ファイルには、この接続情報が含まれています。S3 コードを呼び出すとき、この構成情報を共有コードに渡すと仮定します。
しかし、これは私には不自然に思えます*。その理由はわかりません。それが理にかなっていれば、S3コード(たとえば)を特定の構成メソッドに「バインド」しているように感じます。私の感覚が誤ったバイアスなのかどうかはわかりません。
*たとえば、渡さなければならない任意の量の構成データがあるとします。
- 接続文字列
- Web サービスの資格情報
- API エンドポイント
- アプリの構成設定からの任意のデータ (一部の呼び出し元は必要ですが、他の呼び出し元は必要ないため、多くの場合、データは役に立たないだけで、何かを渡す作業を行う必要があります)
そのため、メイン アプリに構成変数を追加するたびに、共通コードのコンストラクターを変更する必要がありました。物事は常に動いているでしょう。
これについて提案してもらえますか?