NVelocity 现在是由Castle 负责维护,通过对比NVelocity-0.4.2.8580 和 NVelocity-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
接管所有的html文件的请求 映射到HttpControl.HttpHandler
这个是我的HttpHandler 类, 继承并实现了IHttpHandler接口
思路就是通过url 地址 来找到 HttpControl 程序集下面的对应的类
看看 怎么应用吧
看到这里应该明白了吧 其实就是通过地址 来映射到 HttpControl 里面定义的类 虽然也是一个页面对应一个类,但是感觉要比 使用aspx.cs 会好些
同时实现了某种意义上的mvc 程序人员只负责写程序就好了 ,大家只要把模板变量约定好就可以了 而美工呢基本不涉及程序部分,他们做他们的就好了
或许会问道效率,效率我想会比aspx来的慢吧 因为涉及到一个映射查找的过程,但是我们可以使用静态化, 搜索部分 可以使用lucene
好了就写到这里吧,有什么问题欢迎讨论