dell servicestack

dell - ¿Es posible servir páginas HTML con ServiceStack?



servicestack ormlite (1)

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 que sirva de "panel". ServiceStack, por supuesto, se utilizará para proporcionar datos JSON para el tablero, pero ¿qué pasa con la página del tablero, junto con imágenes y js? ¿Sería esto posible? Preferiría no hospedar ASP.Net completo y tener 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 única máquina de administración mostraría el panel.


Usar solo ServiceStack para servicios web y web

Nuevo soporte Razor View Engine de ServiceStack

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

La documentación completa que explica la nueva historia HTML de ServiceStack con Razor Support se mantiene en el sitio web de demostración de 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 marco de servicio REST con formato HTML

El tipo de contenido HTML se ha agregado a ServiceStack tal como lo esperaría de un verdadero marco de servicio REST, es decir, simplemente puede agregar Razor Views para mejorar sus servicios existentes que solo se utilizarán cuando el cliente solicite el text/html Content- Tipo (sin efecto en los formatos registrados existentes). Por ejemplo, se puede acceder al servicio REST /rockstars 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 de ServiceStack del formato HTML de esta manera hace que sea trivial desarrollar 1 conjunto de servicios que puedan servir tanto a HTML como a clientes nativos ricos de escritorio y dispositivos móviles.

Otras formas de servir HTML

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

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

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

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

Devolver una cadena

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

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

Usando Markdown Razor

El motor de visualización integrado en ServiceStack es Markdown Razor , que se inspiró en Razor de MVC pero que usa la sintaxis de Markdown. Es bastante extensible y admite métodos y utilidades de clase base y extensión personalizados.

Una buena característica de usar Markdown Razor es su mismo servicio web que devuelve json, xml, etc. También puede 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 categoría, que puede ver los resultados de aquí: http://www.servicestack.net/docs/category/Framework

y el mismo servicio otra vez en JSON , XML , etc. También puede recuperar la página html parcialmente generada (sin la plantilla) y el descuento generado dinámicamente .

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

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

El orden de resolución que utiliza ServiceStack para resolver la plantilla Markdown apropiada para usar para representar la salida HTML es:

  • Si el Servicio web especifica una plantilla (a través de una respuesta personalizada IHttpResult.TemplateName), entonces una Vista con ese nombre.
  • Una vista con el mismo nombre que el DTO de respuesta, buscando primero en / Vistas y luego en / Vistas / Compartido
  • Una vista con el mismo nombre que el DTO de solicitud, buscando primero en / Vistas y luego en / Vistas / Compartido

Host ServiceStack en un / custompath

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

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

routes.IgnoreRoute ("servicestack/{*pathInfo}");