私が通常ソリューションを構築する方法(NuGetに適合した編集)
- Webサイト(MVC)
- コントローラー
- ビュー
- コンテンツ(スクリプト、css、画像など)
- プレゼンテーションモデル(単純なプロジェクトの場合、これはWebサイトに埋め込まれます)
- ビジネスの論理
- データ(複雑な場合は、コンテキスト/リポジトリ/モデルごとに個別のサブフォルダーを使用します)
- リポジトリ
- エンティティモデル
- データコンテキストと構成
- Webライブラリ(おそらくローカルのNuGetを介して利用可能な個別のソリューションとして)
- 拡張機能(MVC / Webクラスへ)
- ヘルパークラス=属性
- 一般的なライブラリ(おそらくローカルのNuGetを介して利用可能な個別のソリューションとして)
依存関係はこの構造に流れます。つまり、上記のものは以下のものを参照する場合がありますが、その逆はありません。また、プロジェクトごとに個別のテストプロジェクトがあります。場合によっては、NuGetでパッケージ化され、ローカルリポジトリでホストされているWeb/一般クラス用の外部共有ライブラリを使用します。
モバイルの場合、Web経由でアクセスする場合は、jQueryMobileとモバイル対応のビューエンジンを使用してWebサイトに直接組み込みます。ネイティブを考えている場合は、API配信用のWebサイトと同じビューモデルを共有する場合と共有しない場合があるWebAPIレイヤーを追加し、APIに対してこの構造の外部でモバイルアプリを開発します。ほとんどの場合、APIには独自のモデルがあり、別のスタックのビジネスレイヤーの上にあります。私の現在のプロジェクトでは、データは別のソリューションにあり、APIとWebサイトを別のソリューションで開発し、NuGetパッケージを介してモデルを共有しています。