簡體   English   中英

在IReturn <T>中使用接口作為模板的ServiceStack

[英]ServiceStack using interface as template in IReturn<T>

我有一個關於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 });

這是不必要的並且是人為錯誤的潛在來源,因為客戶端需要為每個服務提供正確的響應類型,而如果返回類型僅在服務器上定義一次(即權威來源),則所有客戶端將自動使用正確的響應鍵入,因為它嵌入在Request DTO合同中 - 因為它定義了您的公共服務合同的一部分,所以它是正確的位置。

沒有充分理由不包含IReturn<T>標記,如果您的服務返回多個不同的響應類型,那么唯一有效的原因是你沒有,但這本身就是反模式和錯誤來源這只能在運行時檢測到,即最差的那種。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM