Является ли структура сущностей плохим выбором для нескольких веб-сайтов и больших приложений? - PullRequest
3 голосов
/ 11 марта 2011

Сценарий : В настоящее время у нас есть веб-сайт, и мы работаем над созданием нескольких веб-сайтов с веб-сайтом администратора.Мы используем asp.net-mvc, SQL Server 2005 и Entity Framework 4. Итак, в настоящее время у нас есть единое решение, которое имеет все веб-сайты, и все веб-сайты используют одну и ту же модель структуры сущностей.Модель в настоящее время имеет более 70 таблиц и потенциально может иметь гораздо больше в будущем ... около 400?

Вопросы : Будет ли модель Entity Framework работать медленнее, когда она собираетсярасти больше?Я прочитал довольно много статей, в которых говорится, что это довольно медленно из-за дополнительных слоев отображения по сравнению, скажем, с ado.net?Кроме того, мы думали о наличии нескольких моделей, но кажется, что это тоже плохая практика, и полезен ли LINQ, когда мы не используем ORM?

Итак, нам просто интересно, что и как все крупные веб-сайты, использующие подобную технологию, поскольку мы достигаем хорошей производительности при использовании ORM, как EF, или они никогда не выбирают ORM?Я также работал над приложением LINQ to SQL, в котором было более 150 таблиц, и мы столкнулись с огромным штрафом при запуске, при первой загрузке сайта потребовалось 15-20 секунд.Я почти уверен, что это связано с высокой стоимостью запуска LINQ to SQL ORM.Было бы здорово, если бы кто-то мог поделиться своим опытом и мыслями по этому поводу?Каковы оптимальные методы, которым нужно следовать, и я знаю, что это зависит от каждого приложения, но если производительность является проблемой, то какие шаги следует предпринять?

Ответы [ 3 ]

5 голосов
/ 11 марта 2011

У меня нет определенного ответа для вас, но я нашел этот пост SO: Стоимость производительности ORM , он, вероятно, будет информативным для вас, особенно второй по величине ответ, упоминающий этот сайт:

http://ormbattle.net/

Мой личный опыт показывает, что для любого картографа ORM, который я видел до сих пор, закон утечки *1009* Джоэла в значительной степени применим. Поэтому, если вы собираетесь использовать EF, убедитесь, что у вас есть альтернативы для оптимизации.

0 голосов
/ 12 марта 2011

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

Я не думаю, что LinqToSql является хорошей альтернативой, поскольку Microsoft по большей части прекратила его совершенствование.

Какие еще альтернативы вы рассматривали? ADO.NET? NHibernate? Хранимые процедуры?

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

0 голосов
/ 11 марта 2011

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

Лично мне нравится писать SQL, а не полагаться на абстракцию поверх абстракции.БД знает SQL, и поэтому я рад, что в некоторых случаях используются хранимые процедуры, созданные вручную, или SQL.Одним из огромных преимуществ в этом является то, что я могу ответить на код, чтобы увидеть, что он пытается сделать, и просмотреть полученные данные с помощью c & p sql из журнала в редактор запросов sql.Это, на мой взгляд, значительно упрощает поддержку, полностью сводя на нет все преимущества для программистов, которые вы могли бы получить, используя в первую очередь ORM (особенно когда EF генерирует абсолютно нечитаемый SQL).

На самом деле, подумайтеиз этого единственное преимущество, которое дает ORM, состоит в том, что вы можете кодировать немного быстрее (разумеется, после того, как все настроено и не изменяется схема), и, в конечном счете, я не думаю, что выгода стоит затрат.не тогда, когда вы считаете, что я трачу большую часть своего времени на программирование, думая о том, что я собираюсь сделать, так как часть «делаю это» относительно мала по сравнению с частями проектирования, тестирования, поддержки и обслуживания.

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