我正在评估ServiceStack在Windows服务中用于托管REST服务.到目前为止,它非常出色并且优于WCF.更不用说它更容易使用.
上面提到的Windows服务需要能够提供一个简单的HTML页面作为"仪表板".ServiceStack当然会用于为仪表板提供json数据,但是提供仪表板页面以及图像和js呢?这可能吗?我宁愿不主持完整的ASP.Net,并且严格限制IIS永远不会在这些服务器上运行.可扩展性也不是必需的,因为只有一个管理机器才能显示仪表板.
myt*_*thz 55
ServiceStack.Razor NuGet包中的v3.9.11中添加了对ServiceStack HTML故事的重大改进.有了这种支持,ServiceStack现在毕业于完整的网站和Web服务框架,为WCF,MVC和WebApi提供了更简单的替代.
在Razor Rockstars演示网站上维护了使用Razor支持解释ServiceStack新HTML故事的完整文档:
有关Razor支持和描述其功能的完整文档,请参见上面的链接.
HTML Content-Type已添加到ServiceStack,就像您对真正的REST服务框架所期望的那样,即您可以简单地添加Razor Views来增强您的现有服务,这些服务仅在客户端请求text/htmlContent-Type时使用(具有对现有的注册格式没有影响).例如,仍然可以在所有其他内容类型中访问此/ rockstars REST服务:
此外,如果您的服务具有该[ClientCanSwapTemplates]属性,则客户端可以在运行时交换页面的视图和模板,例如,上面的页面与上面相同:
ServiceStack以这种方式自然采用HTML格式,这使得开发一组可以同时为HTML和丰富的本机移动和桌面客户端提供服务的服务变得微不足道.
在添加Razor支持之前,有几种使用ServiceStack提供HTML页面的策略:
如果您对现有文件发出Web请求,则会使用静态文件处理程序返回该文件.然后,您可以简单地将ajax json调用回您的Web服务以动态生成页面.
Windows Service AppHost入门模板中的TODO Backbone应用程序以这种方式工作.(以及ServiceStack中的大多数其他示例项目:-)
从Web服务返回的任何字符串都会"按原样"直接写入响应流,因此您只需使用自己的html模板解决方案返回html即可.
以下是ServiceStack 中其他可能的返回类型列表以及它们的处理方式.
ServiceStack内置的视图引擎是Markdown Razor - 它受到了MVC Razor的启发,但使用了Markdown语法.它非常可扩展,支持自定义基类和扩展方法/ utils.
使用Markdown Razor的一个很好的功能是返回json,xml等的同一个Web服务也可以是同一URL上动态生成的html页面的视图模型.
这方面的一个例子是类别Web服务,你可以在这里看到结果:http: //www.servicestack.net/docs/category/Framework
在JSON,XML等中再次使用相同的服务.您还可以检索部分生成的html页面(没有模板)以及动态生成的markdown.
该页面是使用Web服务DTO/view模型创建的,该模型已发送到此MarkdownRazor查看 https://raw.github.com/ServiceStack/ServiceStack.Examples/master/src/Docs/Views/Category.md
如果您为Web服务指定了Markdown Razor页面,则会使用您现在看到的默认HTML5 JSON报告.
ServiceStack用于解析用于呈现HTML输出的相应Markdown模板的解析顺序是:
ServiceStack可与或不与现有的ASP.NET Web应用程序一起使用.如果您的应用程序是HTML重的并且REST-Services-light,则常见的方法是在/ custompath(例如/ api)上托管ServiceStack,这样您就可以使用ASP.NET来生成所有HTML页面.
如果使用ASP.NET MVC,则需要忽略MVC的Global.asax RegisterRoutes()中的路由:
routes.IgnoreRoute ("servicestack/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11180 次 |
| 最近记录: |