zoukankan      html  css  js  c++  java
  • Nancy.Net之旅-探索模块

    探索Nancy模块

    模块是任何Nancy应用程序中的主角,因为它是您定义应用程序行为的地方,所以无法避免使用它。

    事实上,在任何的Nancy应用程序中,声明模块是最基本的要求。

    通过继承NancyModule 类就可以创建一个模块,就是这么简单。

    一旦你拥有一个模块,你就可以开始定义你应用程序的行为,如果被调用,将以路由的形式执行他们的动作。

    简单的说,模块将决定Nancy在运行时如何展现。

    模块不仅仅只是运行您定义应用程序行为,它还可以让您访问一系列有用的功能,例如 当前请求的完整信息,访问当前请求的上下文,帮助构建特定类型的返回结果(例如json,xml,files,重定向) ,呈现视图等等...

    您可以在应用程序中定义尽可能多的模块,至少应该有一个模块,并且至少定义一个路由。

    模块是全局查找的

    块可以在任何您喜欢的地方声明,因为他们在运行时的应用程序域中可用。

    Nancy将通过扫描并识别那些NancyModule的所有子类型。

    这就意味着您可以在外部程序中定义模块。只要程序集运行时存在应用程序域中-通过引用和动态加载-这样就会被扫描到。您可以由此来重用跨应用程序的行为,甚至可以为其创建一个不错的nuget包。

    如果您认为扫描模块很浪费资源,不要担心。这种操作不会每次请求都去执行,它是Nancy应用程序启动时的一部分,仅仅执行一次,然后被缓存。

    使用模块为您的路由创建一个根路径

    模块的一个简而整洁的功能是可以定义模块路径。您可以将此看做为模块的所有路由定义根命名空间,每个路由都将从属于模块的路径,这样就可以避免重复路径中相同的部分,并可以很好的将您的路由通过关系组合到一起。

     1 public class ResourceModule : NancyModule
     2 {
     3     public ResourceModule() : base("/products")
     4     {
     5         // would capture routes to /products/list sent as a synchronous GET request
     6         Get["/list"] = parameters => { 
     7             return "The list of products"; 
     8         };
     9     }
    10 }

    Practice

     
    之前的代码部分,运行浏览器键入地址:http://localhost/products/list
     

    总结

    实际上Nancy查找组件的方式和大多数框架类似,都是查找一次然后缓存。就像MVC的Conroller的激活和Action的执行一样,并不是每次请求都会去查找。

    不过,定义根路径这个功能很有意思,简单而且灵活。

    转载请标明出自:本文地址

  • 相关阅读:
    写作 —— 细节与画面感
    写作 —— 细节与画面感
    诸子经典 —— 《管子》
    诸子经典 —— 《管子》
    金庸小说的模式
    金庸小说的模式
    SQLite中如何用api操作BLOB类型的字段
    Android WebView挂马漏洞--各大厂商纷纷落马
    [置顶] android开发之来电自动拒接并自动回复短信_上课模式app
    步步为营Hibernate全攻略(四)剪不断理还乱之:复合主键 && 组合映射
  • 原文地址:https://www.cnblogs.com/lucky528/p/6807830.html
Copyright © 2011-2022 走看看