gpt4 book ai didi

ServiceStack-空的请求类?

转载 作者:行者123 更新时间:2023-12-04 03:38:55 24 4
gpt4 key购买 nike

我有一个关于ServiceStack的问题。为什么会有空的请求类,为什么我们必须有一个请求类?例如:

[Route("/test", "GET")]
public class Test
{

}

public class TestResponse
{
public string Date { get; set; }
}

public class TestService : Service
{
public object Get(Test test)
{
return new TestResponse { Date = DateTime.Now.ToString() };
}
}

如果我没有通过请求传递对象,服务会失败吗?

然后,我是我的Global.asax文件,我有:
public class AxDataAppHost : AppHostBase
{
public AxDataAppHost() :
base("AxData", typeof(TestService).Assembly)
{
}
}

如果我有多个服务,在上面的示例中,我使用的是 TestService,但是如果我有一个服务于 CustomersOrdersProducts,该怎么办?如何处理多项服务?

最佳答案

为什么我们必须有一个请求类?

ServiceStack是一个基于消息的框架,包含Martin Fowler's Remote Service Best Practices(即远程立面,DTO和网关),该框架利用ServiceGateway发送粗粒度的请求DTO,这些请求DTO通常返回类型化的响应DTO(尽管是services can return anything)。使用基于消息的设计has many advantages,可以启用ServiceStack的类型化端到端API。

例如。您可以通过以下方式重复使用您定义服务的这些类型:

public class Test : IReturn<TestResponse> {}

public class TestResponse
{
public string Date { get; set; }
}

在客户端上,这就是为您提供无需代码源的类型化API的原因,例如:
var client = new JsonServiceClient(BaseUri);
TestResponse response = client.Get(new Test());

注意:您甚至不需要自定义路由,因为默认情况下,ServiceStack的C#客户端将回退以使用 pre-defined routes(默认情况下启用)。

如果我有多个服务,在上面的示例中,我正在使用TestService,但是如果我有针对客户,订单和产品的服务,该怎么办?如何处理多项服务?

在您的AppHost基本构造函数中,您传入的是 程序集(即,不是一项服务):
public AxDataAppHost() : base("AxData", typeof(TestService).Assembly) {}

这告诉ServiceStack在哪里寻找并连接所有服务。您只需为服务所在的每个dll/程序集执行一次此操作。

ServiceStack的AppHosts还允许指定多个程序集,您可以使用这些程序集连接位于多个程序集中的服务,例如:
public AxDataAppHost() 
: base("AxData", typeof(TestService).Assembly, typeof(ServiceInNewDll).Assembly) {}

关于ServiceStack-空的请求类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14461375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com