在IReturn中使用接口作为模板的ServiceStack
本文关键字:ServiceStack 接口 IReturn | 更新日期: 2023-09-27 18:02:05
我有一个关于IReturn的问题。我发现
"接口绝对不是定义服务接口的完美有效方式"。
但是,尽管有这样做的需要或想法。有没有办法做到这一点,而不会得到一个异常关于创建抽象类?
您引用的内容可能是指WCF使用接口定义服务的方法。WCF促进了几种服务反模式,但这句话与ServiceStack的IReturn<T>
接口标记完全没有关系,这是一个良性接口,其唯一目的是启用简洁类型的API,而不必在调用站点定义返回类型,例如:
CustomerResponse response = client.Get(new GetCustomer { Id = 1 });
如果请求DTO没有IReturn<T>
标记,那么每个客户端都需要在调用站点上定义返回类型,例如:
CustomerResponse response = client.Get<CustomerResponse>(new GetCustomer { Id = 1 });
这是不必要的,并且是人为错误的潜在来源,因为客户端需要为每个服务提供正确的响应类型,而如果返回类型仅在服务器(即权威源)上定义一次,那么所有客户端都会自动使用正确的响应类型,因为它嵌入在请求DTO合同中-它的正确位置,因为它定义了公共服务合同的一部分。
没有很好的理由为什么你不包括一个IReturn<T>
标记,唯一有效的理由,你不会如果你的服务返回多个不同的响应类型,但这本身是一个反模式和错误的来源,只有在运行时才能检测到,即最坏的一种。