35

还有另一个用于进行 HTTP 调用的框架,称为 NancyFx。我的问题是使用它有什么好处。我快速浏览了文档:

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

并且看起来没有我想使用它的出色功能。通过 WebHttp 使用它有什么好处?

PS:我一直在读一些奇怪的短语,一遍又一遍地重复“super-duper-happy-path”。除了这个“超级快乐的路径”之外还有什么?实现了哪些真正的功能?

4

2 回答 2

46

它似乎提供了一种不同的方法来定义“路由”(在 MVC 意义上),使用 lambdas 来识别相对路径、参数和响应的实现。

最终,该框架的主要优势在于它的表现力。在 ASP.NET MVC 中,RouteTable 位于 global.asax 中,而实现位于 Control 中。似乎在 NancyFx 中,这是流行的模式:

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

示例实现:

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

说明:使用“Id”参数对相对端点“/products”进行 HTTP 获取将从存储库中返回单个产品,其中 Id 参数与产品的 Id 匹配。

表现力和简洁。

于 2012-07-11T03:36:46.937 回答
18

免责声明:我不是 NancyFx 的支持者 :)
我正在评估是否应该使用 NancyFx 或使用 ASP.NET Web API 作为项目的 REST 部分。

除了 GlennFerrieLive 已经提到的简单性和表现力(我认为它们本身确实有价值)之外,我想我还掌握了另外几个不错的地方:

  1. 可以说,以一种面向方面的方式,在任何 API 请求处理之前之后执行操作都很容易。

  2. 默认情况下,框架会处理接受的返回类型,因此它会适当地将输出转换为 JSON、XML、...

  3. 实现请求的 Lambda 不会返回实际填充的数据,但仍以查询的形式返回。之后,仍然可以在实际执行查询、访问数据库和返回实际数据之前轻松添加过滤、排序和其他操作。

  4. 他们以某种方式包装了 HttpRequest 并提供给开发人员一个等价物,不同之处在于这个新对象是注入的,你当然可以用一个模拟代替它......所以更容易和更清洁的测试。

也许其中一些(全部?)已经在 ASP.NET Web API 中可用,并且同样容易,我不确定。
高温高压

于 2013-03-01T01:34:30.883 回答