ソリューションを論理レイヤーに分割する必要があると思います。
どこにヘルパーを配置しますか。最も低いレベルの1つで、その解決策を作成します。
例
ファーム用のソフトウェア。あなたはあなたの動物、野菜を追跡する必要があります。動物に餌を与えるためのモジュールと、動物や野菜を消費者市場に販売するためのモジュールが必要です。
これは、次のソリューションに分割できます
バックエンド
- 販売モジュール:あなたの製品を販売するためのすべて
- モジュールの購入:種子、動物用食品、その他の製品の購入、..。
- Shedulerモジュール:種まき、収穫、...のトリガーイベント
- 予測モジュール:天候や市場価格による収穫量の予測...
- ..。
これらの各バックエンドモジュールは、独自のデータアクセス層、DTO、WCFサービスなどを持つことができます...
このソリューションには、ビジネスロジック、データアクセス、...のみが含まれます。また、これらのバックエンドソリューションに接続する複数のフロントエンドソリューションが存在する可能性があります。
フロントエンド
- ASP.NET MVCアプリケーション:消費者に販売するためのWebショップ
- WPFアプリケーション:販売の承認
- その他のWPFアプリケーション:物を買う。
- モバイルアプリケーション:イベントを携帯電話などに送信します。
- (別のオプションは、2つ以上のバックエンドソリューションを1つのフロントエンドソリューションに接続することです)
- ..。
これはプロジェクトにとって大きな変更であり、影響があります。変更したくない場合は、これが正しいと思うようにしてください。
複数のソリューションを使用すると、全体的なビルド時間が長くなります。すべての開発者がローカルマシンですべてのソリューションをビルドしなくても、常に最新のバイナリで作業できるように、ナイトリービルドを行うことが重要です。
さまざまなソリューションでレイヤーを引き続き使用できることに注意してください。
- インフラストラクチャレイヤー
- 統合レイヤー(外部システム)
- ドメインレイヤー
- リポジトリレイヤー
- マネージャーレイヤー
- サービスレイヤー
これをすべて一緒に機能させ、バイナリを台無しにしないため。ドライブIEXをマップできます。ここには、フォルダーバイナリがあり、各ソリューションのフォルダーがあります。ここで、各ソリューションはビルド後のイベントでアセンブリをコピーします。(これをスクリプト化するので、すべてのマシンで動作します)
優れたネットワークインフラストラクチャがある場合は、それをサーバーにコピーすることもできます。そのため、たとえばTFSですべてのソリューションを構築すると、すべての開発者がアクセスできる場所にソリューションをコピーできます。
TFSでビルドする場合は、ビルドの順序が正しいことを確認してください。最初は最下位レイヤー、最後は最上位レイヤーです。
ただし、ソリューションを分割すると、ソリューションではすべてのソリューションでそれらが必要になるとは限りません。
私は最近オニオンアーキテクチャについての記事を読みました、多分あなたもそれを見ることができます。(ASP.NET MVCに固有です)。
CQRSを調べることもできます。