我們正在構建我們的ServiceStack的第一個小實現,我們需要對位於客戶端和服務器之間共享的單獨程序集中的DTO進行一些說明。ServiceStack DTO彙編
The WIKI page for the new API建議DTO
下在服務發展你的服務的DTO提供要保持清潔,併爲「依賴性的自由」,儘可能爲最大的可訪問性和潛在的重新您的技術無關的服務層-使用。我們的建議是將您的服務DTO保存在一個單獨的大部分免費的程序集中。
也有此片段
*但是,假設你需要複製的DTO的正常路線(以二進制形式的任何來源),所以你有這樣的事情在客戶端上:
[Route("/reqstars")]
public class AllReqstars : IReturn<List<Reqstar>> { }
The code on the client now just becomes:
var client = new JsonServiceClient(BaseUri);
List<Reqstar> response = client.Get(new AllReqstars());
這點讓GET web請求到/ reqstars路線。當客戶端上沒有自定義路由時,它會自動回退到使用ServiceStack的預定義路由。
我的問題是......由於DTO類的路由屬性,「大部分無需釋放」的程序集仍然需要依賴於ServiceStack嗎?
謝謝mythz。我全部贊成將DTO保存在一個單獨的程序集中,但我不確定是否有一種方法可以使程序集零點歸零。 –
@mythz我對ServiceStack很敬畏,並且信息量(很多矛盾)有點不知所措。這個答案幫助我在正確的軌道上用我的DTO創建一個ServiceModel DLL,但是我沒有在ServiceStack的文檔上找到任何指向它的東西。沒有任何地方指出唯一需要的引用是ServiceStack.Interfaces。 RESTIntro ServiceModel包含對大量DLL的引用,所以它也很混亂。是否有nuget包只獲得這個最小的引用來構建ServiceModel? – Loudenvier
@Loudenvier ServiceStack.Interfaces位於ServiceStack.Common NuGet包中,NuGet目前沒有更好的細節(在NuGet的重新設計之後會有更多細節)。在實踐中,這不是問題,因爲ServiceStack.Common是客戶端使用[ServiceStack鍵入的.NET客戶端]所需的最小包(https://github.com/ServiceStack/ServiceStack/wiki/C% 23客戶端)。一般來說,您應該努力保持您的服務模式不受干擾,最大限度地減少客戶所需的代價/摩擦。 – mythz