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

如果你觉得本文对你有帮助,请点击“推荐”,谢谢。

Nancy 学习-自宿主 继续跨平台的更多相关文章

  1. Nancy 学习-视图引擎 继续跨平台

    前面一篇,讲解Nancy的基础,以及Nancy自宿主,现在开始学习视图引擎. Nancy 目前支持两种 一个是SSVE 一个是Razor.下面我们一起学习. The Super Simple View ...

  2. Nancy 学习-进阶部分 继续跨平台

    前面两篇,讲解Nancy的基础,及Nancy自宿主和视图引擎. 现在来学习一些进阶部分. Bootstrapper Bootstrapper 就相当于 asp.net 的Global.asax . 我 ...

  3. Nancy学习

    Nancy学习 一.认识Nancy 今天听讲关于Nancy框架的培训,被Nancy的易用性所吸引.故晚上回来梳理了一下知识. 什么是Nancy呢?如标题所述,Nancy是一个轻量级的独立的框架: Na ...

  4. Nancy 学习-身份认证(Basic Authentication) 继续跨平台

    开源 示例代码:https://github.com/linezero/NancyDemo 前面讲解Nancy的进阶部分,现在来学习Nancy 的身份认证. 本篇主要讲解Basic Authentic ...

  5. Nancy 学习-身份认证(Forms authentication) 继续跨平台

    开源 示例代码:https://github.com/linezero/NancyDemo 上篇讲解Nancy的Basic Authentication,现在来学习Nancy 的Forms身份认证. ...

  6. 原创|我是如何从零学习开发一款跨平台桌面软件的(Markdown编辑器)

    原始冲动 最近一直在学习 Electron 开发桌面应用程序,目的是想做一个桌面编辑器,虽然一直在使用Typore这款神器,但无奈Typore太过国际化,在国内水土不服,无法满足我的一些需求. 比如实 ...

  7. 我是如何从零学习开发一款跨平台桌面软件的(Markdown编辑器)

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 原始冲动 最近一 ...

  8. 轻量级MVC框架:Nancy学习

    一.认识Nancy 今天听讲关于Nancy框架的培训,被Nancy的易用性所吸引.故晚上回来梳理了一下知识. 什么是Nancy呢?如标题所述,Nancy是一个轻量级的独立的框架: Nancy 是一个轻 ...

  9. 《java JDK7学习笔记》之跨平台与路径设置

    Platforms表示Solaris.Linux.Windows各种操作系统平台,在这些平台上架构了java Virtaul Machine,简称JVM,Java虚拟机. Java虚拟机可以让java ...

随机推荐

  1. 在MVVM模式中,按钮Click事件的绑定方法

    在MVVM模式中,我们将Button的方法写到ViewModel中,然后绑定到前端界面.通常的做法是写一个类,继承ICommand接口,然而如果按钮比较多的话,就需要写很多的类,对于后期维护造成很大的 ...

  2. 【吐血分享】SQL Server With As 递归获取层级关系数据

    纯洁的一周又开始了,今天看到一则新闻,笑尿了,和袁友们一起娱乐下 最近两月在做基于Saas模式的人力资源管理产品,平常数据库设计我经常会遇到如下需求场景: 以前商城类网站在设计类型表的时候,设计成单表 ...

  3. HOOK技术的一些简单总结

    好久没写博客了, 一个月一篇还是要尽量保证,今天谈下Hook技术. 在Window平台上开发任何稍微底层一点的东西,基本上都是Hook满天飞, 普通应用程序如此,安全软件更是如此, 这里简单记录一些常 ...

  4. Java程序员的日常——存储过程知识普及

    存储过程是保存可以接受或返回用户提供参数的SQL语句集合.在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装.可以在数据库中定义子程序,然后把子程序存储在数据库服务器, ...

  5. position格式布局

    布局大体分为: 位置--position 绝对坐标 absolute 绝对定位的元素 不受其他位置影响 可通过z-index进行层次分级 body来定位自己 相对坐标 设置  top和left之后 r ...

  6. [Linux]Linux下redis的安装及配置.

    在上一篇[Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例. 我们已经将redis所需tar包拷贝到了linux下的root 根目录下, ...

  7. java 线程的终止与线程中断

    关于线程终止: 1.一般来讲线程在执行完毕后就会进入死亡状态,那该线程自然就终止了. 2.一些服务端的程序,可能在业务上需要,常驻系统.它本身是一个无穷的循环,用于提供服务.那对于这种线程我们该如何结 ...

  8. Android ListView 常用技巧

    Android ListView 常用技巧 Android TextView 常用技巧 1.使用ViewHolder提高效率 ViewHolder模式充分利用了ListView的视图缓存机制,避免了每 ...

  9. chrome调试本地项目, 引用本地javascript文件

    chrome调试本地项目, 引用本地javascript文件 本地文件可以访问本地文件 修改快捷方式属性 C:\Users\xxx\AppData\Local\Google\Chrome\Applic ...

  10. 使用swoole和websocket结合来制造弹幕

    在知乎上无意中看到了一篇有关这个的话题https://zhuanlan.zhihu.com/p/23992890,刚好没事也好久没弄swoole了就自己按照知乎上的那篇文站实操了一下 那个试验中有几个 ...