servicestack,restsharp,Rest,servicestack,Restsharp" /> servicestack,restsharp,Rest,servicestack,Restsharp" />

这些是RestSharp和ServiceStack的主要区别吗;客户机代码?

这些是RestSharp和ServiceStack的主要区别吗;客户机代码?,rest,servicestack,restsharp,Rest,servicestack,Restsharp,我一直无法做出明确的选择,希望有人(或几个人的组合)能够指出使用RestSharp和ServiceStack的客户端服务之间的区别(请记住,我已经在使用ServiceStack提供服务)。以下是我到目前为止的情况(仅不同之处)。这个列表相当小,因为它们确实非常相似: ServiceStack 赞成的意见 从我已经创建的服务POCO对象进行流畅的验证 一个用于客户端和服务的API 代码读起来更好(即Get(),Post()) 欺骗 必须写出我的一些字符串(即,如果我使用查询参数发出GET请求

我一直无法做出明确的选择,希望有人(或几个人的组合)能够指出使用RestSharp和ServiceStack的客户端服务之间的区别(请记住,我已经在使用ServiceStack提供服务)。以下是我到目前为止的情况(仅不同之处)。这个列表相当小,因为它们确实非常相似:

ServiceStack 赞成的意见
  • 从我已经创建的服务POCO对象进行流畅的验证
  • 一个用于客户端和服务的API
  • 代码读起来更好(即Get(),Post())
欺骗
  • 必须写出我的一些字符串(即,如果我使用查询参数发出GET请求,我必须在代码中创建该字符串)
  • 我必须为每个请求/响应类型(JsonServiceClient、XmlServiceClient)创建不同的类
雷斯夏普 赞成的意见
  • 几乎所有东西都可以是POCO(即,如果我使用查询参数发出GET请求,我只需通过代码添加参数)
  • 在请求/响应类型之间切换很简单(Request.RequestFormat=DataFormat.Json/Xml)
欺骗
  • 手动验证(超出数据注释中的范围)
  • 需要学习的两个API(这是次要的,因为它们都相当简单)
  • 代码不是一目了然(几乎不可读)(即request.Method=Get/Post..,主调用是Execute())
我倾向于RestSharp,因为它更倾向于直接使用POCO和很少的字符串操作,但是我认为ServiceStack可能可以接受,以获得更易于阅读的验证和代码

因此,以下是问题:

  • 你喜欢哪一种
  • 为什么是一个而不是另一个
我知道这不是一个完全主观的问题,但至少我在寻找这个问题的答案(这是主观的):

  • 我的发现是否有错误和/或遗漏的地方?
作为的项目负责人,我可以列出ServiceStack服务客户端的一些功能:

ServiceStack服务客户端在使用ServiceStack web服务及其约定时固执己见。i、 e.它们内置了对的支持,并且所有客户端都实现了相同的接口,因此您可以在每个JSON、JSV、XML、SOAP甚至服务客户端上使用相同的接口-允许您在不更改代码的情况下轻松更改服务使用的端点/格式

基本上,如果您正在使用ServiceStack web服务,我建议您使用ServiceStack客户端,它将允许您重新使用定义web服务的DTO,从而为您提供端到端的类型化API

如果您使用的是第三方API,我建议您使用RestSharp,这是一种更通用的REST客户端,非常适合此任务。此外,由于ServiceStack只是通过线路返回干净的DTO,因此它也可以很容易地从RestSharp中使用,如果您喜欢它的API,它也是一个不错的选择


更新-使用ServiceStack的HTTP客户端UTIL ServiceStack现在为使用第三方API提供了一个替代选项,它围绕常见的HttpWebRequest访问模式提供了干燥、可读的API,例如:

List<GithubRepo> repos = "https://api.github.com/users/{0}/repos".Fmt(user)
    .GetJsonFromUrl()
    .FromJson<List<GithubRepo>>();

很遗憾,我认为这个问题将会结束,因为它太主观了。我没有使用servicestack,所以我无法比较它们,但我可以回答或澄清任何restsharp问题。通过两个API来了解您的意思是服务器端的servicestack和消费端的restsharp?我让Demis来代表他的一方:)我猜如果您在服务器端使用servicestack,你最好在消费端也使用它。restsharp实际上是针对任意第三方HTTP/REST的APIs@John希恩:你完全应该自己插手:)作为RestSharp的项目负责人,我完全赞同这个答案。谢谢+1并被接受。很高兴看到你们相处融洽:DI想补充一点,我认为ServiceStack的项目负责人没有意识到他拥有什么。ServiceStack使创建服务变得更容易、更快捷,并且平等地使用自己的服务,因此它也使使用第三方RESTAPI变得超级容易。它的简单请求DTO对查询字符串的序列化,以及它对JSON的简单而快速的解析来响应DTO,这是一个很好的API,只能作为针对Google和许多其他RESTAPI的客户端使用。不反对RestSharp,但在我看来,ServiceStack作为客户端使用更容易、更干净。不要使用RestSharp。使用仍在进行中的东西。
var url ="http://api.twitter.com/statuses/user_timeline.json?screen_name={0}"
    .Fmt(name);
if (sinceId != null)
    url = url.AddQueryParam("since_id", sinceId);
if (maxId != null)
    url = url.AddQueryParam("max_id", maxId);

var tweets = url.GetJsonFromUrl()
    .FromJson<List<Tweet>>();
var csv = "http://example.org/users.csv"
    .GetStringFromUrl(acceptContentType:"text/csv");