web-dev-qa-db-fra.com

Avantages d'utiliser NancyFx?

Il existe encore un autre cadre pour effectuer des appels HTTP appelé NancyFx. Ma question est quels sont les avantages de l'utiliser. J'ai jeté un coup d'œil à la documentation:

https://github.com/NancyFx/Nancy/wiki/Documentation

et il semble qu'il n'y ait pas de fonctionnalité exceptionnelle à cause de laquelle j'aimerais l'utiliser. Quels sont les avantages de l'utiliser sur WebHttp?

P.S: Je continue de lire des phrases étranges qui répètent encore et encore "super-duper-happy-path". Y a-t-il autre chose que ce "super-duper-happy-path"? Des fonctionnalités réelles ont-elles été implémentées?

34
Jaggu

Il semble qu'il offre une approche différente pour définir des "routes" (au sens MVC) en utilisant des lambdas pour identifier les chemins relatifs, les arguments et l'implémentation de la réponse.

En fin de compte, le principal avantage du cadre est son expressivité. Dans ASP.NET MVC, le RouteTable est dans le global.asax et l'implémentation est dans le contrôle. Il semble que dans NancyFx, c'est le schéma qui prévaut:

Action["/path"] = args => { return your_implementation_here; }

Exemple d'implémentation:

Get["/products"] = id => { return GetRepository().Products.Single( q => q.Id == id); };

Explication: Un HTTP Get au point de terminaison relatif '/ products' avec un argument 'Id' retournera un seul produit du référentiel où l'argument Id correspond à l'ID du produit.

Expressif et concis.

45
Glenn Ferrie

Avertissement: je ne suis pas un partisan de NancyFx :)
Je suis en train d'évaluer si je dois utiliser NancyFx ou l'API Web ASP.NET pour la partie REST d'un projet.

Mis à part la simplicité et l'expressivité (qui ont une valeur en soi, je pense) déjà mentionnées par GlennFerrieLive, je pense avoir saisi un autre couple de jolis morceaux:

  1. Il est facile d'effectuer des opérations avant et après tout traitement de demande d'API, d'une manière --- Aspect Oriented, pour ainsi dire.

  2. Par défaut, le framework prend en charge le type retourné accepté, il convertira donc correctement la sortie en JSON, XML, ...

  3. Les demandes d'implémentation Lambdas ne renvoient pas les données réelles remplies, mais toujours sous la forme d'une requête. Après cela, il est toujours possible d'ajouter facilement des opérations de filtrage, de tri et d'autres avant d'exécuter la requête, de frapper la base de données et de renvoyer les données réelles.

  4. Ils ont en quelque sorte enveloppé la requête HttpRequest et mis à la disposition du développeur un équivalent de cela, à la différence que ce nouvel objet est injecté et vous pouvez bien sûr le remplacer par une maquette ... Des tests plus faciles et plus propres.

Peut-être que certains d'entre eux (tous?) Sont déjà disponibles dans l'API Web ASP.NET et avec la même facilité, je ne sais pas avec certitude.
HTH

18
superjos