.NET, JSON, Embedded, бесплатное решение для управления коммерческим использованием данных? Что делать?
Я пытаюсь разработать решение для управления данными для коммерческого продукта, отвечающего нескольким критериям. Критерии и мои рассуждения таковы:
- Решение должно быть в С# или поддержке С#
- Управление данными как JSON
- Обслуживание внешних схем
- Возможность кэшировать некоторые или все данные в памяти и сохраняться на диске
- Не требуется дополнительная установка
- Если решение включает стороннее программное обеспечение, лицензия должна поддерживать бесплатное коммерческое использование
Требование № 1. Мое приложение написано на С#, и я бы предпочел, чтобы любое решение не включало интеграцию с приложениями, библиотеками или кодом на другом языке.
Требование № 2. Существует несколько инструментов и библиотек, основанных на JSON, которые я бы хотел использовать, поэтому мне нужно решение, в котором данные либо легко конвертируются в/из JSON, либо легко конвертируются.
Требование № 3. Я хочу избежать обслуживания схемы, которое поставляется с использованием реляционных баз данных. Я предпочитаю управлять несогласованными сопоставлениями данных в объекте в коде и обновлять старые данные кода вместо управления отдельными обновлениями схемы.
Требование № 4. Мне нужно, чтобы некоторые или все данные загружались в память в любое время и все данные сохранялись на диске. Сохраняются ли данные в памяти или нет, они должны быть необязательными для каждого типа данных.
Требование № 5. При установке моего продукта я не хочу иметь никаких дополнительных установок или других внешних служб, кроме моего приложения. Лучше всего использовать самодостаточное решение.
Требование № 6. Предполагаемое использование предназначено для распределенного коммерческого продукта. Я бы предпочел избежать каких-либо дополнительных сборов или проблем с лицензированием, которые поставляются со многими сторонними решениями.
На сегодняшний день я попробовал несколько решений. Первоначально у меня не было столько ограничений, и я пошел с SQLite.NET, и его использование не было неприятным, но накладные расходы от обслуживания схемы и формата данных были больше, чем я хотел бы. Я исследовал множество решений NoSQL (например, RavenDB), другие сторонние решения (Karvonite) и простые реализации хранилища файлов JSON, но я не удовлетворены любым из них.
Есть ли специальный подход или решение, которые мне не хватает, что кто-то еще успешно использовал? Я надеюсь, что просто пропущу опции, которые мне нужны, и что некоторые эксперты NoSQL и .NET имеют достаточный опыт в этой области, чтобы указать мне в правильном направлении.
EDIT. Если какие-либо исходные комментаторы запутались, я обновил вопрос и заголовок, чтобы лучше придерживаться политик SO.
Ответы
Ответ 1
Fluent NHibernate Automapping поверх SQLite будет отвечать всем вашим требованиям, кроме edit # 2 - "NoSQL, предпочтительно все данные являются документом JSON"
Он автоматизирует реляционную схему БД из вашей объектной модели... не использует JSON. edit Возможно, вы сможете сохранить данные JSON как BLOB. (предостережение: я почти ничего не знаю о JSON)
Ответ 2
Вы взглянули на Karvonite Framework? Karvonite Framework предоставляет строго типизированную встроенную систему баз данных, которая включает в себя переносимую библиотечную реализацию для .NET/Windows Store/Silverlight/Windows Phone/Xbox. Я использовал это только для небольших реализаций баз данных, но до сих пор он отвечал всем моим потребностям.