我记录网站综合系统 -- 技术原理解析[3:我记录框架处理流程]

news/2024/5/15 5:04:30/文章来源:https://blog.csdn.net/weixin_33948416/article/details/93313648

要分析我记录的整个处理流程,先从wojilu的初始化入口,看看wojilu在初始化的时候到底做了些什么事情。

相关代码:wojilu.Web\Global.asax

 

1 void Application_Start( object sender, EventArgs e ) {
2         wojilu.Web.SystemInfo.Init();
3         wojilu.Web.Mvc.MvcFilterLoader.Init();
4         wojilu.Web.Jobs.WebJobStarter.Init();
5     }

wojilu.Web.SystemInfo:系统的固定数据,比如网站根路径、app路径、主机(ip+端口号)名称等。这里的信息是以后路由的参考信息,在以后URL和实际地址映射的时候将用到这里的数据。

wojilu.Web.Mvc.MvcFilterLoader: mvc 过滤器的加载器。初始化各种过滤器,并且将各种过滤器注册到系统之中。

wojilu.Web.Jobs.WebJobStarter:计划任务启动器的初始化。

WebJob:计划任务,类似于服务的一种任务,可以指定Interval(间隔时间)。

更多计划任务的详细介绍:http://www.wojilu.com/Common/Page/38

通过上面这些步骤,整个系统就可以响应URL请求了。

 

接下来就是介绍一下整个MVC的流程:

 

一个标准的MVC流程是指从路由解析(Route)到页面生成(Render)的全过程。

这些原本都是由ASP完成的任务,现在全都由wojilu系统完成了。

在详细介绍各个Process之前,我们先看看ProcessorBase的定义吧:

 

 1 namespace wojilu.Web.Mvc.Processors {
 2 
 3     internal abstract class ProcessorBase {
 4 
 5 
 6         public abstract void Process( ProcessContext context );
 7 
 8     }
 9 
10 }

ProcessorBase 是一个抽象类,里面有一个抽象的方法Process(处理),这个方法的参数是 ProcessContext(处理内容)。ProcessContext里面包含着生成页面所需要的一切信息,从路由解析开始,数据从URL信息开始,通过各个Process一点点变得丰富。例如通过路由的时候,URL将被解释成页面Controller信息放入ProcessContext中,通过安全认证Process的时候,访问权限等信息会被追加到ProcessContext中。ProcessContext作为信息的载体,贯穿于整个Process中。

了解了整个MVC流程之后,我们要问,触发MVC的最初的地方在哪里。

我们知道,要自定义HTTP处理,就必须自己实现一个 IHttpHandler,我记录系统要实现全部的HTTP访问过程,必然需要实现IHttpHandler。所以wojilu的IHttpHandler实现就是整个MVC的源头。

 

 1 /*
 2  * Copyright 2010 www.wojilu.com
 3  * 
 4  * Licensed under the Apache License, Version 2.0 (the "License");
 5  * you may not use this file except in compliance with the License.
 6  * You may obtain a copy of the License at
 7  * 
 8  *      http://www.apache.org/licenses/LICENSE-2.0
 9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 using System;
18 using System.Web;
19 using System.Web.SessionState;
20 
21 using wojilu.Web.Context;
22 using wojilu.Caching;
23 using System.Text;
24 using System.Collections.Generic;
25 
26 namespace wojilu.Web.Mvc {
27     /// <summary>
28     /// wojilu mvc 的核心处理器:处理客户端请求,将结果返回
29     /// </summary>
30     public class CoreHandler : IHttpHandler, IRequiresSessionState {
31         public virtual void ProcessRequest( HttpContext context ) {
32             if (MvcConfig.Instance.IsPageCache) {
33                 String pageContent = CacheManager.GetApplicationCache().Get( context.Request.Url.PathAndQuery ) as String;
34                 if (pageContent != null) {
35                     context.Response.Write( pageContent );
36                     return;
37                 }
38             }
39             MvcContext ctx = new MvcContext( new WebContext( context ) );
40             ProcessContext.Begin( ctx );
41         }
42         public virtual void ProcessRequest( IWebContext context ) {
43             ProcessContext.Begin( new MvcContext( context ) );
44         }
45         public Boolean IsReusable {
46             get { return true; }
47         }
48     }
49 }

 看到这个,大家不禁要问,系统怎么知道HTTP使用哪个IHttpHandler的具体实现呢?

接下来请大家打开 源代码 wojilu.Web 的 Web.Config文件。

这里有一个httpHandlers节:

里面定义了对于各种请求的处理方法。例如,对于refresh.aspx使用wojilu.Web.Handler.RefreshServerHandler来处理,robots.txt使用System.Web.DefaultHttpHandler来处理。

最后一行里,如果这个请求不属于其他处理方法的职责范围的话(例如aspx),就使用wojilu.Web.Mvc.CoreHandler来处理。

1     <httpHandlers>
2         <add verb="*" path="CaptchaImage.ashx" type="wojilu.Web.Handler.CaptchaImageHandler, wojilu"/>     
3         <!-- <add verb="*" path="WebForm1.aspx" type="System.Web.UI.PageHandlerFactory" /> -->
4         <add verb="*" path="*.asp" type="wojilu.Web.Handler.PageNotFoundHandler, wojilu"/>
5         <add verb="*" path="robots.txt" type="System.Web.DefaultHttpHandler"/>
6         <add verb="*" path="refresh.aspx" type="wojilu.Web.Handler.RefreshServerHandler, wojilu.Core"/>
7         <add verb="*" path="*.css,*.jpg,*.jpeg,*.gif,*.png,*.bmp,*.ico,*.js,*.htm,*.html,*.xml,*.swf,*.zip,*.7z,*.rar,*.cur" type="System.Web.DefaultHttpHandler"/>
8         <add verb="*" path="*" type="wojilu.Web.Mvc.CoreHandler, wojilu"/>
9     </httpHandlers>

这样的话,对于aspx的页面请求,通过查看Config知道了使用wojilu.Web.Mvc.CoreHandler来处理。通过调用wojilu.Web.Mvc.CoreHandler的ProcessRequest方法,开始处理请求,ProcessRequest的ProcessContext.Begin正式开始MVC之旅了。

Config ->

    wojilu.Web.Mvc.CoreHandler.ProcessRequest - >

          wojilu.Web.Mvc.CoreHandler.ProcessRequest: ProcessContext.Begin

这里介绍了整个MVC的大体流程和进入MVC的入口方法,大家学习wojilu可以从这里作为入口。

 

下次预告: [核心]我记录系统的路由处理  2011/6/16

 

wojilu下载地址:http://www.wojilu.com/Forum1/Topic/1308 

我记录网址 http://www.wojilu.com/

欢迎大家加入我记录开发团队

 

 

转载于:https://www.cnblogs.com/TextEditor/archive/2011/06/13/2078856.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_826749.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

艾伟_转载:VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇

本系列文章导航VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇VS 2010 和 .NET 4.0 系列之《起始项目模板》篇VS 2010 和 .NET 4.0 系列之《多定向支持》篇VS 2010 和 .NET 4.0 系列之《多显示器支持》篇VS 20…

20 超棒的 Photoshop 网站布局设计教程

Photoshop 网页设计的教程是很大的资源&#xff0c;是网页设计快速简便的方法之一。作为一个良好的开端&#xff0c;我们应该善于学习他人在网页设计领域的理解。在这个原则的基础上&#xff0c;你可以参考以下教程&#xff0c;学习Photoshop的新技术和战术的使用。 设计一个产…

linux版_纯小白搭建WordPress个人博客网站全面教程(Linux版)

原文链接&#xff1a;纯小白搭建WordPress个人博客网站全面教程&#xff08;Linux版&#xff09;作者&#xff1a;筱某佳本文面对所有建站新手&#xff0c;如果你对于建立个人站点无从下手&#xff0c;那么本文将会给你很大的帮助。本系列分为Windows版本和linux版本&#xff0…

大型游戏网站源码_自学Python才几天,就成功编写出俄罗斯方块游戏,难道是天才?...

人们常说&#xff0c;python不适合做游戏&#xff0c;但我偏爱玩游戏&#xff0c;做不了大的&#xff0c;做个小的也行啊。于是&#xff0c;我在自己毫无基础的条件下&#xff0c;用两天时间学python基础理论&#xff0c;再用已有的俄罗斯方块游戏源码和源文件&#xff0c;在我…

化工网站开发_宁夏、内蒙古、甘肃等西部地区鼓励类化工产业项目

点击上方蓝字&#xff0c;关注农药资讯网国家发展改革委门户网站8月12日消息&#xff0c;国家发改委会同有关部门对《西部地区鼓励类产业目录(2014年本)》进行了修订&#xff0c;形成了《西部地区鼓励类产业目录(2020年本&#xff0c;征求意见稿)》&#xff0c;现向社会公开征求…

mapinfo在线地图插件_推荐几个在线工具导航网站,有上万个工具,满足你生活工作需要...

随着网络带宽加速&#xff0c;现在越来越多的工具开始搬到网上&#xff0c;工具在线云服务是一种发展趋势&#xff0c;未来有一天我们将无需在电脑上安装那么多软件了。只需要在Chrome内核的浏览器或者其它非主流浏览器的扩展应用中心添加个插件就可以使用了&#xff0c;或者直…

利用dns解析来实现网站的负载均衡

当网站的访问量大了就会考虑负载均衡&#xff0c;这也是每一个架构师的基本功了&#xff0c;其基本地位就相当于相声里的说学逗唱&#xff0c;活好不好就看这个了 :) 传统的负载均衡思路是单点的&#xff0c;不管你是硬件的还是软件的基本都是这样的原理 对于一般的需求来说&am…

【转】我们的电子商务网站—Webtogs的发展历程

过去的11个月里&#xff0c;我和我的团队在一个新的电子商务网站webtogs.co.uk上销售户外运动和探险装备。06年9月份成为了我们新的开始。 一切从零开始 一个网站设计的好坏就看它是不是很好地将网上的产品展示变成实际的交易&#xff0c;我们所做的每件事都要达到最好的目标。…

阿里云普惠建站轻量应用服务器/ ECS 云服务器/虚拟主机如何选择?

阿里云普惠建站计划是阿里云面向刚接触云服务器的朋友们准备的&#xff0c;适合新手建站使用的建站项目。之前魏艾斯博客发过阿里云普惠建站主机低至 14 元/月 轻量应用服务器 1 核/1G/3M 带宽/40G SSD/500G 流量包/350 元/年的文章&#xff0c;简单介绍了一下这个活动&#xf…

阿里云ECS建网站(建站)超详细全套完整图文教程!菜鸟必看!

阿里云ECS建网站&#xff08;建站&#xff09;超详细全套完整图文教程&#xff01;菜鸟必看&#xff01; Ethan_HangZhou | https://www.jianshu.com/p/2604e53a7f6a 第一步&#xff1a;如何以最低价格快速买到阿里云服务器&#xff1f;1 1.1 如何便宜购买云服务器&#xff1f…

4.Windows Server2012 R2里面部署 MVC 的网站

网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/4822808.html#iis 后期会在博客首发更新&#xff1a;http://dnt.dkill.net 添加角色 基本功能 默认即可 装一下iis 选4.5和iis核心 其他的下面继续选 安全肯定全要的&#xff0c;常见HTTP和应用程序开…

60个优秀的免费网站模板下载(下篇)

这篇文章收集了60款各式各样的高质量网站模板&#xff0c;您可以免费下载使用。当你需要在短时间内制作出网站的时候&#xff0c;网站模板就非常有用了&#xff0c;感谢那些优秀的设计师分享他们的劳动成果&#xff0c;让更多的人可以使用他们的创意设计&#xff0c;希望这些网…

新云CMS网站内容管理系统生成HTML静态化教程

网站静态化一直是SEO重点关注对象。静态化有好有坏&#xff0c;最大的好处是收录迅速&#xff0c;坏处是纯静态的HTML页面难以维护&#xff0c;特别是对于大型的网站。本文将介绍如何将新云CMS网站管理系统静态化。 本文以新云CMS 3.0为例。 1.进入后台控制面板&#xff0c;找到…

构化数据让 SEO 更上一层楼

继上一篇使用 SSR 来优化搜索引擎之后&#xff0c;为了进一步提高自己的网&#xff08;zhi&#xff09;站&#xff08;ming&#xff09;排&#xff08;du&#xff09;名&#xff0c;就打算进一步优化 SEO。之前有听朋友提到结构化数据对 SEO 有帮助&#xff0c;便去了解了一下&…

分享最棒的免费PSD资源网站

为什么80%的码农都做不了架构师&#xff1f;>>> 日期&#xff1a;2012-9-23 来源&#xff1a;GBin1.com 是不是你也同样有过这样的经历&#xff0c;需要免费PSD的时候找不到&#xff0c;不需要的时候又常常能够看到&#xff0c;今天我们将要分享一堆免费下载PSD文…

学习SEO更像是一种参悟

2019独角兽企业重金招聘Python工程师标准>>> 济宁辉腾网站建设www.0537web.net 供稿 不少刚接触SEO的新手都会问&#xff0c;要怎样才能学好SEO呢&#xff1f;在这之前&#xff0c;你得确定你的目的只是单纯的想赚钱还是想从事SEO这个行业。这两者区别很大。赚钱的…

大型网站后台架构的Web Server与缓存

1.1 Web server Web server 用来解析HTTP协议。当web服务器接收到一个HTTP请求时&#xff0c;会返回一个HTTP响应&#xff0c;例如送回一个HTML页面。为了处理一个请求&#xff0c;web服务器可 以响应一个静态页面或者图片。进行页面跳转&#xff0c;或者把动态响应的产生委托给…

使用Java开发高性能网站需要关注的那些事儿2

近期各家IT媒体举办的业内技术大会让很多网站都在披露自己的技术内幕与同行们分享&#xff0c;大到facebook&#xff0c;百度&#xff0c;小到刚起步的网站。facebook&#xff0c;百度之类的大型网站采用的技术和超凡的处理能力的确给人耳目一新的感觉&#xff0c;但并不是每个…

java处理高并发高负载类网站的优化方法

2019独角兽企业重金招聘Python工程师标准>>> 一&#xff1a;高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用&#xff0c;数据库的响应是首先要解决的。 一般来说MySQL是最常用的&#xff0c;可能最初是一…

9月第1周国内社区类网站/频道:西安论坛上升5位

09月11日报道&#xff1a;根据国际统计机构Alexa公布的最新数据显示&#xff0c;9月第1周&#xff08;2013-09-02至2013-09-08&#xff09;&#xff0c;我国社区类网站/频道排行榜中&#xff0c;天涯虚拟社区以3060的周均用户覆盖数居榜首&#xff1b;排行第二的是凯迪网络&…