Мне нужно некоторое разъяснение по поводу архитектуры MVC и трехуровневой архитектуры

Несколько не по теме, но я столкнулся с очень похожей проблемой, пытаясь установить Erlang, используя kerl .

У меня все работало до шага "сборка керла ...". Журнал сборки показал следующую ошибку:

odbcserver.c:117:10: fatal error: 'sql.h' file not found #include "sql.h"

Проблема в том, что ODBC больше не является частью установки Mavericks (т.е. MacOS 10.6 SDK не установлен). Собирая воедино советы с разных сайтов, ни один из которых не работал сам по себе, следующий набор шагов позволил решить проблему:

  1. brew install unixodbc - устанавливает недостающие библиотеки ODBC и включаемые файлы (например, sql.h).
  2. Установите CFLAGS так, чтобы он указывал на каталог include для установки unixodbc как часть команды сборки kerl (например,):

    CFLAGS = "- I / usr / local / Cellar / unixodbc / 2.3.2 / include "./kerl build R15B R15B

Это указывает на сборку для включаемых файлов ODBC.

Моя среда - Mavericks, инструменты командной строки xcode и xcode v5.1.1.

11
задан Adeel Ansari 22 June 2009 в 07:04
поделиться

4 ответа

  1. MVC - это в основном шаблон для уровня представления, и он фокусируется на взаимодействии между представлением и контроллером. Модель может рассматриваться как компоненты приложения, которые отвечают за поддержание состояния , включая сохранение.

    В простом приложении модель может быть просто моделью LINQ-To-SQL. В большом корпоративном приложении модель может содержать уровень доступа к данным, бизнес-уровень и уровень домена. ASP.NET MVC не ограничивает вас тем, как следует реализовать M.

  2. Паттерн Репозиторий - это один из способов реализации части сохраняемости M. Другой - ActiveRecord . Какой узор выбрать, зависит от сложности приложения и ваших предпочтений.

    Взгляните на Шаг 3 учебника NerdDinner, где они создают простой репозиторий с использованием Linq to SQL.

  3. Linq to SQL не погибнет. Microsoft по-прежнему будет улучшать ядро ​​и добавлять запросы клиентов там, где это имеет смысл, но Entity Framework будет в центре внимания. Взгляните на этот пост для изменений LINQ to SQL в .NET 4.0 .

    EF можно использовать аналогично LINQ to SQL, но он также более гибкий, поэтому его можно использовать другими способами. Например, EF4 будет более или менее поддерживать сохранение ваших собственных объектов POCO в проекте, более ориентированном на предметную область.

7
ответ дан 3 December 2019 в 08:57
поделиться

Да, я думаю, что MVC - это другой подход, чем «» трехуровневая архитектура, которую, я думаю, вы имели в виду здесь (архитектура, в которой вы создаете в основном 3 проекта DAL, BL и UI). Основная идея MVC - разделение задач между каждым из его компонентов (модель, представление и контроллер). Контроллер - это компонент, отвечающий за обработку пользовательских запросов, и в большинстве случаев он объединяется с компонентом «Модель», чтобы отображать желаемое представление в качестве ответа на пользовательский запрос. Разница между этой и традиционной трехуровневой архитектурой заключается в том, что DAL и BL теперь сгруппированы и названы Model, и да, вам все еще нужно создавать эти компоненты.
Что такое репозитории?
Мартин Фаулер упоминает определение репозитория как " они являются посредниками между доменом и объектами отображения данных, и, конечно, они должны быть помещены в папку / проект вашей модели.

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

Как взаимодействовать с EF?
они являются посредниками между доменом и объектами отображения данных, и, конечно, они должны быть помещены в папку / проект вашей модели.

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

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

6
ответ дан 3 December 2019 в 08:57
поделиться

Думаю, вы немного запутались в этих вещах, и они сбивают с толку, поэтому давайте рассмотрим их медленно.

  1. N-Tiered Architecture и MVC - это разные, но взаимосвязанные. N-Tier обычно говорит о разделении доступа к данным, бизнес-логики и пользовательского интерфейса. Однако некоторые люди могут возразить, что невозможно полностью отделить BLL от пользовательского интерфейса; MVC решает эту проблему таким образом, что соответствующий контроллер взаимодействует с вашим BLL и с вашим представлением, в отличие от того, чтобы ваше представление напрямую взаимодействовало с вашим BLL.

  2. Да, наличие репозиториев - это один из подходов к созданию DAL . Есть много способов сделать это, и вы не должны ограничиваться тем, что обсуждается в книге.

  3. В книге используется LINQ to SQL только для максимально быстрой демонстрации ASP.NET MVC, но это НЕ единственный способ. Перестаньте думать о LINQ to SQL ни на минуту; ASP.NET MVC можно использовать независимо от того, используете ли вы ORM, например NHibernate, или используете обычную фабрику ADO.NET + DAL или что-то еще - вы не сможете использовать те ASP.NET ObjectDataSources , который вы перетаскиваете с помощью пользовательского интерфейса.

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

​​HTH

1
ответ дан 3 December 2019 в 08:57
поделиться
  1. Да, вам все равно нужно самостоятельно создавать уровни доступа к данным и бизнес-логики. Некоторые могут возразить, что уровень Контроллера IS является бизнес-логикой, но я лично предпочитаю разделение между реальной бизнес-логикой (например, расчет цен) и экранной бизнес-логикой (например, обработчик событий для кнопки «ОК»). Затем вы вызовете их из своего класса контроллера. Класс контроллера управляет логикой вашего экрана и управляет преобразованием из уровня данных / бизнес-логики в значение экрана.

  2. платформа ASP.NET MVC не накладывает ограничений на уровень «Модель», что означает, что вы можете использовать все, что угодно. вы хотите включить NHibernate, LINQ to SQL или структуру сущностей. Я использую LINQ to SQL, потому что это просто.

  3. Не уверен, никогда не читайте эту книгу. Я только что скачал Скотта Хансельмана ' s Проект Nerddinner из codeplex и используйте его в качестве руководства для написания веб-сайтов ASP.NET MVC.

-1
ответ дан 3 December 2019 в 08:57
поделиться
Другие вопросы по тегам:

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