当我们要接到一个新的项目的时候,我们第一时间想到的是用微软的MVC框架,但是你是否想过微软的MVC是不是有点笨重?我们这个项目用MVC是不是有点大材小用?有没有可以替代MVC的东西呢?看到这里也许你会反问我,微软的MVC到底什么地方不好了?这个暂且不说,我们先认识一下Nancy,来了解一下他和MVC的不同。

 一、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并不依赖任何现有的框架,所以他可以运行在任何平台上面。

  下面是官方文档的一些说明:(个人表示E文不好,自己可以看懂点,翻译出来就感觉不是那么回事了,这里就不献丑了,大家简单看看吧)

  关于super-duper-happy-path,官网也给出了解释,下面是部分内容:

哪位英语好的,给大家翻译下,分享一下哈~~我这里就不废话了!下面给出Nancy的官网地址,大家可以看下:

  Nancy官网地址:http://nancyfx.org/

  GitHub文档地址:https://github.com/NancyFx/Nancy/wiki/Documentation

 二、创建第一个Nancy项目

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

选择空模板,点击确定,建好项目以后,接下来我们开始通过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,修改其代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Nancy; namespace NancyStudy.Modules
{
public class HomeModule : NancyModule
{
//注意:这里是构造函数
public HomeModule()
{
Get["/"] = parameters => "Hello World";
}
} }

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

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

好了,就这么多代码,Views里面的东西先不去管它,我们按F5,运行项目,编译通过,然后再浏览器中输入如下信息:

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

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

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

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

 public class HomeModule : NancyModule
{
//注意:这里是构造函数
public HomeModule()
{
Get["/"] = p =>
{
return View["/Home"];
};
}
}

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

这里要注意的是浏览器地址栏,一定是网站根目录,不是指向我们的Home.cshtml文件,否则会提示找不到页面,如图:

这是因为你在打开Home.cshtml的页面按下了F5,Visual Studio将页面指向了当前编辑页面,这个大家应该都知道的,在这里说明一下,否则在这里搞半天不知道错在哪,是件很郁闷的事。

好了,今天就先说到这里,下一篇继续我们的Nancy学习~~

作者:雲霏霏

博客地址:http://www.cnblogs.com/yunfeifei/

声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy的更多相关文章

  1. Android轻量级ORM框架ActiveAndroid入门教程(转)

    注:没有找到出处,如有侵犯,请告知 开始ActiveAndroid神奇之旅: 在AndroidManifest.xml中我们需要添加这两个 AA_DB_NAME (数据库名称,这个name不能改,但是 ...

  2. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

  3. Veins(车载通信仿真框架)入门教程(四)——调试及记录结果

    Veins(车载通信仿真框架)入门教程(四)——调试及记录结果 在Veins入门教程(三)最后的动图中(如下图)可以看到大大小小的光圈,这个怎么实现的呢? 很简单,以收到RTS消息为例,通过finHo ...

  4. Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导

    Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 必要的message类实现 从下面开始是在veins/src/vei ...

  5. Veins(车载通信仿真框架)入门教程(二)——调用第三方库

    Veins(车载通信仿真框架)入门教程(二)——调用第三方库 在借助Veins进行自己的研究时我们经常需要实现一些比较复杂的功能,有时就需要借助第三方库的帮助. 博主的研究需要使用神经网络,但是自己编 ...

  6. 前端组件化Polymer入门教程(1)——初识&&安装

    前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...

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

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

  8. openresty 前端开发轻量级MVC框架封装一(控制器篇)

    通过前面几章,我们已经掌握了一些基本的开发知识,但是代码结构比较简单,缺乏统一的标准,模块化,也缺乏统一的异常处理,这一章我们主要来学习如何封装一个轻量级的MVC框架,规范以及简化开发,并且提供类似p ...

  9. Bootstrap框架菜鸟入门教程

    Bootstrap菜鸟入门教程 Bootstrap简介 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简 ...

随机推荐

  1. sql update多表联合更新

    update tabA set PrintTag=c.dp_state from tabA a inner join tabB b on a.Code=b.design inner join tabC ...

  2. PhoneGap--001 入门 安装

    PhoneGap 百度百科 PhoneGap 中文网 3.0 安装使用 今天也配置好phonegap3.0 android开发环境了,操作系统是win7,就楼主文章做些补充. 我是按phonegap官 ...

  3. 需要了解的 Linux 网络和监控命令

    列出来的10个基础的每个linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup ...

  4. C# 模拟上传图片

    上传图片的格式一定要按规定的写,不然没办法正确上传的. 我在上传的时候就是值前面没有空一行,导致上传不成功,很纠结的错误. 我要模拟的是一个FLASH的上传控件,我开始用HttpAnalyze抓包是抓 ...

  5. android书籍

    教程 源码下载 高薪招聘 Cocos2d-x 博客 签到 视频教程 wiki     帖子 搜索 热搜:二维码定时器手电筒滑块斗地主书架定位买手机聊天游戏开发游戏股票查询机顶盒通话记录二维码扫描振动器 ...

  6. 【转】scp 命令格式

    SCP 命令   \ svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令+scp命令详解   名称 ...

  7. webDriver环境搭建与测试

    1.安装jdk 2.安装eclipse 3.安装selenium 由于使用的是开发语言是java,因此需要安装java版的selenium包.下载地址:http://pan.baidu.com/s/1 ...

  8. MATLAB 秒表函数 tic toc 计算程序运行时间

    若需要测试出程序运行所需时间,或对不同的运行方式所需时间进行对比,则可利用秒表函数tic和toc.Tic函数启动定时器,第一个紧跟它的toc函数终止定时器并报告此时定时器的流逝时间.其语法如下:  t ...

  9. 【Visual Lisp】图元选择集专题

    图元选择集专题;;★★★01.选择集操作★★★(setq ss (ssadd));;创建一个空选择集(ssadd (car(entsel)) ss);;将点取的图元添加到ss选择集中,可以不用setq ...

  10. 深度解析Java8 – AbstractQueuedSynchronizer的实现分析(下)

    本文首发在infoQ    作者:刘锟洋 前言 经过本系列的上半部分JDK1.8 AbstractQueuedSynchronizer的实现分析(上)的解读,相信很多读者已经对AbstractQueu ...