可以使用ServiceStack提供HTML页面吗?

我正在评估ServiceStack以用于Windows服务以托管REST服务。 到目前为止,它非常出色,胜过WCF。 更不用说它更容易使用。

上面提到的Windows服务需要能够提供一个简单的HTML页面来充当“仪表板”。 ServiceStack当然会用于为仪表板提供json数据,但是如何为仪表板页面提供图像和js? 这可能吗? 我宁愿不主持全面的ASP.Net,并严格限制IIS永远不会在这些服务器上运行。 可伸缩性也不是必需的,因为只有一台管理员机器才会显示仪表板。


仅使用ServiceStack进行Web和Web服务

ServiceStack的新Razor View Engine支持

ServiceStack.Razor NuGet包在v3.9.11中添加了对ServiceStack的HTML故事的重大改进。 有了这个支持,ServiceStack现在可以毕业到一个完整的网站和Web服务框架,它提供了一个更简单的WCF,MVC和WebApi替代品。

在Razor Rockstars演示网站上维护完整的文档解释ServiceStack与Razor支持的新HTML故事:

  • http://razor.servicestack.net - 在Win上开发的ASP.NET Host,托管在Linux上
  • http://razor-console.servicestack.net - 在Linux上开发的独立自主主机
  • 解释Razor支持并描述其功能的完整文档在上面的链接中解释。

    只是一个HTML格式的REST服务框架

    HTML内容类型已经被添加到ServiceStack中,就像您期望从真正的REST服务框架中获得的一样,也就是说,您可以简单地添加Razor Views来增强您的现有服务,这些服务只会在客户端请求text/html Content-键入(不影响现有的注册格式)。 例如,仍然可以在所有其他内容类型中访问此/ rockstars REST服务:

  • HTML
  • JSON
  • XML
  • CSV
  • JSV
  • 此外,如果您的服务具有[ClientCanSwapTemplates]属性,则客户端可以在运行时交换页面的视图和模板,例如,上面的页面与上面的页面相同:

  • 具有客户端渲染的单页AngularJS应用程序
  • 一个不同的SimpleLayout模板
  • 带有SimpleLayout模板的AngularJS
  • ServiceStack以这种方式自然地采用了HTML格式,这使得开发一套可以同时为HTML和丰富的本地移动和桌面客户端服务的服务变得微不足道。

    其他服务HTML的方法

    在添加Razor支持之前,有一些使用ServiceStack提供HTML页面的策略:

    使用带有Ajax调用的静态html页面

    如果您为现有文件发出Web请求,则会通过静态文件处理程序返回。 然后,您可以简单地将ajax json调用返回到您的Web服务来动态生成一个页面。

    Windows Service AppHost Starter Template中的TODO Backbone应用程序以这种方式工作。 (以及ServiceStack中的大多数其他示例项目:-)

    返回一个字符串

    从Web服务返回的任何字符串都会直接写入响应流,因此您可以使用自己的HTML模板解决方案简单地返回HTML。

    以下是ServiceStack中其他可能的返回类型列表以及它们的处理方式。

    使用Markdown Razor

    内置到ServiceStack中的视图引擎是Markdown Razor--受MVC的Razor启发,但使用Markdown语法。 它支持自定义基类和扩展方法/ utils,具有很强的扩展性。

    使用Markdown Razor的一个很好的功能是您的web服务返回json,xml等也可以是在同一个url上动态生成html页面的视图模型。

    一个这样的例子是类别的Web服务,你可以看到这里的结果:http://www.servicestack.net/docs/category/Framework

    并再次以JSON,XML等方式提供相同的服务。您还可以检索部分生成的html页面(不包含模板)以及动态生成的降价。

    该页面是使用发送到此MarkdownRazor视图的Web服务DTO /视图模型创建的。https://raw.github.com/ServiceStack/ServiceStack.Examples/master/src/Docs/Views/Category.md

    如果您为Web服务指定了Markdown Razor页面,它将用于您现在看到的默认HTML5 JSON报告。

    解析顺序ServiceStack用于解析用于呈现HTML输出的相应Markdown模板为:

  • 如果Web服务指定了一个模板(通过自定义的IHttpResult.TemplateName响应) - 那么使用该名称的视图。
  • 与Response DTO具有相同名称的视图首先在/ Views中查看,然后在/ Views / Shared中查看
  • 与Request DTO具有相同名称的视图,首先在/ Views中查看,然后在/ Views / Shared中查看
  • 主机ServiceStack在/ custompath

    ServiceStack可以与现有的ASP.NET Web应用程序一起使用或不使用。 如果您的应用程序具有HTMLREST-Services-light,那么通常的做法是将ServiceStack托管在/ custompath(例如/ api),以便您可以将ASP.NET用于所有HTML页面生成。

    如果使用ASP.NET MVC,则需要忽略MVC的Global.asax RegisterRoutes()中的路由:

    routes.IgnoreRoute ("servicestack/{*pathInfo}");
    
    链接地址: http://www.djcxy.com/p/20503.html

    上一篇: Is it possible to serve HTML pages with ServiceStack?

    下一篇: servicestack REST API and CORS