博客园中转

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

这是用Nancy和Simple.Data创建一个图片博客的第一部分:

placeholder:目录

前言:巴拉巴拉巴拉

步骤1:创建Visual Studio solution

创建一个空的ASP.NET Web应用,如何创建呢?首先去Github上的Nancy项目地址Accessories,下载到本机,然后找到Nancy.Empty.Web.Application.Template.Package.vsix,双击安装后重启Visual Studio。或者只下载这个模板

重启后就可以在新建项目中找到Nancy Empty Web Application这个模板,如果不好找,可以在搜索栏里搜索。如下图:

这样就会新建一个干净优雅的项目作为基础。此时可以打开root目录下的Web.config看看,是不是很干净。

下面是添加所需的Nancy 和Simple.Data库。

步骤2:添加Simple.Data

使用Nuget Package Manager Console。输入 Install-Package Simple.Data.SqlCompact40 回车执行,会自动下载并添加Simple.Data.SqlCompact40库,以及Simple.Data.Core库,后者作为前者依赖会被自动解析出来。

步骤3:添加Nancy

同样使用Nuget Package Manager Console,添加Nancy,Nancy.Hosting.Aspnet,Nancy.Viewengines.Razor三个库。

步骤4:配置Nancy

这时我们可以打开Web.config看看,发现里面已经自动写入了Nancy的相关配置。如下图:

没错,Nuget在不仅仅下载了Nancy库,而且帮我们已经安装和配置好了。是不是很酷!

如果你想手动添加配置的话,可以到Nancy项目主页上阅读她Wiki的相关页面

OK了,目前就这么多,准备Nancy之旅吧。Let's go!

步骤5:添加我们的第一个NancyModule

回忆下MVC的第一步是什么?要在Global.asax中设置Routes,创建一个Controller和至少一个Action 方法,保证Action方法和一个Route相关联。使用Nancy,一切都变得简洁了。一个NancyModule 代替了Controller,并且Action方法和route都整合在了NancyModule 里。

首先先创建一个简单的NancyModule来验证一切是否正常运行(暂时先不管Simple.Data)。

在root目录添加一个类,我叫他MainModule。并且继承于NancyModule 。

然后确保URL("/")返回一些东西给浏览器。参看下面的代码修改。

 

 1 namespace Web
 2 {
 3     public class MainModule:NancyModule
 4     {
 5         public MainModule()
 6         {
 7             Get["/"] = parameters =>
 8             {
 9                 return "<h1>Welcome to My Photoblog!</h1><p>
10                 Nothing to see here at the moment.</p>";
11             };
12         }
13     }
14 } 

 

这样就告诉Nancy监听收到的和"/"有关的GET-request,并且返回一段字符串给浏览器。代码看起来非常简洁明了。可以Ctrl+F5试试看效果。

下面添加另一个route。这次我们加一个参数。参考下面的代码修改MainModule类:

 

01 namespace Web
02 {
03     public class MainModule:NancyModule
04     {
05         public MainModule()
06         {
07             Get["/"] = parameters =>
08             {
09                 return "<h1>Welcome to My Photoblog!</h1><p>
10                 Nothing to see here at the moment.</p>";
11             };
12 
13             Get["/photo/{slug}"] = parameters =>
14             {
15                 return String.Format("<h1>I'm sorry</h1><p>
16                 We're having some problems finding photo '{0}
17                 ' for the moment.</p>", parameters.slug);
18             };
19         }
20     }
21 } 

 

 

{slug}就是参数,用{}括起来。它告诉Nancy监听收到的以"/photo/"开头的GET-request。String.Format(){0}就会显示URL里的值。试试看!

结论

可以看出来,使用Nancy真的非常直观方便。

posted on 2012-04-26 14:38  pieux  阅读(3442)  评论(1编辑  收藏  举报