11

私は本ProASPNET MVC Frameworkを読んでいて、多くのことに本当に混乱しています。私はいくつかの調査を試みてきましたが、非常に多くの異なるアプローチや概念が私に投げかけられているので、それは事態を悪化させているだけだと気づいています。
だから私はいくつかの質問があります:

  1. 私はMVCが機能を3つの主要なものに分割することになっていることを知っています:モデル->コントローラー->ビュー。MVCは3層アーキテクチャとは異なるアプローチですか?それとも、プロジェクトにデータアクセス層とビジネスロジック層を作成することをまだ考えているのでしょうか。

  2. リポジトリとは正確には何ですか?それは私のデータアクセス層として機能するものですか?リポジトリはMVCのどこに/どのように適合しますか?

  3. この本では、LINQ to SQLを使用してデータベースと対話する方法について説明していますが、LINQ to SQLは将来サポートされなくなり、MicrosoftはEntityFramework用に廃止する予定であると述べています。Entity FrameworkはMVCのどこに適合し、どのように操作すればよいですか?

よろしくお願いします!
マット

4

4 に答える 4

7
  1. MVCは主にプレゼンテーション層のパターンであり、ビューとコントローラー間の相互作用に焦点を当てています。モデルは、永続性を含め、状態の維持を担当するアプリケーションのコンポーネントと見なすことができます。

    単純なアプリケーションでは、モデルはLINQ-To-SQLモデルである可能性があります。大規模なエンタープライズアプリケーションでは、モデルにデータアクセス層、ビジネス層、およびドメイン層が含まれる場合があります。ASP.NET MVCは、Mの実装方法を制限しません。

  2. リポジトリパターンは、Mの永続性部分を実装する1つの方法です。ActiveRecord別の方法です。どのパターンを選択するかは、アプリケーションの複雑さと好みによって異なります。

    NerdDinnerチュートリアルのステップ3を見てください。ここでは、LinqtoSQLを使用して単純なリポジトリを作成しています。

  3. LinqtoSQLは死んでいません。Microsoftは引き続きコアを改善し、それが理にかなっている場合は顧客の要求を追加しますが、EntityFrameworkが主な焦点となります。.NET 4.0でのLINQからSQLへの変更については、この投稿を参照してください。

    EFは、LINQ to SQLと同様の方法で使用できますが、柔軟性が高いため、他の方法でも使用できます。たとえば、EF4は、多かれ少なかれ、よりドメイン駆動設計での独自のPOCOオブジェクトの永続性をサポートします。

于 2009-06-22T07:33:00.667 に答える
6

はい、MVCは、ここで意味した「the」3層アーキテクチャ(主にDAL、BL、UIの3つのプロジェクトを作成するアーキテクチャ)とは異なるアプローチだと思います。MVCの背後にある主な考え方は、各コンポーネント(モデル、ビュー、コントローラー)間の関心の分離です。コントローラは、ユーザーリクエストの処理を担当するコンポーネントであり、ほとんどの場合、ユーザーリクエストへの応答として目的のビューを表示するために、「モデル」コンポーネントと連携します。これと従来の3層アーキテクチャとの違いは、DALとBLがグループ化され、モデルという名前が付けられていることです。はい、これらのコンポーネントを作成する必要があります。
リポジトリとは何ですか?
Martin Fowlerは、リポジトリの定義を次のように述べています。「ドメインオブジェクトにアクセスするためのコレクションのようなインターフェイスを使用して、ドメインとデータマッピングレイヤーを仲介します」リポジトリはデータアクセスレイヤーの一部であり、それ自体ではデータにアクセスせず、ドメインとデータマッピングエンティティを仲介します。もちろん、それらはモデルフォルダ/プロジェクトに配置する必要があります。

Linq to SQLは非推奨になりますか?
いいえ、同じ本はそう述べています。また、Damien Guard(ADO.NETチームの開発者)は、彼のブログ投稿の1つで、LinqtoSQLが.NET4.0に含まれると述べています。

EFと対話する方法は?
LinqtoSQLの場合と同じように。Linq to SQLと同様に、Entity Frameworkはマッピングエンティティであり、Modelプロジェクトにも存在します。
お役に立てれば!

于 2009-06-22T05:54:49.470 に答える
1

あなたはこれらのことについて少し混乱していると思います、そしてそれら混乱しているので、ゆっくりとそれらを調べてみましょう。

  1. N層アーキテクチャとMVCは異なりますが、絡み合っています。N層は通常、データアクセス、ビジネスロジック、およびユーザーインターフェイスの分離について話します。ただし、BLLをUIから完全に分離することは不可能であると主張する人もいるかもしれません。MVCは、ビューがBLLと直接通信するのではなく、対応するコントローラーがBLLとビューと通信するように対処します。

  2. はい、リポジトリを持つことは、DALを持つための1つのアプローチです。これを行うには多くの方法があり、本で説明されていることに限定するべきではありません。

  3. この本では、LINQ to SQLを使用して、ASP.NET MVCを可能な限り最速の方法で示していますが、それが唯一の方法ではありません。LINQtoSQLについて少し考えないでください。ASP.NET MVCは、NHibernateのようなORMを使用する場合でも、プレーンなADO.NET + DAL Factoryを使用する場合でも、使用できます。使用できなくなるのは、ObjectDataSourcesドラッグアンドドロップで使用するASP.NETです。 UI。

Entity Frameworkに関しては、Brad Abramsが、ASP.NETMVCでEntityFrameworkを使用する方法についての優れたガイドを作成しました。これは、最後の質問をカバーするはずです。

HTH

于 2009-06-22T07:57:31.413 に答える
-1
  1. はい、データアクセスとビジネスロジックレイヤーを自分で作成する必要があります。コントローラ層はビジネスロジックであると主張する人もいるかもしれませんが、私は個人的に、実際のビジネスロジック(価格計算など)と画面ビジネスロジック([OK]ボタンのイベントハンドラなど)を分離することを好みます。次に、これらをControllerクラスから呼び出します。コントローラクラスは、画面のロジックを制御し、データ/ビジネスロジックレイヤーから画面値への変換を管理します。

  2. ASP.NET MVCフレームワークは、「モデル」レイヤーに制限を設けていません。つまり、NHibernate、LINQ to SQL、エンティティフレームワークなど、好きなものを使用できます。単純なため、LINQtoSQLを使用します。

  3. わからない、その本を決して読まない。スコットハンゼルマンのNerddinnerプロジェクトをcodeplexからダウンロードし、それをASP.NETMVCWebサイトを作成するためのガイドとして使用しました。

于 2009-06-22T04:30:31.300 に答える