Реклама
Home Softnews Планы на Entity Framework Core 6.0 раскрыты, поскольку Microsoft признает, что вряд...

Планы на Entity Framework Core 6.0 раскрыты, поскольку Microsoft признает, что вряд ли сможет сравниться с Dapper по производительности • Реестр

Реклама


Следующая основная версия библиотеки баз данных Entity Framework (EF) для .NET от Microsoft будет иметь долгосрочную поддержку и будет пытаться сравниться с конкурирующим Dapper по производительности — попытка, по словам старшего менеджера программы Джереми Ликнесса, «вряд ли будет полностью реализована». «

Реклама

Entity Framework — это библиотека объектно-реляционного сопоставления (ORM) Microsoft, расположенная поверх ADO.Net, библиотеки баз данных нижнего уровня.

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

Сложность заключается в том, что переход от EF (также работает на .NET Framework) к EF Core (работает только на .NET Core) был ухабистым. Последней версией EF была 6.2 в 2017 году. EF Core был полностью переписан, а не заменял его. Некоторые функции EF, такие как возможность обновлять классы моделей из базы данных, были в очереди EF Core для более шести лет. С другой стороны, у EF Core есть некоторые функции, которых не хватает EF.

EF Core 6.0 запланирован на ноябрь 2021 г., по словам Ликнессаи будет выпуском LTS (долгосрочная поддержка), связанным с .NET 6 (обратите внимание, что все будущие версии .NET основаны на .NET Core, а не на .NET Framework.)

Новые функции включают поддержку темпоральных таблиц SQL Server (таблиц, в которых хранится история изменений данных); Поддержка столбцов JSON; улучшенная поддержка миграции (бизнес по обновлению базы данных из объектной модели в коде); и поддержка всех запросов, которые работают в EF 6.x. Также есть планы по улучшению поставщика Cosmos DB, в том числе для многомодельной службы базы данных Azure от Microsoft и полного поиска по произвольному тексту для SQLite и SQL Server.

Читайте также:
PayPal заявляет, что во время эпидемии COVID-19 продуктивность разработчиков подскочила на 30% °

По словам Ликнесса, также ведется работа над ADO.NET, в том числе новый пакетный API для отправки нескольких запросов за одну операцию, и в поставщик SQLite вносятся улучшения для поддержки пула соединений и подготовленных операторов.

Экспериментальные функции, «без каких-либо конкретных результатов», включают переписанный драйвер SQL Server с использованием «современных функций .NET» под названием SQLServer.Core; и лучшая поддержка GraphQL в .NET.

Пытаюсь поймать Даппера

Производительность — еще одна большая проблема. Планы включают скомпилированные модели и улучшение работы EF Core с компоновщиками и AOT, где AOT является опережающей компиляцией. «Мы планируем достичь уровня производительности Dapper в тесте TechEmpower Fortunes», — заявил Ликнесс, добавив: «Это серьезная задача, которая, скорее всего, не будет полностью решена».

ORM различаются по уровню абстракции. EF очень абстрактен. Альтернативой в мире .NET является Dapper, легкий, описывая себя как «простой объектный преобразователь для .NET». Dapper по-прежнему требует от разработчика написания SQL, но закрывает бизнес по отображению результатов в объекты .NET и обратно. Производительность может быть близка к сырой ADO.NET.

Элементы в шаблоне в ASP.Net Core, для быстрого добавления функций базы данных используйте Entity Framework

Элементы в шаблоне в ASP.Net Core, для быстрого добавления функций базы данных используйте Entity Framework

Посмотрите на Тесты TechEmpower показывает, что самый эффективный стек .NET для одиночных запросов — это ASP.NET Core с ADO, набрав 318 164 балла. Оценка Dapper ORM составляет 247 280 баллов. Лучший результат EF — 116 496. Обратите внимание, что это с PostgreSQL; SQL Server от Microsoft не включен в тесты по причинам лицензирования.

Читайте также:
Как мы можем вам теперь доверять? • Реестр

Чтобы догнать Dapper, EF Core пришлось бы устранить накладные расходы по сравнению с простой отправкой SQL на сервер базы данных. Маловероятно, что команда сможет сделать это без обхода функций, которые являются ключевыми для ценности, предоставляемой EF. Это уже возможно с использованием необработанных SQL-запросов в EF, но это не решает проблем производительности с EF, как обычно.

ORM — это пример того, что разработчик Джоэл Спольски дублированный «дырявая абстракция».

По его словам, абстракция — это «упрощение чего-то гораздо более сложного, что происходит под покровом», а утечки представляют «вещи, от которых абстракция не может вас полностью защитить».

Спольски описал SQL, общий язык запросов к базе данных, как дырявую абстракцию, которая делает ORM дырявой абстракцией или дырявой абстракцией.

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

Вторая проблема заключается в том, что ORM имеют свою сложность, которая может быть такой же плохой, как и сложность, от которой они пытаются вас защитить.

Если вы прочтете отношения «многие ко многим» в EF, вы можете сделать вывод, что синтаксис SQL JOIN не сложнее изучить и более точен в использовании. Контраргумент состоит в том, что идеальная ORM могла бы генерировать лучше оптимизированный SQL, чем может достичь большинство разработчиков.

Читайте также:
Google начинает бета-тестирование Trips, нового компаньона в путешествии

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

Производительность и сложность EF, когда разработчики выходят за рамки простых приложений, становятся немалыми. Microsoft подталкивает разработчиков к EF, а также к SQL Server в том, как он представляет и документирует платформу .NET.

Следовательно, производительность EF также влияет на восприятие производительности .NET. EF всегда будет играть важную роль в обеспечении высокой производительности в некоторых случаях использования, но, учитывая отличные результаты Dapper, Microsoft может подумать о том, чтобы придать этой альтернативе больше внимания, вместо того, чтобы пытаться соответствовать ей, но планировать неудачу. ®

Сноска

Dapper возник в StackOverflow, фаворите разработчиков скопировать и вставить сайт вопросов и ответов, соучредителем которого является Спольски. Но Даппер был впервые разработан Сэма Шафрана, который впоследствии основал Discourse, приложение для обсуждения на Ruby on Rails.

Реклама

NO COMMENTS