2

アーキテクチャ上の決定の問題があります。新しいアプリケーションを構築しようとしていますが、ASP.NET MVCEntity Frameworkを使用することに決めました(おそらく最初にデータベース)。最初の段階では、通常のブラウザー用の Web アプリケーションのみを構築しますが、将来的にはモバイル アプリケーションを追加する可能性があります。(SOA?)

私の質問は、アプリケーション アーキテクチャを構築するための最良の方法は何でしょうか?

これは正しいでしょうか?

  1. MvcProject
    • モデル
    • 意見
    • コントローラ
  2. ダルプロジェクト
    • edmx および T4 テンプレートを保持

例、パターン、およびベスト プラクティスを検索してきましたが、適切なものが見つからないようです。

ありがとうございました!

4

6 に答える 6

10

私が通常ソリューションを構築する方法(NuGetに適合した編集)

  1. Webサイト(MVC)
    • コントローラー
    • ビュー
    • コンテンツ(スクリプト、css、画像など)
  2. プレゼンテーションモデル(単純なプロジェクトの場合、これはWebサイトに埋め込まれます)
    • モデルを表示
    • モデルマッパー
  3. ビジネスの論理
    • ルール
    • ローカル拡張機能(Webおよび一般)
  4. データ(複雑な場合は、コンテキスト/リポジトリ/モデルごとに個別のサブフォルダーを使用します)
    • リポジトリ
    • エンティティモデル
    • データコンテキストと構成
  5. Webライブラリ(おそらくローカルのNuGetを介して利用可能な個別のソリューションとして)
    • 拡張機能(MVC / Webクラスへ)
    • ヘルパークラス=属性
  6. 一般的なライブラリ(おそらくローカルのNuGetを介して利用可能な個別のソリューションとして)
    • 拡張機能
    • ヘルパークラス

依存関係はこの構造に流れます。つまり、上記のものは以下のものを参照する場合がありますが、その逆はありません。また、プロジェクトごとに個別のテストプロジェクトがあります。場合によっては、NuGetでパッケージ化され、ローカルリポジトリでホストされているWeb/一般クラス用の外部共有ライブラリを使用します。

モバイルの場合、Web経由でアクセスする場合は、jQueryMobileとモバイル対応のビューエンジンを使用してWebサイトに直接組み込みます。ネイティブを考えている場合は、API配信用のWebサイトと同じビューモデルを共有する場合と共有しない場合があるWebAPIレイヤーを追加し、APIに対してこの構造の外部でモバイルアプリを開発します。ほとんどの場合、APIには独自のモデルがあり、別のスタックのビジネスレイヤーの上にあります。私の現在のプロジェクトでは、データは別のソリューションにあり、APIとWebサイトを別のソリューションで開発し、NuGetパッケージを介してモデルを共有しています。

于 2012-05-09T12:11:24.763 に答える
2

あなたのチームがまだ決定を下すのに十分な情報を持っているようには思えません。それがあなたがここで質問をしている理由ですが、あなたが得た答えに頼るべきではありません。ASP.NET MVCとEFは優れたソリューションかもしれませんが、少なくともNerdDinnerまたはMusicStoreのチュートリアルを実行しなければ選択しないでください

そうすれば、アーキテクチャに関する独自の質問に答えることができ、おそらくいくつかの追加の質問も明らかになるでしょう。

于 2012-05-09T12:10:44.280 に答える
1

基本的な戦略には、次のものが含まれます。

  • データプロジェクト
    • EFモデル
    • エンティティ/T4世代
  • ロジックプロジェクト
    • アプリケーションルール
    • データの表示に関係のないロジック
  • サイトプロジェクト
    • プレゼンテーション/集約ロジック(コントローラー/ビュー内)
    • ビュー
    • スクリプト/アセット
    • モデル(コントローラーとビュー間の通信のみ)
  • モバイルプロジェクト
    • サイトと同じものですが、モバイルターゲット用です
于 2012-05-09T12:11:59.880 に答える
1

まず、サイトのモバイル バージョンをどのように実装するかを決定する必要があります。基本的に、次の 2 つのオプションがあります。

  • モバイル ページ用に個別のビュー/コントローラーを作成します。このソリューションは最も高価ですが、最も柔軟でもあります。(MVC 4 のモバイル サポートを参照)
  • サイトのレスポンシブ レイアウトを作成する ( http://jquerymobile.com/ ) 通常、私はこのオプションを好みます。

通常、私は3つのプロジェクトを使用しています

  • ダル
    • Edmx、T4 テンプレートが含まれています
  • サービス
    • CRUD 操作を含むサービス クラス (リポジトリはやり過ぎなので使用していません)
    • モデルを見る
  • ウェブ
    • コントローラー、ビュー、...
于 2012-05-09T16:34:45.393 に答える
0

最高のアーキテクチャは、予算とタイムラインに直接関係していることを忘れないでください。

MVCは、通常のasp.netよりもコストがかかります。

  • MVCは、開発者に常に3層を使用するように強制します
  • MVC開発者はより高価で、入手が困難です

DALプロジェクトと言うときは、通常のasp.netを意味していると思います。この場合、次のようになります。

  • ASP.NETの開発はMVCよりも高速です
  • ASP.NET Webサイトでは、より複雑なサードパーティのグリッドなどを使用できます。
  • アメリカで広く利用できる才能

モバイル開発に関しては、Webサイトに何を選択するかは重要ではありません。モバイルアプリは、デバイスの母国語(IOS、Androidなど)を使用して開発する必要があります。次に、SSLとJSONを介してアプリと通信します。

于 2012-05-09T12:13:36.297 に答える
0

正しいアプリケーション アーキテクチャを選択したと思います。私たちのプロジェクトの 1 つでも同じアプリケーション アーキテクチャを使用しました...

MvcProject
Model
View
Controller

DAL project
Holds edmx and T4 templates
于 2012-05-09T12:03:37.377 に答える