其实接触CSLA有三年的时间了,在这过程中有过对这个框架的新鲜感,觉得它无所不能,也有过对它的一些失望,觉得它其实没有提供什么,反而有所制约.在这过程中,逛了N次国外的这方面的论坛和社区,也看过框架作者的几本书,所以也积累了点对这个框架的了解.转眼间这个框架已经发展到了4.0版,和当初使用的2.0,2.5发生了不少变化, 虽然最近的工作与这个框架没有丝毫关系,还是想起在年末空闲之余把对这个框架的一些认识和大家分享,希望能够对使用这个框架的初学者有所帮助,我们一起来学CSLA.NET. 之前写过两篇关于CSLA.NET的随笔,一个是CSLA.NET 发布3.6版本,一个是翻译的概述CSLA.NET 3.6,当初接触CSLA.NET也是因为那本《Business Object 2005》,如果你之前没有接触过CSLA.NET,建议你还是读一下,现在的版本是《Business Object 2008》,可以从这里下载。
CSLA.NET是完完全全的充血模型,一个对象里面包含属性,业务方法,验证规则,数据访问等,这足以让人眼花瞭乱。再次提醒,在使用这个框架前,了解框架的意图是必须的,否则你必须会始终觉得这个框架是一个累赘,并非所描述的那么强大。即便你明白了框架的意图,也并不是说明你可以熟练的应用这个框架于任何项目当中发挥它的强大,一定要因地制宜,否则它还真会成为你的一个累赘。并不是美好的东西它就一切都是美好的,whenever wherever,并不是别人说是美好的东西,你就会也觉得它是美好的。其实在一段时间内,也会有人不停地问我关于CSLA.NET的一些问题,包括问它好不好,实用不实用,它倒底提供了什么。我想我还是通过一个实际的例子,来和初学者一起来了解这个框架的应用,能够在这个框架有所为,无所为方面给出自己的一些意见。
这一节我们并不会开始这一系列,但在开始这一系列之前,一定要明确你对面向对象有深入的理解,并带着这个看完这一系列的CSLA.NET应用。比如一个人用一个对象Person来抽象,一群人是用List<Person> 还是 GroupPerson? 万物皆对象,但是你又是否能够接受为了这个理念使得一个用户权限就要设计那么多个对象,写那么多个方法,进行那么多次调用呢?你可是用一个存储过程就能够搞定的事啊,效率高灵活性也不见得弱? 我不是在批评CSLA,而是希望能够先带着一些问题。我们再来看一下CSLA所“声称”提供的功能: 1.支持完全面向对象的编程模型 只是支持,如果使用者不面向对象的话也扯淡,使用者如果面向对象,C#就支持完全面向对象编程 2.支持对象的N层撤销 当然这个功能在Webform中并不可能提供 3.支持对象的业务状态的跟踪,是否脏数据,是否已删除 不过这个你得注意你的对象的生命周期,不要以为多次请求,多次postback后,它还能跟踪到你的对象 4.使整个系统开发更规则化, 业务逻辑,规则验证,数据访问,权限验证各归各处,便代码风格会相对统一,也就会显得整个框架更容易使用。因为你不必知道你的数据访问是怎么被调用了,你的验证都在哪些地方被调用了,它底层都帮你调了。不是它的强大,而你的无知。如果你仔细看过它的源代码,你会一目了然。反而过来,这样的规范化必须也是要付出代价的。 5.有较高的灵活性和系统性能 至今还不相信的事实 6.业务层与UI分离,可以采用任何UI框架,支持多种UI绑定 我想我们用烂了的三层架构也有这个功能 7.支持WebService,Remoting,WCF等访问,手动配置即可 这个可以有,新概念:数据访问(DataPortal),移动对象所造就的。不过你是否有看过它的原理,或许这个才是你可以有的。 同样这也会带来一定程度的负面影响,相信你看过会也会有同感。 8.对象和属性,方法的授权 这个可一定要考虑下性能 这么多的疑问怎么国外那么多人在用,国内最近用的人也多了起来,我真的不是CSLA的批判者,或许正好相反。再来聊聊CSLA与模型驱动吧,最近周金根在园子里发了又发,很是不火,之前与他在模型驱动这方面有过讨论,对于他的OpenExpressApp平台在这么短的时间内就已经开发使用了,真的是不可思议。不过理论上讲,CSLA比较适合于模型驱动,东西少比较紧凑,除了模型类就没别的了。
另外还要提到两个人力资源,一个是冯瑞涛大哥,在这里创办的QQ群和CSLA团队,我们上个月还同是某某公司的同事呢。另外一个是CSLA .NET 的博客,他接触CSLA的时间可够长了,现在就指着这个吃饭呢,呵呵,就职于某外企,整天在家办公,真是羡慕。在这里还泄露一下他的MSN:[email protected]. 或许你已经是CSLA的高手了,只不过现在比较烦于手写代码或者是觉得codesmith生成的代码仍然不够智能,那么给你推荐另外两个或许你不知道的CSLA图形开发工具,一个是ViewPoints,没有地址了,没卖出去多少公司就黄了,可以嵌入在Vs2008里面,支持对象的设计,生成代码,我刚发布的下载地址。另外一个是cslafactory, 已经有一年没动静了,版本居然还不支持vs 2008,据说是遇到问题解决不了。。。。幸好还有一个就是我说过的Sculpture了,不过它的灵活性支持反而会觉得他对CSLA的支持并不好。 太遗憾了都不完善,或许这样的一个工具只有我们来实现了,很是希望你同时在看我发的另外一个系列,或许我们在这个系列后来使用Visual Studio DSL完成一个CSLA开发工具。同意的顶吧!~ 忘了说正事了,不知道你CSLA下载了没有,从这里下载并安装吧。太晚了,洗洗睡了,明天开始Let’s 上路!