Вопрос по linq-to-sql, asp.net, 3-tier, repository-pattern, asp.net-mvc – Мне нужны некоторые разъяснения по архитектуре MVC и трехуровневой архитектуре

11

Я читал книгу Pro ASP NET MVC Framework, и меня очень смущают многие вещи. Я пытался провести какое-то исследование, но обнаружил, что из-за того, что на меня бросают столько разных подходов и концепций, это только ухудшает ситуацию.
Итак, у меня есть несколько вопросов:

I know MVC is supposed to split the functionality into three main things: Model -> Controller -> View. Is the MVC a different approach than the three-tier architecture? Or am I still supposed to be thinking of creating a Data Access Layer and a Business Logic Layer in my project?

What exactly are Repositories? It is what acts as my Data Access Layer? Where/How do Repositories fit into the MVC?

The book talks about using LINQ to SQL to interact with the database but yet it states that LINQ to SQL will not be supported in the future and that Microsoft is dropping it for the Entity Framework. Where does the Entity Framework fit into the MVC and how do I interact with it?

Заранее спасибо за помощь!
Matt

Я видел, что он будет включен в ASP.NET 4.0, но я предполагал, что он все еще медленно удаляется. Хорошо, да, я прочитал этот абзац. Как я уже сказал, из-за того, что все термины и понятия навязываются мне сразу, я немного запутался и забыл кое-что из того, что я прочитал. Благодарю. Matt
@Matt, LINQ здесь, чтобы остаться с нами надолго. Entities - это хорошо, но это не так, как большинство людей, так или иначе, не будут использовать LINQ to Entities, поэтому изучение и использование LINQ вовсе не является плохим вариантом. mmcdole
Кроме того, с точки зрения разницы между MVC и трехуровневой, я предлагаю вам перечитать pg. 41 конкретно последний абзац вверху. mmcdole
LINQ to SQL не отбрасывается, и в вашей книге об этом написано так же. 49. mmcdole
@ Matt, я бы сказал, что это не лучшая книга для настоящих новичков в этой области. Не то чтобы это не хорошая книга, мне она очень нравится. Но & quot; Pro ASP.NET MVC & quot; просто книга, более ориентированная на ветеранов. Я думаю, что я также был бы сбит с толку, если бы в прошлом мне не вводили большинство из этих концепций неоднократно. mmcdole

Ваш Ответ

4   ответа
7

and it focuses on the interaction between the view and the controller. The model can be considered to be the components of the application that are responsible for maintaining state, including persistence.

In a simple application the model might just be an LINQ-To-SQL model. In a large enterprise application the model might contain a data access layer, business layer, and a domain layer. The ASP.NET MVC does not restrict you to how the M should be implemented.

The Repository pattern is one way to implement the persistence part of the M. The ActiveRecord is another. Which pattern to choose depends on the complexity of the application, and your preferences.

Take a look at Step 3 of the NerdDinner tutorial where they create a simple repository using Linq to SQL.

Linq to SQL will not be dead. Microsoft will still improve the core and add customer requests where it makes sense but Entity Framework would be the primary focus. Take a look at this post for LINQ to SQL changes in .NET 4.0.

The EF can be used is a similar way as LINQ to SQL, but it is also more flexible so it can be used in other ways. For example EF4 will more or less support persistence of your own POCO objects in a more Domain Driven Design.

очень информативный ответ. Я должен быть в состоянии проголосовать за этот ответ в 3 раза!
1

are сбивает с толку, так что давайте медленно пройдемся по ним.

N-Tiered Architecture and MVC are different, but intertwined. N-Tier usually talks about separating Data Access, Business Logic and the User Interface. However, some people may argue that it is impossible to totally separate BLLs from the UI; MVC addresses that, in such a way that there is a corresponding Controller talking to your BLL, and to your View, as opposed to having your View talk directly to your BLL.

Yes, having repositories is one approach to having a DAL. There are many ways of doing this, and you should not limit yourself to what is discussed in the book.

The book only uses LINQ to SQL to demonstrate ASP.NET MVC the fastest way possible, but it is NOT the only way. Stop thinking about LINQ to SQL for a minute; ASP.NET MVC can be used whether you use an ORM like NHibernate or you use plain ADO.NET + DAL Factory or whatever -- what you'll not going to be able to use are those ASP.NET ObjectDataSources that you drag and drop with your UI.

Что касается Entity Framework, Брэд Абрамс написал хорошее руководство покак использовать Entity Framework с ASP.NET MVC, это должно охватить ваш последний вопрос.

НТН

-1

rself. Some may argue that the Controller layer IS the business logic but I personally prefer the separation between real business logic (e.g. pricing calculation) from screen business logic (e.g. event handler for the "OK" button). You will then call these from your Controller class. The controller class controls the logic for your screen and manages the translation from your data/business logic layer to the screen value.

the ASP.NET MVC framework puts no restriction on the "Model" layer, which means you can use whatever you want including NHibernate, LINQ to SQL or entity framework. I use LINQ to SQL because it's simple.

Not sure, never read that book. I just downloaded Scott Hanselman's Nerddinner project from codeplex and use that as a guide for writing ASP.NET MVC websites.

Скажем так: если вы поместите всю свою бизнес-логику на уровень модели, как вы будете использовать ее в другой программе? Означает ли это, что вы должны добавить ссылку на веб-сайт из своей программы, чтобы вы могли вызвать метод? это не имеет смысла, не так ли?
И между прочим, если вы не найдете постоянство, на которое отвечает MVC, вы приписываете его M. Я не понимаю, в чем суть.
Возможно, все дело в уровне персистентности в вашей второй точке, а не в уровне модели.
Прежде всего, я называю это «Модель» слой, потому что этот вопрос о MVC. Во-вторых, как я уже говорил в своем пункте 1, я занимаюсь «бизнес-логикой». в разделе "Модель" слой тоже такNOT просто о настойчивости.
Это очень запутано. Я имею в виду, я никогда не слышал об этом разделении "бизнес-логика экрана" и «настоящая бизнес-логика». Зачем просто говорить бизнес-логику и логику представления, и тогда она станет моделью и представлением. Я тоже работаю с бизнес-логикой в Model, но как она может включать в себя постоянство, было моей целью. Это отдельный слой, если не плохая практика.
6

" 3-уровневая архитектура, которую, я думаю, вы подразумевали здесь (архитектура, в которой вы создаете в основном 3 проекта DAL, BL и UI). Основная идея MVC - разделение проблем между каждым из его компонентов (Модель, Представление и Контроллер). Контроллер является компонентом, отвечающим за обработку пользовательских запросов, и в большинстве случаев он объединяется с «моделью». компонент для того, чтобы отобразить желаемый вид в качестве ответа на запрос пользователя. Разница между этим и традиционной 3-уровневой архитектурой заключается в том, что DAL и BL сгруппированы и называются Модель иyes you still need to create these components.
Что такое репозитории?
Мартин Фаулер упоминает определение хранилища как"Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects" Репозитории являются частью вашего уровня доступа к данным, они не имеют доступа к данным самостоятельно, они являются посредниками между доменом и объектами отображения данных, и, конечно, они должны быть помещены в папку / проект вашей модели.

Будет ли Linq to SQL устаревшим?
NO и в той же книге говорится, что Дамьен Гард (разработчик из команды ADO.NET) упомянул в одном из своих постов в блоге, что Linq to SQL будет включен в .NET 4.0.

Как взаимодействовать с EF?
Как и в случае с Linq для SQL. Как и Linq to SQL, Entity Framework будет вашим картографическим объектом и будет также находиться в проекте Model.
 Надеюсь это поможет!

Похожие вопросы