1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fastdev-OF.SmartMVC

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение

Ранее в интернете я нашёл неплохой открытый проект, основанный на MVC. Однако после запуска я обнаружил, что он работает гораздо медленнее, чем ожидалось. После изучения кода я понял, что узкое место было не в чтении базы данных, как я предполагал. После нескольких попыток я обнаружил, что наиболее затратным по времени процессом была работа внутри фреймворка MVC. В проекте использовалось слишком много методов Html.partial, Html.Action и RenderPartial, а их реализация в MVC была довольно сложной, что приводило к снижению производительности.

Поскольку MVC также реализован с использованием Razor-синтаксиса, моей первой мыслью было найти более эффективный RazorEngine и попробовать его. Позже я нашёл реализацию RazorEngine в интернете и обнаружил, что она значительно быстрее, чем MVC для выполнения аналогичных функций.

Реализация

Кроме того, этот фреймворк сам по себе очень мощный и предоставляет различные методы, такие как прямая компиляция строк и компиляция шаблонов. Однако скомпилированные dll хранятся во временных файлах, и каждый раз создаётся новый файл. Учитывая потребности реального проекта, я сделал некоторые улучшения и обёртку на основе этого фреймворка:

  1. Соответствующие шаблоны cshtml были помещены в отдельный проект библиотеки классов, а свойство файла было установлено как «встроенный ресурс». Кроме того, я переписал ключевые классы, чтобы процесс компиляции генерировал файлы в указанном каталоге (с настраиваемым именем файла).

  2. Когда необходимо вызвать шаблон, достаточно загрузить ранее сгенерированный dll-файл, а затем вызвать общий метод, передавая имя ресурса cshtml и параметры. Используя этот метод, я сравнил производительность этого подхода с исходным MVC и обнаружил значительное улучшение скорости рендеринга. Кроме того, этот подход также может сократить время, затрачиваемое на компиляцию представлений при первом запуске веб-сайта.

Также стоит отметить, что некоторые команды MVC, такие как Section. Layout, пока не реализованы. Вместо них предоставляется команда CallFunc, которая позволяет вызывать шаблоны, передавая информацию о вызываемом подфункторе.

Описание проекта

Этот проект состоит из трёх подпроектов: 1. OF.SmartMVC.Core — библиотека классов; 2. OF.SmartMVC.TestView — библиотека шаблонов для тестирования; 3. OF.SmartMVC.Test — программа для тестирования (следует отметить, что в этом проекте используется консольное приложение, поэтому имена ресурсов имеют формат «... каталог.имя ресурса» с использованием символа . в качестве разделителя. В проектах MVC ресурсы обычно разделяются символом /).

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Использование Razor Engine для предоставления функционала программных шаблонов даёт больший прирост производительности по сравнению с Razor Engine, предоставляемым MVC. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/fastdev-OF.SmartMVC.git
git@api.gitlife.ru:oschina-mirror/fastdev-OF.SmartMVC.git
oschina-mirror
fastdev-OF.SmartMVC
fastdev-OF.SmartMVC
master