当我们要接到一个新的项目的时候,我们第一时间想到的是用微软的MVC框架,但是你是否想过微软的MVC是不是有点笨重?我们这个项目用MVC是不是有点大材小用?有没有可以替代MVC的东西呢?看到这里也许你会反问我,微软的MVC到底什么地方不好了?这个暂且不说,我们先认识一下Nancy,来了解一下他和MVC的不同。
什么是Nancy呢?如果你学习过Ruby的话,就会知道Ruby中有个框架叫做Sinatra,Nancy就是Sinatra的.Net版本。如果你感觉微软的MVC过于笨重、过于繁琐,那么Nancy可能就是你苦苦寻找的东西。
- 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并不依赖任何现有的框架,所以他可以运行在任何平台上面。
下面是官方文档的一些说明:(个人表示E文不好,自己可以看懂点,翻译出来就感觉不是那么回事了,这里就不献丑了,大家简单看看吧)
关于super-duper-happy-path,官网也给出了解释,下面是部分内容:
哪位英语好的,给大家翻译下,分享一下哈~~我这里就不废话了!下面给出Nancy的官网地址,大家可以看下:
Nancy官网地址:http://nancyfx.org/
GitHub文档地址:https://github.com/NancyFx/Nancy/wiki/Documentation
下面我们来写一个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.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的内容,如下:
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Nancy</title>
</head>
<body>
<div>
<h1>Hello,Nancy!</h1>
</div>
</body>
</html>
在修改我们的构造方法,如下:
{
//注意:这里是构造函数
public HomeModule()
{
Get["/"] = p =>
{
return View["/Home"];
};
}
}
好了,按F5运行,浏览器显示结果如图:
这里要注意的是浏览器地址栏,一定是网站根目录,不是指向我们的Home.cshtml文件,否则会提示找不到页面,如图:
这是因为你在打开Home.cshtml的页面按下了F5,Visual Studio将页面指向了当前编辑页面,这个大家应该都知道的,在这里说明一下,否则在这里搞半天不知道错在哪,是件很郁闷的事。
好了,今天就先说到这里,下一篇继续我们的Nancy学习~~
作者:�霏霏
博客地址:http://www.cnblogs.com/yunfeifei/
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
本文链接:.NET轻量级MVC框架:Nancy入门教程(一),转载请注明。
SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb。
,database_id
,suser_sname(owner_sid) AS [owner]
,create_date
,user_access_desc
,state_desc
FROM sys.databases
WHERE database_id <= 4;
master
master 数据库包含用于记录整个服务器安装信息和后续创建的所有数据库的信息,包括磁盘空间信息、文件分配信息、文件使用信息、系统级的配置项信息、网络终结点信息、用户账户信息、各数据库的信息等。
model
model 数据库是一个模板数据库。每次创建新的数据库时,SQL Server 都会生成 model 数据库的一个副本作为新数据库的基础结构。所以,如果想在创建新的数据库时就拥有某些指定对象、权限和属性设置等,可以更改 model 数据库中的内容,新的数据库会自动继承这些设置。
msdb
msdb 数据库由 SQL Server 提供的一些功能服务组件所使用。包括:
- SQL Server Agent:用于执行计划任务,例如备份和复制任务等。
- Service Broker:用于提供队列和可靠性消息机制。
- Jobs
- Alerts
- Log Shipping
- Policies
- Database Mail
- Damaged Pages Recovery
tempdb
tempdb 数据库是 SQL Server 的工作空间,其特别之处是当 SQL Server 重启时总是重建而不是恢复该数据库,所以存放的数据在数据库重启后会丢失。tempdb 数据库用于存放由用户显式创建的临时表(Temporary Tables)、查询处理过程的中间数据、排序的中间数据、用于 Snapshot 的行版本数据、游标相关数据等。所有用户都有创建和使用 tempdb 中本地和全局临时表的权利,也就是 # 和 ## 为前缀的临时表。
tempdb 最有可能是在生产环境中创建和删除新对象数量最多的数据库,所以优化对 tempdb 的影响比在用户数据库上的影响更大。由于每个 SQL Server 实例只有一个 tempdb,所以有问题的应用程序会影响到所有其他应用程序中的所有其他用户。
mssqlsystemresource
SQL Server 其实还隐藏着第 5 个神秘系统数据库 mssqlsystemresource,称为系统资源数据库。顾名思义,mssqlsystemresource 数据库中存放的都是系统资源相关的信息,系统内的可执行对象都放在这里,比如 sys.objects$ 对象,后缀为 "$" 的对象在其他数据库中都不可见。这个数据库无法通过 SQL Server Management Studio 直接查看,也无法直接访问,实际上权限的控制导致也无法去修改它。mssqlsystemresource 数据库的主要作用是用于系统升级和补丁安装,以便快速的替换系统内资源定义。
mssqlsystemresource 数据库文件默认存放在 binn 目录下,文件名为 mssqlsystemresource.mdf,同时还存在一个相应的日志文件 mssqlsystemresource.ldf。如果想探究 mssqlsystemresource 数据库的内容,可以拷贝这两个文件到新的目录,重命名文件,重启 SQL Server,然后将重命名后的文件 Attach 为新的数据库。
NAME = data
,FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENNIS\MSSQL\DATA\mssqlsystemresource_copy.mdf'
)
,(
NAME = log
,FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENNIS\MSSQL\DATA\mssqlsystemresource_copy.ldf'
)
FOR ATTACH;
这样,SQL Server 对待上面的 dennis_resource_copy 数据库和其他常规数据库没有差别,在 dennis_resource_copy 数据库中修改对象也不会影响 mssqlsystemresource 数据库。
数据库文件
数据库文件实际上和普通的文件系统文件没有什么不同。SQL Server 中允许有 3 中类型的数据库文件:
- Primary Data Files:每个数据库都有一个主数据文件,使用 .mdf 扩展名。
- Secondary Data Files:数据库可以没有或者有多个辅助数据文件,使用 .ndf 扩展名。
- Log Files:每个数据库至少有一个日志文件,使用 .ldf 扩展名。
实际上,针对特殊功能,还存在 FileStream Data Files 和 Full-Text Data Files。
在创建数据库文件时,每个文件都有 5 个属性可以指定:
- Logical FileName:逻辑文件名
- Physical FileName:物理文件名
- Initial Size:初始大小
- Maximum Size:最大大小
- Growth Increment:增长增量
NAME = DENNIS_TEST_PRIMARY
,FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENNIS\MSSQL\DATA\DENNIS_TEST_PRIMARY.mdf'
,SIZE = 100 MB
,MAXSIZE = 200 MB
,FILEGROWTH = 20 MB
)
,(
NAME = DENNIS_TEST_SECONDARY
,FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENNIS\MSSQL\DATA\DENNIS_TEST_SECONDARY.ndf'
,SIZE = 10 GB
,MAXSIZE = 50 GB
,FILEGROWTH = 250 MB
) LOG ON (
NAME = DENNIS_TEST_LOG
,FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.DENNIS\MSSQL\DATA\DENNIS_TEST_LOG.ldf'
,SIZE = 2 GB
,MAXSIZE = 10 GB
,FILEGROWTH = 100 MB
);
可以使用元数据视图 sys.database_files 查看这些属性。
数据文件的默认大小是 model 数据库的主数据文件的大小(默认 2M),日志文件的默认大小为 0.5M。
出于分配和管理的目的,可以将数据库的数据文件分为文件组。在某些情况下,可以把数据和索引文件放在特定的文件组、特定的驱动器上以提高性能。
包含主数据文件的文件组称为 Primary Filegroup,并且只会存在一个 Primary Filegroup。如果创建数据库时没有特别说明要把文件放在哪个文件组中,则默认会放到 Primary Filegroup 中。当然,也可以修改默认文件组。
没有评论:
发表评论