菜鸟涛

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

Wonderful。 

已经是第6天了,今天goal:开始vb.net的web开发之旅。

先献上前5天,做的winForm的例子,使用了Nhibernate。菜鸟涛前5天写的代码

关于ASP.net的概念:请查看http://www.cnblogs.com/artech/archive/2007/09/13/891262.html的文章,描述的非常好。

MS的asp.net web开发有别于传统的web开发,asp.net有些很关键的概念就是“代码后置,界面和代码分离”和“事件驱动”以及“组件开发”。这和C/S的开发模式很类似。但web开发其服务器是必不可少滴。微软的web服务器是IIS,这点很不爽,绑定的太死了。如果想用一些开源的服务器的话,还要经过一番折腾....这里就不折腾了。

整理asp.net的url请求过程 : 

1.解析URL,URL被web服务器(inetinfo.exe)解析 ,其会解析该url后缀,然后根据该后缀,IIS来决定调用那个具体的DLL。如xxx.aspx时,就会调用aspnet_isapi.dll。

2.上述的DLL又会去调用3wp.exe ,然后3wp.exe去具体调用.net framework的类库去具体操作。

这些调用.net framework的类库的顺序:

 ISAPIRuntime-->HttpRuntime-->HttpApplicationFactory-->HttpApplication-->HttpModule--HttpHandlerFactory-->HttpHandle。

现在一个一个的解释下上述类库的作用

ISAPIRuntime: 简单理解就是接收Request传送过来的数据,会把数据封装成HttpWorkerRequest对象。然后去通知HttpRuntime。

 

HttpRuntime:   简单理解ASP.NET HTTP 管线的开关,就是IIS 所收到的对某 Microsoft ASP.NET 页面的每个请求都被移交给 ASP.NET HTTP 管线,这个过程就是实例化HttpRuntime的过程。根据HttpWorkerRequest对象生成HttpContext,HttpContext包含request、response等属性, 再调用HttpApplicationFactory。

 

HttpApplicationFactory :工厂模式,管理HttpApplication对象,通过IHttpHandler, 调用HttpApplication对象执行请求。

 

HttpApplication:进行HttpModule的初始化,HttpApplication创建针对此Http请求的 HttpContext对象


 

HttpModule:当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。

好文:http://www.cnblogs.com/stwyhm/archive/2006/08/09/471729.html 

 

HttpHandlerFactory : 工厂模式,管理HttpHandler对象。

 

HttpHandler:Http处理程序,处理页面请求,很像j2ee里的servlet。呵呵。

好文:http://www.cnblogs.com/stwyhm/archive/2006/08/09/471765.html 

 

 

 Ok,介绍完这些,正式开始写首个vb.net的web,简单滴display “hello world”  on page。

visual studio 2010 --》file--》new project--》 vb.net--》web--》asp.net web application 

来看看生成的project的目录结构:

 

 这样还是不完全,ok,点击,展开全部的文件。结构目录很清晰。那简单介绍下,目录下的一些文件的意义:

My project里定义了一些application.myapp,AssemblyInfo.vb...  就是一个应用程序的信息,程序集等等。

Scripts 里放的是jquery1.4的javascript库,如果你有自己一些常用js库,最好也放到该文件夹,便于维护管理。

Styles 里放的是CSS,里面有个默认的Site.css样式文件。

Default .aspx默认的首页。那么当这个project run起来时,服务器IIS是怎么知道要首先显示Default .aspx呢?当生成asp.net web project时,会自动默认其为首页,如果想不用这个默认页,那就需要修改一个很重要的web配置文件:web.config,在web.config添加代码:

 <system.webServer>

        <defaultDocument>
            
<files>
                
<clear />
                
<add value="xxx.aspx" />
            
</files>
        
</defaultDocument>
 
</system.webServer>

 

web.config如上所述,注意web.config可以有很多个,你可以在asp.net web project任意目录在新建一个或多个web.config,这时根目录下的web.config是父亲,其他目录下web.config是儿子,它继承父亲的一切配置属性。和面向对象里的继承是一个概念。这样的好处是层次清晰,便于修改和定制。同时根目录下的web.config也不会过于充血,父亲只是负责配置公共的。

如下图Account文件夹里也有个web.config.其就是为Account下的web 应用服务滴,也是一个子类。这样结构是不是很清晰了,如果我在建个Bank文件用来处理一些银行的业务,那也可以在Bank文件下新建个web.config,其就是为Bank服务滴,和Account文件下的web.config没有半分钱的关系,很独立。呵呵。


 大体目录结构代表的意思就介绍到这里,让project飞。很简单visaul studio里点击run吧,呵呵呵。。。。

明天会介绍一些组件,以及用Nhibernate连接数据库。。。 

Ok,Today End。

Persist。 

 

 

posted on 2011-04-21 09:23  菜鸟涛  阅读(299)  评论(2编辑  收藏  举报