Использование только ServiceStack для веб-служб и веб-служб
Новая поддержка Razor View Engine в ServiceStack
Значительное улучшение HTML-истории ServiceStack было добавлено в v3.9.11 в Пакет ServiceStack.Razor NuGet .Благодаря этой поддержке ServiceStack теперь полностью переходит на полную платформу веб-сайтов и веб-сервисов, которая предлагает гораздо более простую замену WCF, MVC и WebApi.
Полная документация, объясняющая новую HTML-историю ServiceStack с поддержкой Razor, содержится в Razor Rockstars демонстрационный веб-сайт:
Полная документация, объясняющая поддержку Razor и описывающая его функции, поясняется в ссылках выше.
ПростоКаркас службы REST с форматом HTML
HTML-тип контента был добавлен в ServiceStack точно так же, как вы ожидаете от настоящей инфраструктуры сервиса REST, т.е. вы можете просто добавить Razor Views для улучшения существующих сервисов, которые получат толькоиспользуется, когда клиент запрашивает text/html
Content-Type (без влияния на существующий зарегистрированныйrmats).Например, сервис / rockstars REST по-прежнему доступен во всех других типах контента:
Кроме того, если ваши сервисы имеют атрибут [ClientCanSwapTemplates]
, клиент может поменять местами представления и шаблоны страниц, например, вот та же страница выше с:
Естественное принятие ServiceStack формата HTML таким способом упрощает разработку 1 набора служб, которые могут обслуживать как HTML, так и полнофункциональные мобильные и настольные клиенты.
Другие способы обслуживания HTML
Перед добавлением поддержки Razor существует несколько стратегий обслуживания HTML-страниц с помощью ServiceStack:
Использование sthtml-страница atic с вызовами ajax
Если вы делаете веб-запрос для существующего файла, он возвращается с помощью обработчика статических файлов.Затем вы можете просто сделать ajax json обратными вызовами к вашим веб-службам для динамического создания страницы.
Магистральное приложение TODO в Windows Service AppHost Starter Template работает таким образом.(а также большинство других примеров проектов в ServiceStack: -)
Возвращает строку
Любая строка , возвращаемая из ваших веб-служб, напрямую записывается в поток ответов 'как-is ', так что вы можете просто вернуть HTML, используя собственное решение HTML шаблонизатора.
Вот список других возможных типов возврата в ServiceStack и способы их обработки.
Использование Markdown Razor
Механизм просмотра, встроенный вServiceStack - Markdown Razor - который был вдохновлен Razor MVC, но с использованием синтаксиса Markdown.Это вполне расширяемая поддержка пользовательского базового класса и методов расширения / утилит.
Приятной особенностью использования Markdown Razor является тот же веб-сервис, который возвращает json, xml и т. Д., Также может быть моделью представления для динамически генерируемой html-страницы.по тому же адресу.
Примером этого является веб-сервис категории , результаты которого вы можете увидеть здесь: http://www.servicestack.net/docs/category/Framework
и тот же сервис снова в JSON , XML и т. Д. Вы также можете извлечь частично сгенерированную html-страницу (без шаблона), а также динамически сгенерированную уценку .
Страница была создана с использованием модели DTO / представления веб-сервисов, которая была отправлена этому представлению MarkdownRazor https://raw.github.com/ServiceStack/ServiceStack.Examples/master/src/Docs/Views/Category.md
Если вы указали страницу Markdown Razor для своего веб-сервиса, она используется поверх стандартного отчета JSON HTML5 , который вы видите сейчас.
Порядок разрешения, который ServiceStack использует для разрешения соответствующего шаблона Markdown, который будет использоваться для рендеринга вывода HTML:
- Если веб-служба указывает шаблон (через настраиваемый ответ IHttpResult.TemplateName)- затем Представление с этим именем.
- Представление с тем же именем, что и DTO Response, сначала просматривая в / Views, затем в / Views / Shared
- Представление с тем же именем, что иЗапросите DTO, просматривая сначала в / Views, затем в / Views / Shared
Host ServiceStack в / custompath
ServiceStack можно использовать вместе с существующим веб-приложением ASP.NET или без него.,Если ваше приложение HTML-интенсивное и REST-Services-light , общий подход заключается в размещении ServiceStack в / custompath (например, / api), чтобы вы моглииспользуйте ASP.NET для генерации всех HTML-страниц.
Если вместо этого используется ASP.NET MVC, вам нужно игнорировать маршрут в MVC Global.asax RegisterRoutes () :
routes.IgnoreRoute ("servicestack/{*pathInfo}");