MS Sql Server CE : какая dll для чего нужна?

12 окт. 2010 г. | | |

После установки MS SQL Server CE мы получаем целый набор dll-файлов. Для чего нужна какая dll? Что нужно добавлять в проект, а что нет? Сейчас будем разбираться.

Для начала посмотрим на такую замечательную картинку:


На этой картинке хорошо видно, из каких компонент состоит SQL Server CE.
Синим цветом обозначены компоненты ядра (Storage Engine, Query Processor), которые должны быть обязательно для работы с сервером.
Зеленым и фиолетовым выделены опциональные компоненты. Фиолетовые (ADO.NET Provider, Managed Extensions, OLEDB Provider) зависят от выбранной модели доступа к БД. Зеленые компоненты подключаются по желанию - хотите вы работать с LINQ2SQL или нет = подключаете соответствующий компонент или нет.
Теперь определимся, в какой дллке что находится (XX в конце имени dll-файла обозначают версию SQL Server CE. Например, для SQL Server CE 3.5 XX надо заменить на 35, для SQL Server CE 4.0 соответственно на 40) :
Storage Engine -  sqlceseXX.dll
Query Processor - sqlceqpXX.dll
OLEDB Provider - sqlceoledbXX.dll
DB Utilities - sqlcecompactXX.dll
Managed Extensions - sqlcemeXX.dll
Merge Replication, Remote Data Access - sqlcecaXX.dll
Sync Services:
         Client Sync Provider - Microsoft.Synchronization.Data.SqlServerCe.dll
         Sync Common - Microsoft.Synchronization.Data.dll
         Server Sync Provider - Microsoft.Synchronization.Data.Server.dll
ADO.NET Provider (ADO.NET v2 Provider) - System.Data.SqlServerCe.dll
LINQ/Entities (ADO.NET v3 Provider), Entity Framework - System.Data.SqlServerCe.Entity.dll
LINQ/SQL не требуется отдельной dll для подключения
Error Messages - sqlceer35en.dll (для локализации меняем EN в названии файла на нужную локаль)
Теперь займемся простой арифметикой, а после посмотрим, когда и что применять :)
1) Core Engine = Storage Engine + Query Processor = sqlceseXX.dll + sqlceqpXX.dll
2) Core Engine Native = Core Engine + OLEDB  = sqlceseXX.dll + sqlceqpXX.dll + sqlceoledbXX.dll
3) Core Engine Managed = Core Engine + ADO.NET + Managed Extensions =  sqlceseXX.dll + sqlceqpXX.dll + System.Data.SqlServerCe.dll + sqlcemeXX.dll
Вот такая простая арифметика.
А теперь, главный вопрос - что же и когда использовать?
Если приложение использует нативный код и подключается к компакт серверу только локально, без всяких Sync-сервисов, то приложению потребуется только dll-набор для Core Engine Native
Если мы пишем приложение на управляемом коде и , опять же, работаем с Sql Server CE только локально, то нужен dll-набор для Core Engine Managed. При этом в приложении мы можем использовать LinQ/SQL. Но если вдруг мы захотим использовать LINQ/Entities, придется подключить дополнительно System.Data.SqlServerCe.Entity.dll.
Если захотим в приложении сделать возможность репликации, то в зависимости от того, как пишем (native или managed) будет Core Engine Native / Managed + sqlceca35.dll.
И так далее: к ядру (native/managed) плюсуем дополнительные библиотеки в зависимости от потребностей.
Данный пост использует материалы http://blogs.msdn.com/b/laxmi/archive/2009/10/07/sql-ce-binaries-details.aspx

0 коммент.:

Отправить комментарий