Будет ли nhibernate использоваться в таких масштабных проектах, как, например, Facebook? (ради аргументов) - PullRequest
4 голосов
/ 18 мая 2009

Как вы думаете, для тех, кто знает внутреннюю работу nhibernate, такое крупномасштабное веб-приложение, как, например, facebook / myspace, будет использовать nhibernate?

Или nhibernate хорошо подходит для сайтов с более низким трафиком, таких как сайты компаний и т. Д.? то есть предприятие не готово из-за своей болтливости?

Ответы [ 3 ]

9 голосов
/ 18 мая 2009

NHibernate совсем не болтает. Что касается масштабируемости, то уже был вопрос о группах NH , который больше касался сложности базы данных, чем трафика, но все же может быть интересен для вас.

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

NHibernate довольно легкий по сравнению с другими ORM и по сравнению с его мощными функциями.

NHibernate (как и любой другой ORM) можно считать излишним, если нет объектно-ориентированной бизнес-модели, но вам необходимо оптимизировать ее для достижения максимальной производительности. Я не думаю, что Google мог бы использовать NHibernate для своей поисковой системы, например.


Изменить:

Производительность и мощь NHibernate не полностью бесплатны. Требуется, чтобы разработчики понимали хотя бы основы реляционных баз данных. Другие ORM пытаются скрыть всю реляционную проблематику, что приводит к гораздо более неоптимизированному поведению.

1 голос
/ 11 декабря 2012

nHibernate - профессиональная шутка. В моей компании его использование было запрещено по нескольким причинам. Как инструмент довольно непродуктивно; Вы потратите бесчисленные часы, пытаясь выяснить или найти альтернативные стратегии в скудной документации.

Гораздо лучше, используйте собственные сгенерированные DAL и SP для достижения высокой производительности. У вас будет кэшированный план выполнения, и в конце концов это то, что действительно имеет значение.

nHibernate не имеет расширенной поддержки memcached, что особенно важно, если вы собираетесь создавать масштабируемое веб-решение, такое как Facebook.

Я работаю в социальной игровой компании, и мы специально запретили использовать nhibernate, в частности.

0 голосов
/ 06 марта 2013

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

Это все очень помогает, но пока вы загружаете базу данных с большой нагрузкой, у вас будут проблемы с масштабированием. Лучший способ масштабирования базы данных - минимизировать время, которое вам фактически придется использовать. Распределенный кеш, такой как memcache, и кеширование выходных данных (представления после пост-данных или html) - лучшие способы масштабирования приложения. Если клиенты регулярно обращаются к базе данных, вы делаете это неправильно, ORM или нет. В приложении .NET, как и в типичном приложении MVC, есть преимущества, заключающиеся в возможности использования различного кэширования вывода, кэширования пончиков и пончиков, а также клиентов для использования memcache с NHibernate и для ваших моделей представления.

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