質問は広く翻訳できるため、多くのオプションがあります。すべての答えを心に留めることをお勧めします。これが私のスピンだと言った...
私は以前、n 層のトレーニングのためにソフトウェア レイヤーを垂直と見なしていましたが、それらの概念から抜け出して、概念的により広範で制限の少ないものに移行するのに苦労していました。私は、.NET アセンブルを単なるパズルのピースと見なすよう努めています。
接続文字列をコードから分離するのは正しいことであり、それは .NET .config ファイルまたはアプリケーション設定によって簡単にサポートされます。
私はしばしば、ビジネス ロジック、概念、およびフローを含む小規模なコア ライブラリを好みますが、これらはそれぞれ分割することができます。そして、その概念の範囲内で、ビジネスをデータ アクセスから別のアセンブリとして分割し、新しい種類のデータ アクセスに交換することができます。ただし、コア モジュール (「ビジネス カーネル」または「エンジン」のようなもの) に固執します。
たとえば、多くのプレゼンテーション タイプを通じて「ビジネス カーネル」を表現できます。
- テキスト/コンソール IO
- GUI: WinForms、WPF、Silverlight、ASP.NET、LED/ピクセルボードなど
- Powershell インタラクションのコマンドレットとして
- Web サービス式
- モバイルアプリの種類
- 等
パターンを使用してソフトウェアを思い通りに曲げたり、 Microsoft Enterprise Libraryなどの関連する実装を使用して開発を加速したり、 Ninject (多数のうちの 1 つ) や制御手法の反転などの依存性注入との結合を緩めたりすることができます。