初遇Nancy

原文地址

Nancy 是一个轻量级的、低门槛的框架,用于在.Net和Mono上构建基于HTTP的服务。这个框架的目标是尽可能的保持简单并为所有的交互提供一个super-duper-happy-path。

Nancy被设计用来处理DELETE、GET、HEAD、OPTIONS、POST、PUT和PATCH请求,并且用仅仅几行代码为返回的响应提供了一种简单的、优雅的领域特定语言(DSL),让你有更多世间关注重要的事情..你的代码和你的应用程序。

书写你的应用程序

public class Module : NancyModule
{
    public Module()
    {
        Get["/greet/{name}"] = x => {
            return string.Concat("Hello ", x.name);
        };
    }
}

编译,运行,享受这种简单优雅的设计。

特点

  • 从最底层开始构建, 而不是在一个已有框架上的DSL。移除了底层框架的限制,还有引用多于你需要的程序集。保持轻量。
  • 任意运行。Nancy 不是基于特定的承载技术构建的,并且可以在任意环境运行。与众不同的是,Nancy支持运行在ASPNET/IIS, WCF, Self-hosting 和 OWIN下
  • 超轻量的GET, HEAD, PUT, POST, DELETE, OPTIONS and PATCH 请求动作声明
  • 视图引擎的集成(Razor, Spark, dotLiquid, 我们自己的SuperSimpleViewEngine,还有许多其他的)
  • 包括高级参数能里的请求路径匹配。路径匹配策略可以根据你的需要替换成自定义的实现
  • 简单的response语法,让你可以返回像int, string, HttpStatusCode 和 Action 而不用显式转换或是包装response-你只需要返回它,然后Nancy会帮你做余下的事
  • 强大的、轻量级的测试框架帮你验证应用程序的行为
  • Content negotiation
  • 还有许多许多

The super-duper-happy-path

  • "super-duper-happy-path"是由作者组成的一个短语,用来描述Nancy的特性,而且假定"super-duper-happy-path"的体验是我们为所有的APIs所力争的
  • 尽管难以给出它的准确含义,它毕竟是一个令人兴奋的术语,其后的基本思想包括如下:
  • 他会正常工作-你不需要学太多东西,不需要整理就可以使用。添加新的模块?那会被自动发现。引进新的视图引擎?所有的都装配好了准备着前进而不需要你做任何事情。即使你给你的模块添加了一个新的依赖,默认情况下,我们会定位到依赖然后帮你注入-不需要配置
  • 容易个性化-尽管“it just works”, 个性化的时候不应该有任何障碍。像使用另一个容器?没问题。想要调整路由选择的方式?尽管做吧!通过bootstrapper的方式,所有的这些事情都是小菜一碟。
  • 低门槛-你程序中需要的Nancy Code是最少量的。任何Nancy程序最总要的部分就是你的代码。我们的代码妨碍你,他会帮你构建神奇的应用程序。作为这的一个证据,Nnacy应用可以整合成一个 单一的Tweet.
  • 低阻力-当用Nancy构建软件时,这些APIs会帮助你实现你想要的,而不是阻碍你。命名也是明显的,所需的配置也是最少的,但是强大和可扩展性仍就在这。

综上,用Nancy创建应用程序是一件愉快的,有意思的事!但是当你的应用增长时,不会牺牲性能和扩展性。

翻译很蹩脚,有不懂的可以参照原文。

时间: 2024-11-20 13:30:13

初遇Nancy的相关文章

Nancy之基于Self Hosting的补充小Demo

前面把Hosting Nancy with ASP.NET.Self Hosting Nancy和Hosting Nancy with OWIN 以demo的形式简单描述了一下. 这篇是为Self Hosting Nancy.和Owin 下面的Self Hosting作个补充. 首先是Self Hosting Nancy的补充: 这里主要是介绍一下Topshelf 官网:http://topshelf-project.com/ GitHub地址:https://github.com/Topshe

Nancy

Nancy Nancy 是一个轻量级的,简单粗暴的framework用来构建基于HTTP的各种服务,兼容.Net和Mono.Nancy的整套设计理念是基于"super-duper-happy-path",这是一个作者杜撰的单词,个人觉得翻译过来基本就是简单粗暴,行之有效的意思. 简单的例子: public class Module : NancyModule { public Module() { Get["/greet/{name}"] = x => { r

Nancy之实现API

Nancy之实现API的功能 0x01.前言 现阶段,用来实现API的可能大部分用的是ASP.NET Web API或者是ASP.NET MVC,毕竟是微软官方出产的,用的人也多. 但是呢,NancyFx也是一个很不错的选择.毕竟人家的官方文档都是这样写的:framework for building HTTP based services. 本文主要是通过一个简单的场景和简单的实现来说明. 0x02.场景假设与分析 现在A公司与B公司有一些业务上的合作,B公司要得到一些关于A公司产品的信息 所

Nancy之基于Nancy.Owin的小Demo

前面做了基于Nancy.Hosting.Aspnet和Nancy.Hosting.Self的小Demo 今天我们来做个基于Nancy.Owin的小Demo 开始之前我们来说说什么是Owin和Katana 什么是Owin呢? 官网地址:http://owin.org OWIN在.NET Web Servers与Web Application之间定义了一套标准接口,OWIN的目标是用于解耦Web Server和Web Application. 什么是Katana呢? 官网地址:http://kata

Nancy FormsAuthentication使用

1.新建UserDatabase类,实现IUserMapper接口 using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Security.Principal; using Nancy.Authentication.Forms; public class UserDatabase : IUserMapper { private st

Nancy 引用源码与NuGet安装差异

使用NuGet安装Nancy和直接引用源码项目存在一些差异,如序列化,授权验证问题. 如果引用源码的话,自定义JsonSerializer,如下: 注意,需要使用NuGet安装Newtonsoft.Json public class CustomJsonNetSerializer : JsonSerializer, ISerializer { public bool CanSerialize(MediaRange mediaRange) { return mediaRange.ToString(

nancy中的身份验证

在nancy中,身份验证分为basic ,form ,token,stateless几种,basic和form这里不说了,其中如果是使用cookie来保存身份的, 需要注意的是:cookie有大小的限制,所以不能用来保存超过4k的信息,而且有一些js插件也要用的cookie,虽然html5好像多了.但是还是要注意一下.因为之前看到文章有的人网站有时候登陆出现问题,就是因为用户信息太大导致的. 这里说的是token的验证. ITokenizer 这个是定义token的接口,Tokenizer是它的

记一次Nancy 框架中遇到的坑

记一次Nancy 框架中遇到的坑 前几天,公司一个项目运行很久的Nancy框架的网站,遇到了一个很诡异的问题.Session 对象跳转到另外一个页面的时候,session对象被清空了,导致用户登录不上.搞了两天,终于解决了.于是把它记录下来,以避免其他人也碰到这种情况. 起因 公司一个Nancy 框架 开发的web网站,以前一直都是好的,nancy 框架也用在了很多项目里面,基本上已经很成熟很稳定了,但是在前几天发布某个web网站的时候,竟然出现部分用户登录不上的情况.刚开始以为是人员的权限有问

第五章 Nancy 路由

在Nancy中,最为神奇的莫过于路由了,定义路由模块是构成Nancy应用的骨架.在Nancy中定义路由,和在 ASP.NET MVC那些类似的框架中有着非常大的区别. 以 ASP.NET MVC 为例,通常情况需要创建一个控制类.多数情况下,这个类提供了路由的约定.通过定义您的控制器类名和该类中的方法的名称,就能定义了该代码所处理的"路由" 请看下面的例子: using System; using System.Linq; using System.Web.Mvc; namespace