XML как источник данных: лучшая практика для чтения - PullRequest
0 голосов
/ 08 октября 2008

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

При написании DAL все методы get должны быть статическими? aviod и "чтение при открытии файла" ошибки? Должен ли я использовать CacheDependency для файла?

Thx

Ответы [ 2 ]

2 голосов
/ 09 октября 2008

Я думаю, что вы были не так ясны, как могли бы быть. Насколько большими будут эти файлы? Имеет ли смысл, чтобы уровень данных всегда сохранял XmlDocument в памяти и создавал дамп на жесткий диск при каждом обновлении?

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

Методы не должны быть статичными. Главное, что нужно учитывать, это то, что в будущем вы можете изменить поставщика DAL с XML на DB. С этой целью конкретная реализация интерфейсов DAL должна общаться с абстрактным поставщиком данных. Для вас это изначально был бы провайдер Xml, но вы должны быть в состоянии написать провайдера Sql, который реализует тот же интерфейс и легко переключать реализацию, используя внедрение зависимостей, файлы конфигурации или что-то еще.

Если у вас есть экземпляры реализаций DAL, вы можете просто использовать эти объекты для связи со слоем данных.

Надеюсь, это хорошее начало для вас.

0 голосов
/ 10 октября 2008

OK.

Файлы вряд ли будут большими, я подозреваю, что максимальный размер достигнет 1-2 МБ.

У меня есть интерфейс DAL, который необходимо взаимозаменяемо с БД, поэтому мне нужно тщательно подумать о моих интерфейсах.

Параллелизм, ну, я обеспокоен этим и не совсем уверен, как мне справиться с этим. Я думал, что статические методы чтения и записи помогут.

XML будет обновляться не так часто, возможно, раз в день, но это может происходить в любое время и чаще.

Я использую CacheDependancy, чтобы получать данные из источника только после изменения файла.

Будут ли у меня проблемы с чтением кэша одновременно? Так как мне справиться с проблемами параллелизма?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...