zoukankan      html  css  js  c++  java
  • 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();
                };
            }
        }
    }
    View Code

    跨平台

     前面一篇 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

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

  • 相关阅读:
    小熊派4G开发板初体验
    空间换时间,查表法的经典例子
    C语言、嵌入式应用:TCP通信实践
    【实践】基于RT-Thread的智慧路灯案例实验分享
    STM32串口打印的那些知识
    【RT-Thread笔记】BH1750软件包的使用
    【RT-Thread笔记】OneNet软件包的使用
    串口通讯你真的会了吗?不妨看看这些经验
    三小记(2)
    audio标签实现简单的自定义播放器
  • 原文地址:https://www.cnblogs.com/linezero/p/5121887.html
Copyright © 2011-2022 走看看