Ваш главный фокус, по моему мнению, должен состоять в том, чтобы абстрагировать ваше решение для хранения от вашего механизма хранения.
Решите, какие методы вам понадобятся SaveData,LoadData,GetSavedDataList,DeleteItem ...
, затем создайте интерфейс IStorage
.Таким образом, вы можете написать ряд различных решений, локальных + двоичных / удаленных + WCF, но не затрагивая ядро своей прикладной логики из решения для хранения.вашей основной логике не должно быть важно, откуда она сохраняет / загружает информацию.
Действительно, какое решение для хранения вы используете, решать только вам.У каждого есть свои плюсы и минусы, и никто не может дать вам 100% правильный ответ, который будет для вас лучшим.В конце дня у вас будет 3 основных задания.Хранение данных локально, передача данных на удаленный сервер, хранение данных в удаленном местоположении.
Локальное хранение может быть таким же простым, как хранение XML-файла для метаданных и двоичных файлов для изображений.Вы говорите, что не хотите устанавливать локальную БД, это механизм БД или какое-либо решение БД, можно ли будет использовать что-то вроде MsAccess / SQL CE и т. Д., Поскольку это сделает общий дизайн немного лучше?
Для вашего удаленного хранилища вы можете написать веб-сервис, который передает объект с данными изображения, тегами и т. Д., Ваша локальная система не должна знать ничего другого, если вы хорошо разрабатываете свой код с хорошей абстракцией / развязкой и имеетевеб-сервис (на стороне сервера), сохраните данные в базе данных, используя LINQ.
Есть много способов сделать скин для этого кота, без сомнения, вы получите множество других советов от остального сообщества SO.