您可以在 wiki 上找到 ServiceStack Web 框架的所有文档
ServiceStack 的新 API本周刚刚发布,其中已经包含了您所有问题的答案。我会回去完整阅读它们,但我会提取回答您问题的片段:
是否有文档实际说明要使用哪些接口/基类,以及它们的作用?
在介绍新 API部分下是:
新的 API 设计通过这个单一的统一接口简化了现有的 IService 和 IRestService :
public interface IService {}
现在可以在一个类中同时处理 RPC 服务和 Rest Service 请求。该接口仅用作 ServiceStack 用于查找、注册和自动连接现有服务的标记接口。还包括一个方便的具体服务类,其中包含对 ServiceStack 提供者的轻松访问
一个新的 API 设计展示了一个 DTO 实现 IReturn 接口的示例,以及从 Service 继承的服务 - 但没有解释这是否是现在的首选方式
wiki 顶部的标题如下:
推荐用于未来的 Web 服务开发
由于新的 API 设计比现有 API 提供了许多好处,我们建议将其用于任何新的 Web 服务开发。这将需要一些时间,但我们打算移植所有旧示例以自己采用新 API。仍然更喜欢旧 API 的一个原因是,如果您还想支持 SOAP 客户端和端点,这仍然需要前一种方法强制执行的严格性。
在灵感标题下写道:
这个提议的美妙之处在于它已经完全符合 ServiceStack 现有的基于消息的语义,这意味着我们能够在创纪录的时间内实现它,而不会对现有代码库造成任何中断或破坏性更改。结果是您现在可以在现有服务的同时开始创建新服务,并且它们都将继续无缝地并行工作。
是否需要实现 IReturn
在从类型化 C# 客户端调用服务的标题下是:
假设您采用复制 DTO 的正常路线(以二进制形式的任一源),因此您在客户端上有类似的东西:
[Route("/reqstars")]
public class AllReqstars : IReturn<List<Reqstar>> { }
客户端上的代码现在变成了:
var client = new JsonServiceClient(BaseUri);
List<Reqstar> response = client.Get(new AllReqstars());
它向 /reqstars 路由发出 GET Web 请求。当客户端上不存在自定义路由时,它会自动回退到使用 ServiceStack 的预定义路由。
最后,您还可以使用以前更明确的客户端 API(当您没有 IReturn<> 标记时非常适合):
var response = client.Get<List<Reqstar>>("/reqstars");
所有这些 API 都有异步等效项,您可以在需要时使用它们。
如何处理 POST/GET/等,
整个 API 文档有效地解释了 Post 的 Get 是如何工作的。您client.Get()
在客户端上有一个调用服务器上的,或者如果它不存在则Get()
回退到使用。Any()
Wiki 页面的底部介绍了如何手动将您的服务从旧 API 移植到新 API。
以下是一些使用新 API 的示例: