¿Es posible servir páginas HTML con ServiceStack?


Estoy evaluando ServiceStack para su uso en un Servicio de Windows para alojar servicios REST. Hasta ahora, es excelente y supera a WCF. Sin mencionar que es mucho más fácil de usar.

Los servicios de Windows mencionados anteriormente deben ser capaces de proporcionar una página HTML simple para servir como un "tablero". ServiceStack, por supuesto, se utilizaría para proporcionar datos json para el panel, pero ¿qué hay de servir la página del panel, junto con imágenes y js? ¿Sería esto posible? Preferiría no ser anfitrión. en toda regla ASP.Net y tienen una limitación estricta de que IIS nunca se ejecutará en estos servidores. La escalabilidad tampoco debería ser un requisito, ya que solo una sola máquina de administración mostraría el panel.

Author: Mateen Ulhaq, 2011-11-20

1 answers

Usando solo ServiceStack para web y servicios web

Soporte para el nuevo motor Razor View de ServiceStack

Se agregó una mejora significativa a la historia HTML de ServiceStack en v3.9.11 en el ServiceStack.Razor NuGet package . Con este soporte ServiceStack ahora se gradúa a un sitio web completo y un marco de servicios Web que ofrece un reemplazo mucho más simple para WCF, MVC y WebAPI.

Documentación completa que explica la nueva historia HTML de ServiceStack con Razor El soporte se mantiene en el sitio web de demostración Razor Rockstars :

La documentación completa que explica el soporte de Razor y describe sus Características se explica en los enlaces anteriores.

Solo un framework de Servicio REST con formato HTML

El El tipo de contenido HTML se ha agregado a ServiceStack tal y como se esperaría de un verdadero marco de servicios REST, es decir, simplemente puede agregar Vistas Razor para mejorar sus servicios existentes que solo se usarán cuando el cliente solicite el Tipo de contenido text/html (sin efecto en los formatos registrados existentes). Por ejemplo, este servicio REST /rockstars todavía se puede acceder en todos los demás Tipos de contenido:

Además, si sus servicios tienen el atributo [ClientCanSwapTemplates], el cliente puede intercambiar las Vistas y Plantillas de páginas en tiempo de ejecución, por ejemplo, aquí está la misma página anterior con:

La adopción natural del formato HTML de ServiceStack de esta manera, hace que sea trivial desarrollar 1 conjunto de servicios que puedan servir tanto a HTML como a clientes de escritorio y móviles nativos ricos.

Otras formas de servir HTML

Antes de que se agregara el soporte de Razor, hay un par de estrategias para servir páginas HTML con ServiceStack:

Utilice una página html estática con llamadas ajax

Si realiza una solicitud web para un archivo existente, se se devuelve con el Manejador de archivos estáticos. A continuación, simplemente puede hacer llamadas ajax json a sus servicios web para generar dinámicamente una página.

La aplicación TODO Backbone en la Plantilla de inicio de Windows Service AppHost funciona de esta manera. (así como la mayoría de los otros proyectos de ejemplo en ServiceStack: -)

Devuelve una cadena

Cualquier cadena devuelta desde sus servicios web se escribe directamente en el flujo de respuesta 'tal cual', por lo que simplemente puede devolver html usando su propia solución de plantillas html.

Aquí hay una lista de otros posibles tipos de retorno en ServiceStack y cómo se tratan.

Usando Maquinilla de afeitar Markdown

El motor de vista integrado en ServiceStack es Markdown Razor-Que se inspiró en Razor de MVC, pero utilizando la sintaxis de Markdown. Es bastante extensible soportando clases base personalizadas y métodos/utils de extensión.

Una buena característica de usar Markdown Razor es su mismo servicio web que devuelve json, xml, etc. también pueden ser un modelo de vista para una página html generada dinámicamente en la misma url.

Un ejemplo de esto es el servicio web de la categoría del que puedes ver los resultados aquí: http://www.servicestack.net/docs/category/Framework

Y el mismo servicio de nuevo en JSON, XML, etc. También puede recuperar la página html parcialmente generada (sin la plantilla) así como la generada dinámicamente markdown .

La página se creó utilizando el modelo DTO/view de servicios web que se envió a esta vista de MarkdownRazor https://raw.github.com/ServiceStack/ServiceStack.Examples/master/src/Docs/Views/Category.md

Si ha especificado una página de Razor Markdown para su servicio web, se usa sobre el informe JSON HTML5 predeterminado que ve ahora.

La orden de resolución que ServiceStack utiliza para resolver la plantilla de Markdown apropiada para la salida HTML de renderizado es:

  • Si el Servicio Web especifica una plantilla (a través de un IHttpResult personalizado.Respuesta templateName) - luego una vista con ese nombre.
  • Una vista con el mismo nombre que el DTO de respuesta, mirando primero en /Views y luego en /Views/Shared
  • Una vista con el mismo nombre que el DTO de solicitud, mirando primero en /Views y luego en /Views/Shared

Host ServiceStack en a / custompath

ServiceStack se puede utilizar junto con o sin un existentes ASP.NET aplicación web. Si su aplicación es HTML-heavy y REST-Services-light un enfoque común es alojar ServiceStack en un / custompath (por ejemplo, / api) para que pueda usar ASP.NET para toda la generación de páginas HTML.

Si se usa ASP.NET MVC en su lugar, debe ignorar la ruta en Global de MVC.asax Rutas de registro():

routes.IgnoreRoute ("servicestack/{*pathInfo}");
 55
Author: mythz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:51:38