Asp.net2005 使用 NVelocity 实现 MVC

NVelocity 现在是由Castle 负责维护,通过对比NVelocity-0.4.2.8580NVelocity-src-0.5.0.1  可以发现 Castle 维护的NVelocity 里面少了很多东东,我想着可能,原来NVelocity 里面部分功能 在Castle 的其他的项目 已经得到实现,所以他们把其中的部分功能给去掉了吧 ,如果这个怀疑是错误的,请告诉我 呵呵
              

我比较喜欢使用新版本,这里我使用的是0.5.0.1的版本
我一直都在尝试着使用aspx 实现MVC 我听说2008 发布了MVC 框架,但是我没有装2008,就没有办法尝到那种感觉了呵呵
Mode 层 可以很容易的实现分离 这个很多的资料都介绍了 但是Control层 和 View 层如果想彻底的分离真的很麻烦

所以我觉得使用aspx 很难真正意义的实现MVC ,每一个aspx页面都自动生成一个aspx.cs 文件与之对应,这让我每次都必须把一些代码写到这个绑定的cs文件中,我希望的是aspx页面能够对应到我的类库中的一个类,而不是aspx绑定的那个cs文件,这样做至少在代码重用封装等方面 会好很多

既然每一个aspx页面都会生成一个cs文件与之对应,我们能不能不用aspx页面去表现数据, 直接就使用NVelocity 的模板文件,这样的想法源于我们公司的一个java项目,使用的也是Velocity ,同时里面有一个重要的应用就是地址映射.
比如我通过地址栏访问的是 index.htm 而这个页面根本不存在,他被映射到一个Velocity的模板文件上面了
想到这里,由于是,net项目,我又一次不得不想到Castle ,可是粗略的看了几个demo后,感觉有点晕
索性自己想办法实现吧
OK重要到主题了 来看看我的实现方式吧
  来看看对应的类文件   注意这里必须是严格对应的哦
红色标示的注意不是真正意义的Html文件 而是加入了Velocity模板语言的Html 所以应该算是模板文件
然后看看我的配置文件web.config

      <httpHandlers>
        
<!-- 
        verb是指允许的动作“GET”、“POST”、“PUT”中的一种或几种,星号“*”表示全部允许;
        path是指匹配路径,支持简单的通配符;
        type是指绑定的类名以及包括命名空间(如果有的话);
  
        
-->

        
<add verb="GET" path="*.html" type="HttpControl.HttpHandler, HttpControl" />
      
</httpHandlers>

接管所有的html文件的请求 映射到HttpControl.HttpHandler

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Reflection;

namespace HttpControl
{
    
public class HttpHandler : IHttpHandler
    
{
        
IHttpHandler 成员

    }

}

这个是我的HttpHandler 类, 继承并实现了IHttpHandler接口
思路就是通过url 地址 来找到 HttpControl 程序集下面的对应的类
看看 怎么应用吧
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;

namespace HttpControl.Static.Test //注意这里 和url地址是对应的
{
    
public class index :IHttpFactory
    
{
        
HttpFactory 成员
    }

}

看到这里应该明白了吧 其实就是通过地址 来映射到 HttpControl 里面定义的类 虽然也是一个页面对应一个类,但是感觉要比 使用aspx.cs 会好些
同时实现了某种意义上的mvc 程序人员只负责写程序就好了 ,大家只要把模板变量约定好就可以了 而美工呢基本不涉及程序部分,他们做他们的就好了
或许会问道效率,效率我想会比aspx来的慢吧 因为涉及到一个映射查找的过程,但是我们可以使用静态化, 搜索部分 可以使用lucene
 好了就写到这里吧,有什么问题欢迎讨论
posted @ 2008-04-24 18:23  雨中漫步的太阳  阅读(1588)  评论(5编辑  收藏  举报