Nancy简介

Nancy简介

Nancy是一个轻量级的独立的框架,下面是官网的一些介绍:

  • Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能多的方式,并提供一个super-duper-happy-path所有交互。
  • Nancy 设计用于处理 DELETEGETHEADOPTIONSPOSTPUT和 PATCH 等请求方法,并提供简单优雅的 DSL 以返回响应。让你有更多时间专注于你的代码和程序。

官方地址:http://nancyfx.org   GitHub:https://github.com/NancyFx/Nancy

创建Nancy项目(自宿主)

Nancy supports running on ASP.NET/IIS, WCF, Self-hosting and any OWIN

Nancy是支持多种宿主,今天我是采用 Self-hosting 也就是自宿主方式。

首先创建一个控制台程序:

然后添加Nuget 引用,我们在搜索框输入Nancy Self,然后搜索,如图:

直接添加第一个即可。

也可以用Nuget命令行添加:Install-Package Nancy.Hosting.Self

添加好以后,在Program.cs 添加如下代码:

using Nancy.Hosting.Self;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NancyDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var host = new NancyHost(new Uri("http://localhost:9000")))
            {
                host.Start();
                Console.ReadLine();
            }
        }
    }
}

然后启动程序,访问 http://localhost:9000 发现404 错误,那是因为我们还没添加任何Module。

下面我们添加一个HomeModule

如图:

    public class HomeModule:NancyModule
    {
        public HomeModule()
        {
            Get["/"] = r =>
            {
                var os = System.Environment.OSVersion;
                return "Hello Nancy<br/> System:"+os.VersionString;
            };
        }
    }

再次启动访问 http://localhost:9000

下面我们再来添加一些强大的路由规则:

Get["/blog/{name}"] = r => {
                return "blog name " + r.name;
            };

然后我们访问 http://localhost:9000/blog/linezero  ,name就可以获取到linezero

我们再来模仿mvc 的路由规则:

            Get["/mvc/{controller}/{action}/{id}"] = r => {
                StringBuilder mvc = new StringBuilder();
                mvc.AppendLine("controller :" + r.controller+"<br/>");
                mvc.AppendLine("action :" + r.action + "<br/>");
                mvc.AppendLine("id :" + r.id + "<br/>");
                return mvc.ToString();
            };

我们访问:http://localhost:9000/mvc/blog/linezero/1

分别对应如下:

controller :blog
action :linezero
id :1

更多功能可以参看官方wiki。

完整Module代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Nancy;

namespace NancyDemo
{
    public class HomeModule:NancyModule
    {
        public HomeModule()
        {
            Get["/"] = r =>
            {
                var os = System.Environment.OSVersion;
                return "Hello Nancy<br/> System:"+os.VersionString;
            };

            Get["/blog/{name}"] = r => {
                return "blog name " + r.name;
            };

            Get["/mvc/{controller}/{action}/{id}"] = r => {
                StringBuilder mvc = new StringBuilder();
                mvc.AppendLine("controller :" + r.controller+"<br/>");
                mvc.AppendLine("action :" + r.action + "<br/>");
                mvc.AppendLine("id :" + r.id + "<br/>");
                return mvc.ToString();
            };
        }
    }
}

跨平台

前面一篇 http://www.cnblogs.com/linezero/p/5087997.html OWIN 跨平台。

Nancy is a lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono.

官方介绍是可以直接运行在mono上。所以下面我们就来看看一下运行在linux下。首先大家要安装好 mono。

测试系统版本:centos 6.4  mono 3.10.0

将程序上传到linux 下,然后定位到程序目录,通过命令启动程序:mono NancyDemo.exe

程序已成功启动,下面我来访问看看:

可以看到系统标示已经是Linux。

参考链接:

http://www.cnblogs.com/shanyou/archive/2013/04/11/3015654.html

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

时间: 2024-10-13 06:02:11

Nancy简介的相关文章

ASP.NET Core开发-使用Nancy框架

Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能多的方式,并提供一个super-duper-happy-path所有交互. Nancy 设计用于处理 DELETE, GET, HEAD, OPTIONS, POST, PUT和 PATCH 等请求方法,并提供简单优雅的 DSL 以返回响应.让你有更多时间专注于你的代码和程序. 官方地址:http:

.NET轻量级MVC框架:Nancy入门教程(一)

当我们要接到一个新的项目的时候,我们第一时间想到的是用微软的MVC框架,但是你是否想过微软的MVC是不是有点笨重?我们这个项目用MVC是不是有点大材小用?有没有可以替代MVC的东西呢?看到这里也许你会反问我,微软的MVC到底什么地方不好了?这个暂且不说,我们先认识一下Nancy,来了解一下他和MVC的不同.  一.Nancy简介 什么是Nancy呢?如果你学习过Ruby的话,就会知道Ruby中有个框架叫做Sinatra,Nancy就是Sinatra的.Net版本.如果你感觉微软的MVC过于笨重.

.NET开发框架集合(长期更新)

排名不分先后 1.ASP.NET快速开发框架 1.OSharpNS 简介:轻量级.net core快速开发框架发布 官网:https://www.osharp.org 博客:https://www.cnblogs.com/guomingfeng/p/osharpns-publish.html GitHub:https://github.com/i66soft/osharp-ns20 2.DDit 简介:.NET 企业管理系统快速搭建框架 官网:无 博客:http://www.cnblogs.co

Nancy 自寄宿

一:简介 Self Hosting 顾名思义,就是自己Host自己.也就是不需要依赖别的应用,而让应用本身就是服务.一个Console程序或者一个Winform程序都是一个应用,Self Hosting 就是将Nancy服务Host在这个应用自身中 二:创建一个控制台程序,引用两个类库文件 Nancy.dll和Nancy.Hosting.Self.dll public class HomeModule : NancyModule { public HomeModule() { Get["/get

Nancy 寄宿IIS

一:简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能多的方式,并提供一个super-duper-happy-path所有交互. Nancy 设计用于处理 DELETE, GET, HEAD, OPTIONS, POST, PUT 和 PATCH 等请求方法,并提供简单优雅的 DSL 以返回响应. Nancy和Asp.net MVC原理相似,但有自己的一套路

Nancy 返回值详解

原文:Nancy 返回值详解 简介 Nancy 是一个轻量级的,简单粗暴的framework用来构建基于HTTP的各种服务,兼容.Net和Mono.它的返回值也是多种多样的,适应各种不同的情况.包括Response.AsFile().Response.AsRedirect(). Response.AsImage(). Response.AsJson().Response.AsText(). Response.AsXml()等 一:string Get["/get"] = paramet

Android网络通讯简介

网络通信应该包含三部分的内容:发送方.接收方.协议栈.发送方和接收方是参与通信的主体,协议栈是发送方和接收方进行通信的契约.按照服务类型,网络通信可分为面向连接和无连接的方式.面向连接是在通信前建立通信链路,而通信结束后释放该链路.无连接的方式则不需要在通信前建立通信连接,这种方式不保证传输的质量. Android提供了多种网络通信的方式,如Java中提供的网络编程,在Android中都提供了支持.Android中常用的网络编程方式如下: 针对TCP/IP协议的Socket和ServerSock

微信红包的架构设计简介

@来源于QCon某高可用架构群整理,整理朱玉华. 背景:有某个朋友在朋友圈咨询微信红包的架构,于是乎有了下面的文字(有误请提出,谢谢) 概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量. 微信的金额什么时候算? 答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储.. 采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低. 实时性:为什么明明抢到红包,点开后发现没有? 答:2014年的红包一点开就知道金额,分两次操作

JSON 简介

ylbtech-JSON: JSON 简介 JSON:JavaScript Object Notation(JavaScript 对象表示法) JSON是存储和交换文本信息的语法,类似 XML. JSON 比 XML 更小.更快.更易解析. JSON 实例 { "employee":[ {"firstName":"John","lastName":"Doe"}, {"firstName"