gpt4 book ai didi

c# - ServiceStack 在 IReturn 中使用接口(interface)作为模板

转载 作者:行者123 更新时间:2023-11-30 14:49:21 25 4
gpt4 key购买 nike

我有一个关于 IReturn 的问题。我发现

"Interfaces are most definitely not a perfect valid way to define service interfaces".

但是,如果尽管如此,还是有这样做的需要或想法呢?有没有办法在创建抽象类时不会出现异常?

最佳答案

您引用的内容可能是指 WCF 使用接口(interface)定义服务的方法。 WCF promotes several service anti-patterns但是这句话与 ServiceStack 的 IReturn<T> 完全无关。接口(interface)标记是一个良性接口(interface),其唯一目的是启用简洁类型的 API,而无需在调用站点上定义返回类型,例如:

CustomerResponse response = client.Get(new GetCustomer { Id = 1 });

如果请求 DTO 没有 IReturn<T>标记然后每个客户端都需要在调用站点上定义返回类型,例如:

CustomerResponse response = client.Get<CustomerResponse>(new GetCustomer { Id = 1 });

这是不必要的,并且是潜在的人为错误来源,因为客户端需要为每个服务提供正确的响应类型,而如果返回类型只在服务器上定义一次(即权威来源),那么所有客户端都会自动使用正确的响应类型,因为它嵌入在请求 DTO 契约(Contract)中 - 它的正确位置,因为它定义了您的公共(public)服务契约(Contract)的一部分。

没有充分的理由不包括 IReturn<T>标记,你不会这样做的唯一正当理由是如果你的服务返回了多个不同的响应类型,但这本身就是一种反模式和错误来源,只能在运行时检测到,即最糟糕的一种。

关于c# - ServiceStack 在 IReturn<T> 中使用接口(interface)作为模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38919021/

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