Можно ли обслуживать HTML-страницы с помощью ServiceStack? - PullRequest
31 голосов
/ 20 ноября 2011

Я оцениваю ServiceStack для использования в службе Windows для размещения служб REST. Пока что это отлично и намного превосходит WCF. Не говоря уже о том, что его гораздо проще использовать.

Службы Windows, упомянутые выше, должны быть в состоянии предоставить простую HTML-страницу, которая будет служить «панелью мониторинга». ServiceStack, конечно, будет использоваться для предоставления данных json для панели мониторинга, но как насчет обслуживания страницы панели мониторинга вместе с изображениями и js? Будет ли это возможно? Я бы предпочел не размещать полноценный ASP.Net и иметь строгое ограничение, что IIS никогда не будет работать на этих серверах. Масштабируемость также не должна быть обязательной, поскольку только одна машина администратора будет отображать панель мониторинга.

1 Ответ

55 голосов
/ 20 ноября 2011

Использование только 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}");
...