使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

时间:2022-03-02 16:53:23

   可能有的人看到这个标题觉得是噱头,那是因为你还不了解Nancy是干嘛的。如果一个国外的人说,大部分微软平台的开发人员如果选择开发框架只能是在ASP.NET和ASP.NET MVC两个之间选择。 而Nancy是不依赖于这两个框架的独立的一个框架。它更多的是借鉴了Ruby的一些特性。

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

先看个例子说明如何使用NancyFX:

创建一个ASP.NET(MVC)的空解决方案。如果是ASP.NET MVC类别的空解决方案,记得在Global.asax文件中把路由注释掉,Nancy有自己的一套路由机制。

使用Nancy,它在配置文件中添加了自己的HttpHandler。

 

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

 

接下来我们看如何通过不同的URL请求通过Nancy返回不同的结果。

 

1.没有任何参数URL的情况下:

 

首先创建一个DefaultModule.cs继承NancyModule这个基类。

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

 

编译后运行,结果如下:

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

 

下面来看看一些复杂的URL请求情况下,如何获取到这些参数:

设定我们的请求为url+/Fristname/lastname,那么定义一个Nancy Module来解析这个url并返回信息:

创建一个名为WelcomeModule.cs的类:

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

通过URL+/firstname/lastname请求,结果如下:

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

 

当然这只是简单的返回一些字符,而且URL都是比较简单的。除了这些简单的URL格式,Nancy也支持正则表达式的URL请求。

除了这些,Nancy还能够支持Razor视图引擎。它是在Razor的基础上扩展了View的渲染方式。

 

类似于ASP.NET MVC,不过这里是通过Module来渲染View。现在我们定义一个Model是Person,有FirstName和LastName两个属性,如何通过Nancy来把这个Model绑定到页面呢?

首先需要定义一个Model:

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

 

定义一个PersonModule,继承NancyModule;

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

 

定义的页面是Person.cshtml,所以我们添加一个Razor页面,并动态绑定person到页面中:

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

 

以上介绍的请求都是Get,Nancy也是支持Post等其他的HTTP请求,如果遇到大数据的返回等其他情况还是需要用Post请求的。

 

除了Nancy,就是Simple.Data了,我之前有介绍过这个轻量级的ORM工具(其实都算不上ORM 使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一))。

我最喜欢的ORM工具—Simple Data

 

 

 

 

 

 

 

 

 

 

 

 

这两个轻量级的框架有一个共同的特点,就是让一些基本的处理都能够独立开来。所以很适合打造分布式开发的。 比如Nancy可以让我们的路由不再去不停地配置,或者是统一的配置,而是每个模块都可以单独去写自己的路由。

Simple.Data由于似乎是用Dynamic特性,所以每个模块的数据库交互都可以很独立。

 

以上是介绍了我需要用到的框架,接下来第二篇文章,我们将来说明整个分布开发的基础模块如何建立。