質問

本「Pro ASP NET MVC Framework」を読んでいて、多くのことと本当に混乱しています。私はいくつかの研究を試みましたが、非常に多くの異なるアプローチと概念が私に投げかけられていることを発見しています、それはただ事態を悪化させているだけです。
私はいくつかの質問があります:

  1. MVCが機能を3つの主なものに分割することになっていることは知っています。モデル->コントローラー->表示。 MVCは3層アーキテクチャとは異なるアプローチですか?または、プロジェクトにデータアクセスレイヤーとビジネスロジックレイヤーを作成することを考えているはずですか?

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

  3. この本は、LINQ to SQLを使用してデータベースとやり取りすることについて説明していますが、LINQ to SQLは今後サポートされなくなり、MicrosoftはEntity Framework用に削除する予定です。 Entity FrameworkはMVCのどこに収まり、どのようにやり取りしますか?

ご協力ありがとうございます!
マット

役に立ちましたか?

解決

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

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

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

    NerdDinnerチュートリアルのステップ3 を見てください。 Linq to SQLを使用したリポジトリ。

  3. Linq to SQLは死にません。マイクロソフトはコアを改善し、理にかなった顧客リクエストを追加しますが、Entity Frameworkが主な焦点となります。 LINQのこの投稿をご覧ください。 .NET 4.0でのSQLの変更について

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

他のヒント

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

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

EFとの対話方法
Linq to SQLと同じです。 Linq to SQLと同様に、Entity Frameworkはマッピングエンティティになり、Modelプロジェクトにも存在します。
これがお役に立てば幸いです!

これらのことについて少し混乱していると思いますが、 は混乱しているので、ゆっくりと見ていきましょう。

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

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

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

Entity Frameworkに関して、Brad Abramsは ASP.NET MVCでEntity Frameworkを使用する方法、最後の質問をカバーします。

HTH

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

  2. ASP.NET MVCフレームワークは、「モデル」に制限を設けません。レイヤー。これは、NHibernate、LINQ to SQL、エンティティフレームワークなど、必要なものをすべて使用できることを意味します。 LINQ to SQLを使用するのは簡単だからです。

  3. わからない、決してその本を読んでいない。 Scott HanselmanのNerddinnerプロジェクトをcodeplexからダウンロードし、ASP.NET MVC Webサイトを作成するためのガイドとして使用しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top