关于SubSonic的问答

SubSonic 是一个类似Rails的开源.NET项目。你可以把它看作是一把瑞士军刀,它可以用来构建Website和通过ORM方式来访问数据。在最新的版本2.0.3中,我们对执行引擎作了很大的改进,也修复了大量的Bug。

Rob Conery 和 Eric Kemp 是推动SubSonic的主要开发人员,与项目良好的发展有着密切的关系。

InfoQ 编辑提出了一些关于项目的问题,得到了Eric和Rob的积极回复:

InfoQ:是什么驱使你们创建SubSonic?

Rob:大约95%的应用程序都通过某种方式来访问数据库。由于某些原因,95%的Visual Studio和.NET工具做的事情是把数据从数据库中取出来然后把数据放到UI上显示。当我第一次看到SqlDataSource和GridView的实例,我觉得它们真的太牛了,然而它们打破了我所知的所有DAL惯例。ObjectDataSource是可以解决这个问题,但为什么我一定要使用另外一个工具来连接我的程序和数据呢?从一个构架师的角度,我看不到任何理由。

我记得在Fritz Onion的站点上读到一篇博文,他使用BuildProviders做出了一个对象模型,我就在寻思“有一天我也要这样做!”。当我重构Commerce Starter Kit的时候,这天到来了,我尽我所能把一些数据访问代码调整到基类里面去。我以非常规的方式使用泛型,可能已经超越了泛型原来的设计意图,在这个过程中我偶然找到了一个非常酷的设计模式,用它可以生成很少的代码就能完成整个数据访问层的工作。当我让它正常工作起来,我发誓,我简直从我的椅子上跳起来了。

之后我又花了两个星期来不断的测试,以解决其中的错误和性能问题,我记得我曾经想“在这里我已经得到某些东西了”。有段时间,我曾经做过一些Ruby/Rails的工作,我有一些想法能把RoR的优点带到ASP的世界来。虽然Rails最匹配的语言是Ruby——但是有可能RubyCLR(或者其他.NET的动态语言)有一天将能完善,到那时,我认为SubSonic将能发挥更大作用。

InfoQ:SubSonic当前的进展如何?

Eric:虽然SubSonic都还不满一周岁,在4月底它发布了2.0,相对于2006年12月的1.0.6版提供了一系列新特性来扩展其功能。从那时起,我们又发布了3个修正版本,2.0.3就是昨天才发布出来的。

SubSonic是一个非常活跃的项目,在CodePlex已经持续排名前10了,和一些微软支持的项目并列在一起,如AJAX Control Toolkit、Enterprise Library和IronPython。虽然这很难说明它是真的流行,不过下载数量确实是很鼓舞人心的——SubSonic 2.0.2在不到3周的时间里被下载了几乎2500次,2.0.3在第一天里被下载了差不多400次。

InfoQ:什么是SubSonic的吸引人之处?

Eric:作为一个数据访问平台,SubSonic在DataSet的强大与速度,和ORM平台的高级功能之间寻求平衡,其结果是无需开发人员具备多少对象映射的经验,也不需要他们继续使用SQL。

作为一个开发人员生产力工具,SubSonic通过从基础上支持软件开发的迭代本质,自动化了数据驱动的应用程序开发中重复性的、无趣的过程。通过这个自动生成的Web-Based的数据操纵的“架子”,轻量级和灵活的查询工具,以及一个不断丰富功能的用于通用业务数据验证和转换需要的类库,SubSonic让开发人员可以快速的构建他们的应用程序,而不是一些支撑的基础系统。

InfoQ:有哪些人在使用SubSonic

Eric:要评价SubSonic的使用是困难的,我们只能从什么人在论坛中或者博客中分享经验来判断。不过,我们知道使用的范围是很广泛的。SubSonic支撑着几个开源项目,如dotnetkicks.com,并且目前正被集成到一个顶级的ASP.NET的博客平台上。使用SubSonic的既有业余开发的个人应用程序,也有一些500强企业。

InfoQ:SubSonic未来会加入那些功能?

Eric:除了计划中的对我们的查询引擎的一些改进,也会在2.1发布版中提供REST的相关功能,我们目前是按照一个基本指导原则来“逐步进步”。具体说来,这意味着一再强调我们“惯例高于配置”的“老调”,按照有助于提升开发人员的生产力的一些通用模式,来完成一个更完整和更具扩展性的“开箱即用的应用程序”。

谢谢Rob和Eric!

查看英文原文: QnA on SubSonic

你可能感兴趣的:(关于SubSonic的问答)