Написание собственного провайдера Hive с использованием объектов в качестве источника данных

Я пытаюсь создать провайдера улья, который сможет работать с некоторыми объектами.

Объект может выглядеть примерно так

public class MyContent
{
    public System.Collections.Generic.List Content { get; set; }
}

public class ContentExample
{
    public string Title { get; set; }
    public string Text { get; set; }
}

public class MyFiles
{
    public System.Collections.Generic.List Files { get; set; }
}

public class FileExample
{
    public System.IO.FileInfo File { get; set; }
}

Я скачал и проверил двух поставщиков Hive из галереи Visual Studio (Umbraco 5 Hive Provider и Umbraco 5 Simple Hive Provider), но отсутствие документации немного беспокоит. Я также скачал некоторые другие примеры кустов, например провайдер кустов Wordpress, но он несколько отличается от тех, что в галерее Visual Studio.

Идея

Я привык работать с такими вещами, как ObjectDataSource, приведенный выше пример может быть дополнен полным CRUD, если требуется.

Теперь я предполагаю, что один поставщик Hive сможет обслуживать различные части Umbraco с контентом (верно?). Просто создать новый репозиторий и идти? Теперь у меня есть подсказка, как соединить все детали или даже как получить данные в провайдере.

Любая помощь в том, как я мог собрать все части вместе?

Спасибо

1 ответ

Решение

Первый шаг - сделать шаг назад и оценить ваши бизнес-требования. Вы позволите пользователям обновлять информацию с помощью форм в веб-интерфейсе? Вам нужен редактор дерева для контента в backoffice? Вам нужно работать с данными вне встроенного ORM?

Если ответ "нет", улей-провайдер излишне убит. Оцените решения, используя либо простые контроллеры поверхности, либо просто пользовательский тип документа. Umbraco 5 - это полноценная система EAV/CR, поэтому, в отличие от некоторых продуктов CMS, вы сможете представлять любую структуру rdbs, которую только можете себе представить.

ContentExample может быть представлен в виде типа документа "Article", который имеет свойства Title и Text. Просто определяя этот тип документа, мы мгновенно предоставляем формы добавления и редактирования для пользователей нашего бэк-офиса в нашем разделе контента. Мы даже можем ограничить, какие узлы могут иметь дочерние элементы типа "Article", например, News.

Точно так же элемент управления загрузкой - это тип поля, который позволяет вам прикреплять файлы к вашему документу.

Так в чем же смысл провайдера нестандартного улья?

Цель специализированного поставщика кустов - унифицировать действия CRUD для слоев доступа к данным. В результате данные могут быть сохранены в запеченном nhibernate orm, пользовательских таблицах, 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 для соответствия. например, вместо сопоставления содержимого:\\, ваш может совпадать с файловым менеджером: \\

Мы можем позволить нашим пользователям в backoffice иметь возможность добавлять новые объекты (косвенно, новые файлы), записывая собственное дерево, и мы можем отображать результаты нашим интерфейсным пользователям через макросы.

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