自己的“Mono”项目关于“路由部分”的一些设计

了解ASP.NET 的人都应该知道ASP.NET 的路由系统有2大功能:

1)检查一个请求的URL,并推断出这个URL是要调用哪个Controller上的哪个Action。

2)生成一个输出的URL。

在Mono 项目中,我定义了一叫做“路由发布系统(也可以叫做路由提供模块)”,使我的路由能够包含各种数据和功能,比如优先级,在DataTokens中添加一些数据,而不是定义路由的时候提供,和每次请求到达时候就创建一个新的IContainer的LifetiemScope,处理请求结束时,就自动释放了这个LifetiemScope.,而我们只要在后续注册路由只要实现了"IRouteProvider"这个接口,应用程序就可以自动的把这个路由添加到全局路由表中。

这个模块的基本设计类图

这个模块的特点是:

1.需要注册一个路由,就从IRouteProvider接口实现一个自己的类。

2. 可用从新定义一个新的路由发布者,就可以从IRoutePublisher接口实现,提供自己的路由发布程序。

3.虽然定义的自定义的路由(MonoRoute)。其实这是使用了设计模式中说的装饰者模式,包装了一个实际的RouteBase对象。也就是IRouteProvider接口中提供的一个Route对象。

4.自定义了RouteHandler,HttpHandler和HttpAsyncHandler,也是封装实际上Mvc中使用的对象,比如RouteMvcHandler.

主要是提供了从Io容器中得到一些数据,释放资源的一些动作。

时间: 2024-08-24 15:53:38

自己的“Mono”项目关于“路由部分”的一些设计的相关文章

自己写的Mono项目的组成说明

一.方案预览 二.包含的项目介绍  Mono2.Framework: 如它的名字一样,是整个Mono项目的基本框架,包含了程序最基本的功能.比如IoC容器,认证和授权,数据库操作,计划任务管理等等 Mono2.WarmupStarter: 也是如它的名字一样,是一个应用程序启动程序,对应用程序初始化起到了最关重要的作用,采用了线程池,对所有的请求(同步和异步)进行排 队.其实就是一个HttpModule. Mono2.Web :就是具体的一个ASP.NET MVC Web应用程序,主要对Fram

yii2项目实战-路由美化以及如何正确的生成链接

yii2项目实战-路由美化以及如何正确的生成链接 更新于 2016年12月17日 by 白狼 被浏览了 705 次 美化路由 何为美化路由呢?美化嘛,无外乎就是给路由化化妆,让她好看点.我虽没化过妆,那好歹也是见过描描眉的.下面我们就来看看如何给你的路由添加添加点"颜色"的. yii的路由美化工作,全权由urlManager组件负责.默认情况下,该组件并没有开启. 我们在配置文件backend\config\main.php中简单配置下该组件 'urlManager' => [

Mono项目简介

应对J2EE的竞争而生 组成:CLR.BCL.ASP.NET Mono项目待改进之处 ASP.NET App及Web Service执行环境 类库 企业级应用服务器 GUI 关注下Intel ORP(open runtime platform)

java智能四子棋人机大战游戏设计(附项目,以及原创PSD,设计文档)

本项目是使用java技术+自创"假设下子"算法开发的人机大战四子棋游戏客户端. 具体项目,以及原创PSD,设计文档,在文件末尾的百度云连接. 一. 小组说明: 组名:CST 组长:陈飞良(C): 组员: 沈珂 (S): 谭明航 (T): 二.分工说明: ①算法思想上: 本程序的代码实现思想由三人共同讨论得出,其中组员沈珂的"假设下子"思想尤为精妙,让代码实现更为简单,在这基础上,组员谭明航 ,心思缜密,考虑到各种特殊情况,让整个更加智能.组长陈飞良则负责在他们的基础

沿海/海岛型农贸市场项目怎么做?水产区设计是重头戏!

农贸市场规划设计切勿"盲目复制",需要在标准化的基础上考虑区域差异,因地制宜地进行市场规划设计,否则实用还未达标,又何谈美观呢? 经手全国范围内1600余个菜场项目,一鸿在区域设计差异上也不断总结和提升.诸如南北方市场的设计差异.沿海内陆市场的设计差异.中心市场与社区市场的设计差异等等... 近日,我们签下了河北秦皇岛的一个市场设计项目,这让我们有时间回顾一下关于"沿海/海岛"此类项目在设计上的重点难点,总结我们在做区域化设计时应该注意些什么. 这里水产"

Laravel学习第一天(创建laravel项目、路由、视图、blade模板)

创建laravel项目 composer create-project laravel/laravel learnlv 4.1.* 查看帮助:composer create-project 使用artisan工具 生成key:php artisan key:genrate,更多命令见:http://blog.luoyunshu.com/laravel-cheatsheet 路由 route.php: <?php /* |--------------------------------------

Angular2官网项目 (4)--路由

        完整项目地址:https://github.com/lixinsong123/heroGuide 行动计划      把AppComponent变成应用程序的"壳",它只'处理导航' 把现在由AppComponent关注的英雄们移到一个独立的GeneralComponent中 添加路由 创建一个新的DashboardComponent组件 把仪表盘加入导航结构中 路由是导航的另一个名字.路由器就是从一个视图导航到另一个视图的机制. 拆分Appcomponent.    

vue项目搭建+路由使用

vue脚手架搭建步骤: 1. 全局安装 vue-cli2. npm install --global vue-cli3. 创建一个基于 webpack 模板的新项目4. vue init webpack // 当前目录5. vue init webpack my-project // 新建目录6. 安装依赖,走你7. cd my-project8. npm install9. npm run dev 路由使用: 重要文件(package.json.main.js.router\index.js.

linux 命令 创建 Django 项目 使用路由返回首页界面

1.首先使用cd 命令进入创建的项目文件夹 2.使用django-admin startproject web  命令创建一个名字为web的项目 3.使用python3 manage.py startapp myhome 命令创一个名字为myhome的App应用 4.在 manage.py 的同级目录下创建返回的模板(html界面)使用 mkdir templates 5.编辑settings.py,这里我个人使用的时sublime 打开的,命令是 subl settings.py 6.找到se