База данных и логический уровень для приложения ASP.NET MVC - PullRequest
0 голосов
/ 31 мая 2010

Я собираюсь начать новый проект, который изначально будет небольшим, но может вырасти до большого за эти годы. Я твердо убежден, что собираюсь использовать ASP.NET MVC с jQuery для пользовательского интерфейса. Я хочу использовать MySQL в качестве базы данных по некоторым причинам, но беспокоюсь о нескольких вещах.

Я совершенно новичок в Linq, но, кажется, его легче использовать, если вы с ним знакомы.

Во-первых, доступ к данным должен быть легким. Поэтому я подумал, что должен использовать MySQL для Linq, но где-то я читал, что он не поддерживается напрямую, но MySQL .NET-соединитель добавляет поддержку EntityFramework. Я не знаю, каковы плюсы и минусы этого. DbLinq это то, что я тоже слышал. Мне бы очень хотелось, если бы я мог реализовать шаблон хранилища, поскольку он позволяет применять фильтр на уровне логики, а не на уровне доступа к данным. Будет ли это возможно, если я буду использовать Entity Framework?

Я также обеспокоен исполнением. Кто-то сказал мне, что если мы используем Entity Framework, он получает много данных, а затем фильтрует их. Это верно?

Так что вопросы в основном -

  1. Возможно ли использование MySQL для Linq? Если да, где я могу получить более подробную информацию об этом?
  2. Плюсы и минусы использования EntityFramework или DbLinq с MySQL?
  3. Будет ли легко получить доступ к данным, используя EntityFramework или DbLinq с MySQL?
  4. Смогу ли я реализовать шаблон хранилища, который позволяет применять фильтр на логическом уровне, а не на уровне доступа к данным (когда я использую EntityFramework с MySQL)
  5. Получает ли он чертовски много данных из базы данных, а затем применяет к ним фильтр?

Если в этом случае с моей стороны звучит слишком много вопросов, если вы можете просто дать мне знать, что вы будете делать (со значительной причиной) в этой ситуации в качестве опытного человека в этой области, это должно ответить на мой вопрос.

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Исходя из упомянутых вами моментов, я бы серьезно подумал о том, чтобы изначально перейти на MS SQL вместо MySQL и реализовать LINQ-to-SQL вместо Entity Framework, и вот почему:

  1. Тот факт, что вы ожидаете большой трафик, изначально говорит мне, что вам нужно подумать о том, где вы планируете закончить, а не где начинать. У меня гораздо больше опыта работы с MS SQL, чем с MySQL, но если вы говорите о том, чтобы начать с версии MySQL для сообщества и выполнить обновление позже, вы все равно будете нести значительные расходы в версии Enterprise.
  2. Я слышал, что существует версия LINQ, которая поддерживает MySQL, но, если что-то не изменилось в последнее время, она все еще находится в бета-версии. Я заканчиваю 18-месячный веб-проект, в котором используются ASP.NET MVC 1.0, LINQ-to-SQL, JavaScript, jQuery, AJAX и MS SQL. Я реализовал шаблон репозитория, просмотр моделей, интерфейсов, модульных тестов и интеграционных тестов с использованием WatiN. Комбинация технологий работала очень хорошо для меня, и я планирую использовать ту же комбинацию для личного проекта, который я разрабатываю.
  3. Когда вы получаете MS SQL с планом хостинга, у вас обычно есть возможность создать несколько баз данных из этого единственного экземпляра. Похоже, они дают вам больше памяти, потому что они предоставляют вам несколько баз данных MySQL, но это только потому, что архитектура поддерживает создание только одной базы данных на экземпляр.
  4. Я не буду использовать Entity Framework для моих проектов ASP.NET MVC, потому что я не был в восторге от ADO.NET. Я не хочу открывать соединение, создавать объект команды, заполнять коллекцию параметров, запускать метод execute, а затем выполнять итерацию по объекту одностороннего считывания, чтобы получить мои данные. Как только вы увидите, как LINQ-to-SQL упрощает процесс, вы не захотите возвращаться. В проекте, о котором я упоминал ранее, у меня есть более 60 таблиц в базе данных с примерно 200 связями внешних ключей. Поскольку я использовал LINQ-to-SQL с шаблоном хранилища на своем уровне данных, я смог построить приложение, используя , а не одну хранимую процедуру. LINQ-to-SQL автоматически защищает от атак SQL-инъекций и поддерживает оптимистическую и пессимистическую проверку параллелизма.

Я не знаю, каков ваш проект, но вы не хотите попадать в ситуацию, когда у вас будут проблемы с масштабированием приложения позже. Кодируйте конечный результат, а не отправную точку, и вы избавите себя от множества головных болей позже.

1 голос
/ 04 июня 2010

Поскольку я фанат ALT.NET, я бы порекомендовал вам использовать NHibernate для вашего проекта вместо EntityFramework, вы можете воспользоваться его преимуществами, я уверен, что вы его выберете.

...