InfoQ

新闻

开源MVC框架PixelDragonsMVC.NET发布

作者 王翔 发布于 2007年7月2日 上午12时54分

社区
.NET
主题
开放源代码,
Web框架
标签
MVC,
ASP.NET

近日,Pixel Dragons发布了基于ASP.NET 2.0的MVC开源框架——PixelDragonsMVC.NET(之前叫SimpleMVC.NET),并从很多关键企业应用特性方面,尝试对ASP.Net现有框架进行增强。作为被普遍使用的架构模式,MVC有效的隔离了数据与UI之间的关系,ASP.NET本身就是一个典型的MVC实现,但为了获得很多高级特性的支持,需要应用自己完成很多代码才可以获得。PixelDragonsMVC.NET在很多方面提供了不错的支持:

  • 它有自己独立的配置文件,该文件按照M-V的方式组织,并且为每个M和V提供逻辑命名,就象应用中经常使用的逻辑数据库连接一样,有效隔离ASP.NET逻辑与实际M和V关系,以控制反转的方式将实际M和V的执行交由框架完成。
  • 借鉴了Java社区中MVC的实现,该框架也支持每个Controller可以支持多Action特性。虽然不是必须,但随着应用规模的扩大,1:1的Controller:Action将会使应用关联更加复杂,与其将某个业务实体或者应用的某个功能领域与多个Controller产生M:N的交互,不妨将Controller作为“挡箭牌”,由他同时管理多个Action。
  • 随着AJAX的普及,View的概念也逐渐出现Server Side和Client Side交叉的情况,该框架提供了一个轻量的共享(Shared)UI特性,目的很简单——无论Server还是Client都可以尽量共享同一段UI代码。
  • 照顾到中小型项目的使用要求,该框架对事务提供了简化的支持手段,从配置系统中获取的事务控制信息被“嵌”在HttpContext中,进而在Server端指导NHibernate应该对具体Action启用何种事物机制。
  • 在对ASP.NET Request的处理上,该框架作为一个HttpHandler被配置到web.config中,对于所有的.ashx文件进行拦截(可配置为其他扩展名),根据需要调用相应的Controller和View,可将很多任务在后台直接处理掉。
  • 为了便于开发人员使用,框架外延部分的数据访问和日志操作方面采用了NHibernateLog4Net两个框架。

但从企业应用需要看,这个框架还有很多不足的地方。

  • 它仅仅支持ASP.NET,而不能用于Windows Form,所有操作的隔离环境限于具体HttpContext,而没有对线程提供支持。
  • 框架自身有些封闭,数据访问部分和事务控制部分几乎本地采用了Nhibernate,向上无法通过定制,切入Enterprise Library,向下无法让项目人员使用简洁如SqlHelper的访问机制。
  • 其定位有些尴尬,如果确实服务于中小型应用,在Visual Studio.NET环境下,C、V混合虽然是被普遍反对的方法,但实际开发中出于进度和人员技能的限制,或多或少会出现,学习使用一个新的MVC框架似乎有些繁琐;在大规模企业应用中,这个框架扩展性又显得不够。

尽管如此,如果项目已经选择NHibernate进行ASP.NET项目开发的话,该框架可以作为一个不错调度机制集成。经过它的“梳理”,在项目页面的不断修改和充实情况下,依然可以在代码外围——配置文件中管理他们,尤其是Controller可以根据需要同时激活多个Action。另外,相对“庞大”的UIP而言,PixelDragonsMVC.NET专注而且简洁很多,学习门槛也非常低。


作者简介:王翔,全国海关信息中心高级架构师,从事海关主要广域分布式系统的设计和实施,多次参与各业务系统的优化。此外,作为信息安全工作组副组长,他还一直致力于应用密码技术和公钥基础设施保障海关业务的安全运行。此外,他还是《程序员》杂志的专栏作者。

没有回复

回复

独家内容

Hadoop中的集群配置和使用技巧

本文介绍了Hadoop如何配置分布式框架运行环境,同时特别讲解了其中的一些细节。Hadoop可以单机跑,也可以配置集群跑,这里主要重点说一下集群配置运行的过程。本文是Hadoop入门实践三部曲的第二部。

JavaScript多线程编程简介

虽然有越来越多的网站在采用AJAX技术,但是开发复杂的AJAX应用仍然是个难题。本文探索了如何应用多线程缓解其中一些问题。

Ruby的开放类──或者:怎样避免动态打补丁

Ruby的开放类(Open Classes)功能强大,但很容易被误用。这篇文章关注于怎样减少使用开放类的风险,介绍了一些其他可替代的类似方法,并分析了其他语言如何实现类似的功能。

REST反模式

在本文中,Stefan Tilkov讲解了一些经常出现在自称“符合REST式设计”的应用中的反模式(比如:全部采用GET或POST,忽视缓存及响应代码,误用cookies,忘记超媒体与MIME类型,以及破坏自描述性等),并给出了避免这些反模式的对策。

分布式计算开源框架Hadoop介绍

Hadoop是Apache开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、Facebook和Yahoo等等。本文是Hadoop入门实践三部曲的第一部,主要讲述了What和Why的问题。

37 Signals的实用最小主义实践

本文结合37 Signals公司在开发Basecamp等产品时的实践,介绍了实用最小主义开发方法。实践证明,尤其是在开发Web应用时,这一方法非常有效。根据作者的观察,Google现在之所以那么成功,其所遵循的软件开发哲学和最小实用主义非常类似。

与林昊一起探讨OSGi

在今年5月份的网侠大会上,InfoQ中文站有幸与国内OSGi的先锋林昊(BlueDavy)在一起探讨了OSGi的相关话题,包括它的优势、复杂度以及Java下的实现等等。

超越F#基础——异步工作流

Robert Pickering在F#的第三篇文章中,他继续着上次的话题,不过这次他要关注的是异步工作流(Asynchronous Workflows),以及在使用这个特性后获得的性能改善。虽然这篇文章是关于F#的,但是这样的知识对于所有的.NET语言都是适用的。