Локальная база данных с Silverlight

Какой была бы хорошая локальная база данных для приложения Silverlight? Основное назначение базы данных - локальные службы кэширования и синхронизации данных. Я не верю, что SQL в любом месте или SQLite будут работать, поскольку они используют неуправляемый код, который не будет работать в песочнице Silverlight.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
0
6 146
9

Ответы 9

@ Аарон Фишер,

Меня тоже очень интересует этот вопрос. Я ищу БД для приложений XBAP (WPF в браузере). Вот мой вопрос «Какую встроенную базу данных с поддержкой изолированного хранилища вы можете порекомендовать?»

SQLite и MSSQL CE (также известный как SQL) не работают.

VistaDB реализована в .NET и может работать с ограничениями (она поддерживает изолированное хранилище), но я ищу альтернативы.

Другой вариант - Sybase iAnywhere, но я не знаю, как развернуть его на машине конечного пользователя.

Я собираюсь попробовать DB4objects для Silverlight. Если получится, обновлю пост.

Существует также TurboDB, который управляется "на 100%" dataweb.de/en/products/dotnet_database.html. Не уверен, стоит ли это тоже оценивать.

Aaron Fischer 21.09.2008 21:32

На основе этого пример кажется возможным использовать Google Gears и, следовательно, Sqlite. Основным недостатком является объем работы по интеграции и необходимость установки еще одной платформы на клиентском компьютере.

Я думал о Google Gears, но решил, что это будет тоже много накладных расходов

aku 22.09.2008 02:46

Если ваши потребности в кэшировании достаточно просты, и у вас не так много данных, чтобы минимизировать использование ОЗУ, возможно, вам даже не нужна полноценная база данных. Вы можете создать своего рода объектную базу данных, используя такую ​​структуру, как словарь, и поместить в нее объекты, которые в противном случае были бы строками вашей таблицы. Затем вы можете сериализовать эти данные в файл в локальном хранилище и десериализовать его при следующем запуске приложения. Если ваши структуры данных выполнены хорошо, вы даже можете использовать Linq для запроса своей объектной базы данных.

Если ваша основная цель - свести к минимуму количество раз, когда вам нужно извлекать одни и те же данные с вашего сервера, это можно рассмотреть.

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

Если у вас слишком много данных, но вы все же хотите попробовать это, вы можете увидеть, есть ли логический способ разделить ваши данные на несколько файлов, которые вряд ли понадобятся одновременно. Затем вы можете выгружать неиспользуемые данные на диск и загружать их в следующий раз, когда они понадобятся программе. Конечно, если вы зайдете слишком далеко в этом подходе, вы все равно в конечном итоге напишете свою собственную систему баз данных.

Я бы хотел увидеть две вещи. 1.) Какая-то постоянная поддержка локальной базы данных или 2.) Какая-то реальная поддержка сервера базы данных без хлопот с веб-службами.

Лично я бы взял Access и OleDb. :)

И последнее ... что тип функциональности базы данных - это то, чего Flash / Flex не предлагает ... это было бы отличным способом для Microsoft отличить Silverlight и действительно дать ему преимущество.

Почему бы не использовать новую функцию SL 2 под названием «Изолированное хранилище»? Он полностью поддерживается в локальной базе данных (например, Google Gear), но, конечно же, это не база данных. Вы можете использовать формат файла XML, чтобы сохранить его.

  • плюсы; Пользователю просто нужно установить среду выполнения SL.
  • минусы; Это не совсем база данных

Найдите две ссылки:

Об этом Мотылек сообщил в своем блоге http://www.danielmoth.com/Blog/2008/04/isolatedstorage-in-siverlight-2-beta-1.html Дино сделал очень хорошее резюме на http://www.ddj.com/windows/208300036?pgno=2

Теперь есть порт sqlite для C# под названием csharp-sqlite Это обещает, когда они найдут подходящее имя.

За исключением того, что это не реализация ADO.NET, и ее фактически нельзя использовать. Это грубый перенос C-Lib на C#. Так что, если вы хотите писать в этот интерфейс в .Net и выполнять все сопоставления самостоятельно, это может сработать, но в последний раз, когда я смотрел на порт, он не работает и, вероятно, не может без серьезной доработки для поддержки концепций изолированного хранилища.

Jason Short 27.11.2009 09:35

Ответ - siaqodb. Сиакодб - это настоящая база данных объектов на стороне клиента Silverlight, вы можете сохранить объект с помощью всего одной строчки кода и получить обратно объекты через LINQ. Для получения дополнительной информации взгляните на http://siaqodb.com.

Да, я думаю, что поставщик LINQ - оптимальное решение. Поскольку пространство для хранения ограничено, на самом деле у вас нет таблиц и индексов необходимость, было бы удобно иметь простой способ хранить и запрашивать объекты на клиенте через LINQ без необходимости иметь дело с низкоуровневыми файловыми потоками.

Как написать провайдер Linq. Это действительно непросто.

Dave Hillier 26.03.2011 16:31

Другие вопросы по теме