37 votes

Ce sont les principales différences entre RestSharp et ServiceStack du Code de Client?

J'ai été incapable de faire un choix définitif et a été en espérant que quelqu'un (ou une combinaison d'un couple de personnes) pourraient souligner les différences entre l'utilisation de RestSharp contre ServiceStack de services à la clientèle (en gardant à l'esprit que je suis déjà à l'aide de ServiceStack pour mon service). Voici ce que j'ai jusqu'à présent (les différences). La liste est assez petit comme ils sont en effet très semblables:

ServiceStack

Pros

  • Couramment la Validation de mon déjà créé un service des objets POCO
  • Une API pour le client et le service
  • Le Code se lit mieux (c'est à dire Obtenir<>(), la Poste<>())

Cons

  • Certains de mes chaînes de caractères doit être écrit (c'est à dire Si je fais une requête GET avec les paramètres de la requête, je dois créer la chaîne dans mon code)
  • Je dois créer une classe différente pour chaque Requête/Réponse Type (JsonServiceClient, XmlServiceClient)

RestSharp

Pros

  • Juste au sujet de tout ce qui peut être un POCO (c'est à dire Si je fais une requête GET avec les paramètres de la requête, je viens d'ajouter les paramètres via le code)
  • La commutation entre la Requête/Réponse de types simples (sur demande.RequestFormat = Format.Json/Xml)

Cons

  • Manuel de Validation (au-delà de celle trouvée dans les Annotations de Données)
  • Deux Api pour apprendre (c'est mineur, car ils sont à la fois assez simple)
  • Le Code n'est pas aussi lisible en un coup d'œil (à peine), soit la demande.Method = Get/Post.. et principal de l'appel est d'Exécuter< T >())

Je me penchais vers RestSharp, car il tend plus vers la droite POCO utiliser et très peu de manipulation de chaîne, cependant, je pense que ServiceStack qui pourrait être acceptable pour le gain de la validation et du code qui est plus facile à lire.

Donc, voici les questions:

  • Laquelle préférez-vous?
  • Pourquoi l'un plutôt que l'autre?

Je sais que ce n'est pas un critère totalement subjectif question, mais au strict minimum, je suis à la recherche de la réponse à cette question (ce qui est subjectif):

  • Sont un de mes conclusions erronées et/ou il y a tout ce que j'ai raté?

53voto

mythz Points 54874

Comme le chef de projet de ServiceStack que je puisse les énumérer quelques caractéristiques de la ServiceStack Service clients:

Le ServiceStack Service Clients sont opiniâtres de la consommation ServiceStack de services web et de ses conventions. c'est à dire qu'Ils ont construit une prise en charge structurée de la validation et de la gestion d'erreur ainsi que tous les clients d'implémenter la même interface alors vous pouvez avoir la même unité de test pour être utilisé comme un test d'intégration sur chaque JSON, JSV, XML, SOAP et même Protobuf service clients - vous permet de changer facilement le point de terminaison/format de votre service utilise sans modifications de code.

Fondamentalement, si vous consommez ServiceStack services web, je vous recommande d'utiliser le ServiceStack clients qui vous permettra de réutiliser vos Otd vous avez défini vos services web, vous donnant une tapée de l'API de bout en bout.

Si vous consommez une 3ème Partie de l'API, je recommanderais RestSharp qui est un plus générale, le but RESTE le client qui est bien adapté à la tâche. Aussi comme ServiceStack retourne juste nettoyer les Dto sur le fil il serait également facilement consommables de RestSharp, qui, si vous préférez son API est également une bonne option.


Mise à JOUR - à l'Aide de ServiceStack HTTP du Client Utils

ServiceStack propose maintenant une option alternative pour consommer 3ème Partie Api avec son Client HTTP Util méthodes d'extension qui fournit à SEC, lisible de l'API autour de la commune HttpWebRequest les tendances de l'accès, de l'e.g:

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

Url extensions

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>>();

Alternative Content-Type

var csv = "http://example.org/users.csv"
    .GetStringFromUrl(acceptContentType:"text/csv");

Plus d'exemples disponibles à partir de l' adresse HTTP Utils page wiki.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X