我有一个关于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
,但是如果我有一个用于Customers
,Orders
和Products
的服务怎么办?如何处理多个服务?
发布于 2013-01-22 18:47:56
为什么我们必须有一个请求类?
ServiceStack是一个基于消息的框架,它包含Martin Fowler's Remote Service Best Practices (即远程外观、DTO和网关),它利用ServiceGateway发送粗粒度的请求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#客户机将后退到使用 (缺省情况下启用)。
如果我有一个以上的服务,在上面的例子中我使用的是TestService,但如果我有一个用于客户、订单和产品的服务怎么办?如何处理多个服务?
在您的AppHost基构造器中,您传入了一个程序集(即,不是单个服务):
public AxDataAppHost() : base("AxData", typeof(TestService).Assembly) {}
这将告诉ServiceStack在何处查找和连接所有服务。对于您的服务所在的每个dll/程序集,只需执行一次此操作。
ServiceStack的AppHosts还允许指定多个程序集,您可以使用这些程序集来连接位于多个程序集中的服务,例如:
public AxDataAppHost()
: base("AxData", typeof(TestService).Assembly, typeof(ServiceInNewDll).Assembly) {}
https://stackoverflow.com/questions/14461375
复制相似问题