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

 一、Nancy简介

  什么是Nancy呢?如果你学习过Ruby的话,就会知道Ruby中有个框架叫做Sinatra,Nancy就是Sinatra的.Net版本。如果你感觉微软的MVC过于笨重、过于繁琐,那么Nancy可能就是你苦苦寻找的东西。

  • Nancy是一个轻量级的独立的框架,下面是官网的一些介绍:
  • Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能多的方式,并提供一个super-duper-happy-path所有交互。
  • Nancy 设计用于处理 DELETEGETHEADOPTIONSPOSTPUT 和 PATCH 等请求方法,并提供简单优雅的 DSL 以返回响应。
  • Nancy和Asp.net MVC原理相似,但有自己的一套路由机制,在使用上更加易用,可以用Nancy快速开发一些网站。
  • Nancy并不依赖任何现有的框架,所以他可以运行在任何平台上面。

二、创建第一个Nancy项目

  下面我们来写一个Nancy的Hello,world项目,来学习一下Nancy的简单使用,打开Visual Studio,新建空Web项目:

 

 

 

 

 

 点击create,选择空的,然后再点击Create,如图:

 

 

 

 创建成功是上图这样的。

接下来我们开始通过Nuget安装Nancy,一共需要安装下面三个包,代码如下:

  Install-Package Nancy   //Nancy

  Install-Package Nancy.Hosting.Aspnet  //Nancy For Asp.net

  Install-Package Nancy.Viewengines.Razor //提供Razor视图支持,感觉很意外吧,我们还可以继续使用Razor

  安装完成后,我们开始搭建项目的基本结构,首先Nancy也是有自己的规则的,Nancy工程中控制器的部分必须放在Modules文件夹中,视图部分必须放在Views文件夹中,所以在项目中添加两个文件夹Modules和Views,再分别添加HomeModule类和Razor页面Home,添加完成后项目结构如图:

 

View这里先不用,先建好准备着,下面我们来显示Hello,world,打开HomeModule.cs,修改其代码如下:

 public HomeModule()
        {
            //Get("/", p =>
            //{
            //    return View["/Home"];
            //});//这个是指向home界面可行的
            Get("/", p => "Hello Word");//这个实现了helloword         
            //Get("/greet/{name}", x => {
            //    return string.Concat("Hello ", x.name);
            //});//这个写法不行,我不知道为什么
            //Get["/"] = Parameter => "Hello Word";//这个写法不行,我不知道为什么
        }

 

首先我们引入Nancy的命名空间,然后我们的类要继承自NancyModule,在ASP.NET MVC中所有控制器都继承Controller,在Nancy中,同样所有的‘控制器’都必须继承NancyModule类。

注意:在Nancy中,所有的的路由信息都是在构造方法中的,当程序运行时,会遍历所有所有的构造方法,如果出现路由信息相同时,默认选择最后遍历的那一个。

好了,就这么多代码,Views里面的东西先不去管它,我们按F5,运行项目,编译通过,浏览器上显示信息:

 

 

 

 

 

 

到这里,我们就成功的写完了Nancy的Hello,Nancy,是不是很简单啊~~

下面,我们来显示刚刚新建的View,我们修改Home.cshtml的内容,如下:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
</head>
<body>
    <div>
        <h1>Hello,Nancy!</h1>
    </div>
</body>
</html>

在修改我们的构造方法,如下:

using Nancy;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace webNacy.Modules
{
    public class HomeModule:NancyModule
    {
        public HomeModule()
        {
            Get("/", p =>
            {
                return View["/Home"];
            });//这个是指向home界面可行的
            //Get("/", p => "Hello Word");//这个实现了helloword         
            //Get("/greet/{name}", x => {
            //    return string.Concat("Hello ", x.name);
            //});//这个写法不行,我不知道为什么
            //Get["/"] = Parameter => "Hello Word";//这个写法不行,我不知道为什么
        }
    }
}

好了,按F5运行,浏览器显示结果如图:

 

posted on 2019-11-22 16:59  冰魂雪魄  阅读(714)  评论(0编辑  收藏  举报

WPF框架交流群:C#.net. WPF.core 技术交流�      C#WPF技术交流群:C#.net. WPF.core 技术交流�     WPF技术大牛交流群:C#.net. WPF.core 技术交流�