Linq to Sql против Nhibernate против SubSonic против хранимой процедуры (Справка) - PullRequest
2 голосов
/ 14 июля 2009

Я хочу разработать сайт для новостного канала .

Итак, очевидно, что он будет получать много хитов в день и будет обновляться ежедневно.

У меня есть опыт работы с ASP.Net и SQL Server.

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

Технология ??

1) ASP.Net Webforms

2) ASP.Net MVC 1.0

И доступ к данным ??

1) Linq to SQL (Впечатляет, но слухи говорят, что Microsoft отказывается от него)

2) Linq to Entities (проблемы с производительностью)

3) Считыватель данных / Набор данных

4) SubSonic (без понятия)

5) NHibernate (без понятия)

Пожалуйста, объясните свою точку зрения, оставляя свой комментарий ..

Спасибо

Chitresh

Ответы [ 9 ]

4 голосов
/ 14 июля 2009

Моими инструментами выбора сейчас являются ASP.Net MVC 1.0 и NHibernate.

Вот мои рассуждения:

ASP.Net MVC

Я предпочитаю MVC, а не WebForms по следующим причинам.

  • ASP.Net MVC четко отделяет логику моего контроллера от моих представлений
  • В ASP.Net MVC мне не нужно прорабатывать жизненный цикл страницы, который мы имеем в WebForms
  • Мне легче писать приложения AJAX в ASP.Net MVC, используя хорошую библиотеку Javascript, такую ​​как jquery. ASP.Net MVC также позволяет без особых усилий возвращать результаты в формате JSON
  • Проще написать тесты для приложения ASP.Net MVC. Как консультант, мне приходится выполнять несколько задач одновременно между несколькими проектами, и хорошие тесты облегчают переход от одного проекта к другому.

NHibernate

Несмотря на то, что с NHibernate есть приличная кривая обучения, она значительно упрощает сохранение ваших сущностей. Мне нравится, что с NHibernate я могу: - Автоматически Ленивый загружать мои коллекции - Каскадное удаление и обновление корневого объекта вплоть до его дочернего объекта. - Надежный набор объектов запросов, включая Linq, Criteria API и HQL (даже прямой SQL, если вы действительно этого хотите) - Несколько вариантов кэширования

Если вы собираетесь использовать NHibernate, я бы определенно использовал FluentNhibernate . Это делает сопоставления намного проще.

2 голосов
/ 14 июля 2009

На вашем месте я бы использовал LINQ to SQL, не боясь, что Microsoft "откажется" от него. Во-первых, Microsoft не отказывается от LINQ to SQL, а создает для нее другой путь, позволяющий другим поставщикам (Oracle, DB2 и т. Д.), Так сказать, подключаться к LINQ. Я прочитал несколько сообщений от ключевых членов команды LINQ, и они продолжат вносить изменения в LINQ to SQL, и путь перехода от этого к их более новому инструменту будет легким. Во-вторых, LINQ to SQL очень прост в использовании с контекстом данных. Если вы знаете SQL, то изучение LINQ не так уж сложно.

Относительно того, какую технологию использовать: 1) ASP.Net Webforms или 2) MVC: мой ответ заключается в том, что они не являются взаимоисключающими. Веб-формы могут быть построены поверх модели MVC или нет. Вам решать, используете ли вы MVC или нет. Если вы хотите, чтобы ваш сайт был завершен быстро и грязно, я бы, вероятно, пропустил MVC. Если вы хотите, чтобы ваш сайт легко расширялся в будущем, и / или позволяли графическим дизайнерам вносить изменения в дизайн, не внося ошибок в код, то я бы внедрил MVC.

1 голос
/ 14 июля 2009

Выбор между WebForms и MVC действительно сводится к тому, нравится ли вам подход Model-View-Controller. Лично я предпочитаю WebForms, но изучаю MVC (в Rails) просто для того, чтобы расширить свой опыт и получить преимущества от лучшего тестирования. Любой из них подойдет для вашего случая, так как оба способны масштабироваться до больших систем.

Что касается данных, я бы посоветовал вам подумать долго и усердно, прежде чем выбирать Linq в любой форме. Пожалуйста, посмотрите эти предыдущие обсуждения:

Разве LinqToSql не упускает из виду?

Достаточно ли мощный LinqToSql? Разве не легко построить простые интерфейсы?

Я бы не рекомендовал SubSonic, так как документации там просто нет. Вы будете тянуть свои волосы, пытаясь понять, как это работает. Это печально, потому что во многих отношениях это лучшая модель, чем Linq.

В конце концов, я всегда выбирал специальную оболочку DAL для ADO.NET. Во-первых, я знаю что я получаю. Во-вторых, вам действительно нужно знать SQL в любом случае, поэтому зачем усложнять жизнь, пытаясь выучить второй язык доступа к данным? Недостатки Linq и SubSonic очевидны, а преимущества носят в основном теоретический характер (опять же, см. Обсуждение в ссылках для получения дополнительной информации).

0 голосов
/ 15 июля 2009

Если вы хотите простой, чистый дизайн, который будет интересно реализовывать и расширять в будущем, то вам стоит воспользоваться asp.mvc и структурой сущностей. Я бы начал с видеоуроки по базе данных фильмов с сайта asp.net mvc.

0 голосов
/ 14 июля 2009

Я просто что-то развиваю и был на том же перекрестке, что и вы сейчас. Если вы опытный разработчик, я советую вам использовать Asp.net MVC . В целом у меня был большой опыт с этим.

Учитывая ваш DAL, это немного сложнее.

Мы решили использовать LINQ to Entities (поскольку L2SQL заброшен), но в итоге мы использовали собственные шаблоны T4, которые генерируют код из файла EDMX. Это прекрасно работает, и у нас есть все возможные настройки, которые нам нужны. Но если бы мне пришлось выбирать сейчас, я бы предпочел выбрать либо Subsonic 3 (из-за поддержки LINQ to DB и генератора T4), либо Fluent nHibernate . Я знаю, что Subsonic, вероятно, не собирается поставлять именно то, что мне нужно, но я смогу настроить шаблоны. С другой стороны, nHibernate не поддерживает LINQ to DB, что было моим предпочтением.

Редактировать Если вы спросите меня: LINQ to Entities - это в основном LINQ to SQL с дополнительным сопоставлением с пользовательскими типами. Хорошо. Есть некоторые незначительные отличия, но в целом это так. И кажется естественным, что MS отказывается от этого.

0 голосов
/ 14 июля 2009

Поскольку вы уже знакомы с ASP.NET и SQL, почему бы не заглянуть в ASP.NET MVC и SubSonic. Я думаю, что новый .NET MVC продвигает более чистый и организованный код, а SubSonic ORM, похоже, очень быстро настраивает и запускает вашу базу данных в ваш код. Вот ссылка, чтобы узнать больше о SubSonic http://subsonicproject.com/docs/The_5_Minute_Demo. Вот мои мысли! :)

Кстати, я лично использую ASP.NET MVC и NHibernate.

0 голосов
/ 14 июля 2009

Microsoft не «отказывается» от Linq-to-SQL как таковой, просто не добавляет к нему основные функциональные возможности (вместо добавления функциональности вместо EF).

Я бы предпочел использовать ASP.NET MVC с Fluent-NHibernate. Я думаю, что использование этих инструментов дает хороший баланс гибкости и простоты использования. Однако, если у вас больше опыта работы с WebForms, его использование вместо этого сократит ваше время разгона. Я также склонен избегать использования DataSets, за исключением случаев, когда это абсолютно необходимо, если вы планируете использовать прямой ADO.NET.

0 голосов
/ 14 июля 2009

У вас есть опыт работы с ASP.NET, и я говорю, оставайтесь с этим, но если вы хотите узнать что-то новое, это ASP.NET MVC хороший способ.

Доступ к данным зависит от того, что вам нужно и что вы предпочитаете.

LINQ2SQL и DataReader / Dataset используют прямой доступ к БД, и это хорошо для простого применения.

LINQ2Entities, SubSonic и NHibernate являются средами ORM, и это хорошо для приложений, где вам потребуется расширяемость в будущем.

И хорошо использовать какой-нибудь шаблон хранилища для доступа к данным.

0 голосов
/ 14 июля 2009

По производительности все они способны обрабатывать тысячи одновременно работающих пользователей.

Наибольшим показателем производительности на любом сайте с высоким трафиком является кэширование. В WebForms / MVC есть отличные возможности для кэширования вывода в реальном отображаемом HTML (наиболее эффективном) и API-кэширования объектов данных.

Я думаю, что вам лучше всего использовать среду доступа к данным, в которой вы наиболее комфортно разрабатываете, - какой шаблон проектирования / набор инструментов вам наиболее знаком. После этого: кеш, кеш, кеш.

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