Blog Engine .NET с XML-хранилищем данных Как это быстро? - PullRequest
0 голосов
/ 17 февраля 2010

Я ищу способ встроить блог-движок в мое собственное приложение, и мне слишком любопытен алгоритм Blog Engine.

Возможно, это не то место, где нужно спрашивать, но как это возможно для хранения данных записей блога в файле XML, например BlogEngine.Net с конфигурацией по умолчанию. Он должен работать медленнее каждый день, пока файл становится все больше и больше.

Мне интересно алгоритм, стоящий за этим. Это загрузка другим способом? Или я ошибся с оценкой времени?

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

Ответы [ 3 ]

2 голосов
/ 10 апреля 2013

Как можно хранить данные записей блога в файле XML, например BlogEngine.Net с конфигурацией по умолчанию. Должно быть медленнее каждый день, пока файл становится все больше и больше.

Каждый пост хранится в виде отдельного XML-файла с именем файла GUID.

Когда система запускается или перезагружается, если через 30 минут бездействия система просматривает все xml-файлы и загружает их в системную память «app_pool».

Для первого посетителя, который посетит при «холодной» загрузке, часто будет происходить более медленная загрузка страницы, чем у посетителей после них.

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

Причина, по которой это быстро, потому что оно хранится в памяти и не требует подключения к базе данных и процесса двустороннего доступа к базе данных и возврата с запрошенной страницей / публикацией.

Когда "app_pool" начинает заполняться из-за слишком большого количества постов / страниц, он начинает замедляться.

Это должно быть около 150 сообщений / страниц всего.

Когда вы наберете около 151 сообщения / страниц, вам нужно будет переключиться на использование базы данных SQL или другого поставщика, отличного от xml.

2 голосов
/ 17 февраля 2010

Загружает сообщения в память при запуске.

0 голосов
/ 17 февраля 2010

Чтобы ответить на вопрос XML, который вы задали, расширив класс ProviderBase, вы можете подключить его к любой базе данных, включая файлы XML. Для получения дополнительной информации см. Класс BlogProvider.cs и папку Providers, а также ее подпапку XmlProvider в папке BlogEngine.Core. Если вы видите файл Web.Config, вы можете увидеть код ниже.

    <blogProvider defaultProvider="XmlBlogProvider">
        <providers>
            <add name="XmlBlogProvider" type="BlogEngine.Core.Providers.XmlBlogProvider, BlogEngine.Core"/>
            <add name="DbBlogProvider" type="BlogEngine.Core.Providers.DbBlogProvider, BlogEngine.Core" connectionStringName="BlogEngine" />
        </providers>
    </blogProvider>

, изменив defaultProvider на DbBlogProvider, вы можете подключить любую СУБД, поддерживаемую BlogEngine.NET.

...