第三章 Web框架 Nancy

如果使用Nancy作为一个WEB框架而言,会有什么不同?实际上很多。

在使用Nancy框架为网页添加Rest节点和路由和之前的Rest框架中是相同的,这方面没有什么需要学习的了。Nancy采用一贯的处理方式, 通过一些模块化的组件进行扩充功能,使得更加适合开发一个完整的WEB站点。

Nancy非常适合提供基于自定义路由的静态文件和基于数据的视图(就像ASP.NET MVC),事实上,你甚至可以去定义一个引用的别名或路由来指向已经存在的特定静态文件,而不是动态生成一个。

请参见以下示例。 想象在Nancy的Bootstrapper(后面会有介绍)有以下代码

protected override void ConfigureConventions(NancyConventions
nancyConventions)
{
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddFile(
"/jquery",
"scripts/Jquery-2.1.1.min.js"));
}

然后我就可以在我添加的HTML页面或试图中这样引用这个文件

<script src="~/jquery"></script>

乍一看,这可能不像什么特别的,但如果你决定在您的网站中使用的jQuery的新版本会发生什么呢?

考虑到遍历每个页面,模板和视图,把每一处“?/script/jquery-2.1.1.min.js”修改成“?/script/jquery-3.0.0.min.js”(或无论新版本是什么),或者替换一个类中的单个行并重新编译,我知道我更喜欢哪一个。

不只是单个文件,您可以映射整个目录结构。 在这本书的Demo中,你会在bootstrapper代码中找到以下内容

代码列表2

protected override void ConfigureConventions(NancyConventions
nancyConventions)
{
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddDirectory("/scripts", @"Scripts"));
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddDirectory("/fonts", @"fonts"));
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddDirectory("/images", @"Images"));
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddDirectory("/", @"Pages"));
}

  上面设置四个全局规则,任何请求“/scripts”都会指向Nancy编译程序所在的目录中的scripts文件夹,对于“/fonts”和“/images”也是同样的。

处理“/”的规则却是被重定向到一个名为pages的文件夹,因此请求“/home.html”将会在./pages/home.html中查找HTML内容。

我将在后面讨论视图(views)时更详细地介绍这一点,但现在,知道默认情况下你不必做任何处理。您可以创建一个名为Content的文件夹,并将所有内容放入其中;

对于那些希望把Nancy添加到项目中的开发者来说,意味着什么那?

好吧,这意味着你可以通过NuGet安装Nancy(没有其他模块),在应用程序中创建一个名为Content的文件夹,然后向这个文件夹中添加HTML,Javascript,样式表或是其他,??,按F5键,并开始托管该内容。

请注意,此Content文件夹不仅仅适用于ASP.NET托管,同样也适用于WCF托管,Windows服务中自托管,或在Azure托管。实际的主机平台根本不重要;这是Nancy的一个默认约定。

这只是Nancy为打造完整网站系统提供的一个小技巧。

Nancy 还提供:

  • 基于多视图引擎下的动态试图(Dynamic views via multiple view engines)
  • 简单的模型绑定(Simple model binding)
  • 内容和数据校验(Content and data validation)
  • 基本的会话管理(session management)

在本章中,您了解了Nancy适用于构建整个网站和Web应用程序中的一些特性,事实上,在写这本书到目前为止,我实际上听到一些人把NancyFX称为“.NET版的NodeJS”,因为它带来了许多Node的特性到.NET技术栈。

在下一章中,我们会采用预制的Visual Studio模板,使用"super-duper-happy-path"的编程方式 编写第一个基于Nancy的Web应用程序。

时间: 2024-10-27 18:12:05

第三章 Web框架 Nancy的相关文章

使用Micrisoft.net设计方案 第三章Web表示模式

第三章Web表示模式 体系结构设计者在设计第一个作品时比较精简和干练.在第一次设计时,并清除自己做什么,因此比较小心谨慎.第二个作品是最危险的一个作品,此时他会对第一个作品做修饰和润色,以及把第一次设计的边缘性设计思想都用在第二个作品,结果导致设计过头. 最初的Web很简单,只是有几个简单的Html页面组成,实现信息共享.随着业务的发展,需要根据业务来决定显示什么,于是开发了CGI编程,把大量的业务逻辑写到CGI中,然后输出到页面.随着发展,CGI编程模式受到了挑战,不能满足发展的需求,于是开发

《白帽子讲WEB安全》学习笔记之第12章 WEB框架安全

第12章 WEB框架安全 12.1 MVC框架安全 在Spring框架中可以使用spring security来增加系统的安全性. 12.2 模板引擎与XSS防御 12.3 WEB框架与CSRF防御 在MVC中防御CSRF: q  在Session中绑定token.如果不能保存到数据库中的Session,则使用Cookie. q  在form表单中自动填写token字段 q  在Ajax请求中封装token. q  在服务器端对比POST提交的token与Session绑定的Tiken是否一致.

轻型Web框架——Nancy

Nancy官网——https://github.com/NancyFx/Nancy 概述:Nancy是一个开源的Web轻型框架内核符合MVC思想,有开发方便,路由简单的特点,而且功能齐全 起步:Hellow World 一.建立Asp.Net空Web应用程序 二.使用NuGet添加Nancy包的引用 三.添加Nancy的引用 添加上面这两项后便可以运用Nancy搭建应用程序,比如一些小接口,后面文章会给出这方面应用 如果需要有页面的则还需要一个视图引擎,nancy为我们打造了多个视图引擎,本人目

【PMP】Head First PMP 学习笔记 第三章 过程框架

第三章 过程框架 项目中完成的所有工作都由过程构成. 项目中的完成的所有工作都有一个模式(pattern).先计划,再去做.工作时,总是对项目与原先的计划进行比较.如果开始偏离计划,就要由你做出矫正,让一切重新走上正轨.过程框架--过程租和知识领域--正式这一切顺利完成的关键. 分阶段管理 分阶段,项目的每个阶段(phase)都会经过5个过程租,从启动到收尾,项目的多个阶段就会存在各种关联关系 顺序关系(sequenital relationship).多个阶段相继发生并不存在重叠,每个阶段在前

jQuery系列 第三章 jQuery框架操作CSS

第三章 jQuery框架操作CSS 3.1 jQuery框架的CSS方法 jQuery框架提供了css方法,我们通过调用该方法传递对应的参数,可以方便的来批量设置标签的CSS样式. 使用JavaScript设置标签的样式相对来说比较麻烦,而如果需要批量的设置多个标签的样式那需要写很多代码,使用jQuery可以为我们简化该过程.     使用原生的方式来设置标签的样式(代码示例) 1 <body> 2 <div>我是div标签</div> 3 <button id=

第三章web安全基础—IIS网站发布问题、解决办法

问题一:虚拟机联网问题 ①桥接模式:与主机共用一个物理网卡,主机插着网线,手动配置IP,Netmask,网关,DNS,虚拟机也需要如此配置,还得跟主机同一个网段,但是不是一个网络号,还不能和这个网段其他主机冲突(这个模式可以和机房里其他主机通信) ②NAT模式:选择NAT模式,在虚拟机更改适配器设置里设置成自动获取,就可以上网了,有时候没分配好,就把本地连接禁用一下再开启一下(分配完的地址和主机网段没啥关系,原理同家里一个路由器可以让手机电脑都上网) PS:在计算器网络中,网络地址转换(Netw

第三章web安全基础—IIS发布dvbbs(动网论坛)及SQL2005问题解决

DVBBS小科普(来源:https://baike.baidu.com/item/动网论坛/369961?fr=aladdin): 动网论坛(也称“Dvbbs”)作为目前国内最大的社区论坛软件服务提供商,依靠其强大的功能.非凡的访问速度和负载能力.友好方便的客户操作界面.优质的客户服务.国内领先的技术和强大而持续的产品研发并保持不断创新的能力,动网所提供的动网社区论坛产品已经占据了国内社区论坛产品使用比例的70%以上. DVBBS依靠ASP环境简单易用的优势,以高效快速,功能强大著称,一直深受广

轻量级的Web框架——Nancy

最近想找一个简单的.Net下的轻量级Web框架,作为用户的本地的一个WebServer,实现同浏览器程序的一些简单交互,并调用本地服务,实现类似浏览器插件的功能.它有如下几点要求: 简单,能快速账务,开发 能.net framework上实现,因为要通过它就像一些系统调用,.net core有限制. 能实现SelfHost,如果需要IIS承载的话,除了安装麻烦外,权限也受限制. 虽然Asp.net本身能满足这个要求,可以通过owin的方式实现selfhost,但是我觉得它还是太重了.直到后来找到

第三章 Java框架整合--企业中的项目架构以及多环境分配

1.业务模块与数据模块分离 在实际开发中,我们项目的架构业务模块和数据模块是分离的,举个例子,假设我们的项目有"人员管理模块"和"酒店管理模块"两个模块,按照上一章的介绍,我们会建立下图所示的项目结构: 其中,人员管理模块的controller.service.dao.mapper都在一个项目中,而在实际使用中,我们会将数据模块分离出来,即将以上两个子模块的service.dao.mapper拿出来,放在一个子项目中,形成如下的项目结构: 注意以下几点: 包的命名最