我们正在构建我们的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