Первый шаг — сделать шаг назад и оценить требования вашего бизнеса. Разрешите ли вы пользователям обновлять информацию с помощью форм во внешнем интерфейсе? Вам нужен древовидный редактор контента в бэк-офисе? Вам нужно работать с данными вне встроенного ORM?
Если ответ на этот вопрос отрицательный, поставщик улья — это излишество. Оценивайте решения с помощью простых контроллеров поверхности или просто пользовательского типа документа. а>. Umbraco 5 — это полноценная система EAV/CR, поэтому, в отличие от некоторых продуктов CMS, вы сможете представить любую структуру rdbs, которую только можете себе представить.
ContentExample может быть представлен как тип документа под названием «Статья», который имеет свойства «Заголовок» и «Текст». Просто определив этот тип документа, мы мгновенно получаем формы добавления и редактирования для наших пользователей бэк-офиса в нашем разделе контента. Мы даже можем ограничить, какие узлы могут иметь дочерние элементы типа «Статья», например, Новости.
Точно так же элемент управления загрузкой — это тип поля, который позволяет вам прикреплять файлы к вашему документу.
Итак, какой смысл в пользовательском поставщике ульев?
Цель пользовательского поставщика кустов — унифицировать действия CRUD для уровней доступа к данным. В результате данные могут храниться во встроенной форме nhibernate, настраиваемых таблицах, RSS-каналах или даже в плоских файлах, при этом для их извлечения и обновления используется общий интерфейс. Если это похоже на то, к чему вы стремитесь, читайте дальше.
Возвращаясь к бизнес-требованиям, в частности, где вы хотите фактически хранить данные? Учитывая, что у вас есть некоторые поля и свойства, связанные с хранением неструктурированных файлов, скажем, что один TypedEntity (модель ) эквивалентен одному файлу и напишите некоторый псевдокод:
Первый шаг, как вы говорите, «получить данные в репозиторий». Это включает в себя возврат к этому шаблону VS и заполнение «нереализованных» методов вашей логикой для хранения и извлечения данных.
protected override void PerformAddOrUpdate(TypedEntity entity)
{
// step 1: serialize the typed entity to xml
// step 2: write the file to the hdd, making sure that the file name is named using the hive id so that we can pull it back later.
}
После того, как вы написали уровень доступа к данным, или DAL, вы можете подключить его в конфигурации куста, указав соответствующий URL-адрес. например вместо того, чтобы совпадать с содержимым:\\, ваше может совпадать в файловом менеджере:\\
Мы можем разрешить пользователям нашего бэк-офиса добавлять новые объекты (косвенно, новые файлы), написав собственное дерево, и мы можем отображать результаты нашим внешним пользователям с помощью макросов.
person
seraphym
schedule
18.06.2012