有谁有过CSLA的真实经验吗?

2025-07-27 07:03:36 173

在我具体回答你的问题之前,我想先把一些想法记下来。CSLA适合你的项目吗?那得看情况。我个人认为CSLA的桌面应用程序不重视单元测试作为一个高度优先。如果您想轻松地扩展到n层应用程序,那么CSLA是很棒的。CSLA倾向于得到一些flack,因为它不允许纯单元测试。这是事实,然而,就像任何科技领域一样,我相信没有一条真正的道路。单元测试可能不是您正在为特定项目进行的事情。对一个团队和一个项目有效的东西可能不适用于另一个团队或其他项目。

对于CSLA,也有很多误解。这不是ORM。它不是NHibernate的竞争对手(实际上,使用& NHibernate作为数据访问非常合适)。它将移动对象的概念形式化。

1.有多少人使用CSLA?

基于CSLA论坛,我想说有相当多的基于CSLA的项目。老实说,我不知道到底有多少人在使用它。我过去曾在两个项目中使用过它。

2.优点和缺点是什么?

虽然很难在一个简短的列表中总结,但这里是一些在脑海中出现的赞成/反对意见。

优点:

让新开发人员跟上进度是很容易的。CSLA的书和样例应用程序是很好的资源来跟上速度。这个验证框架确实是世界级的,并且已经被许多其他非CSLA项目和技术“借用”了。在业务对象中进行n级撤消为n层可伸缩性而更改配置行(注意:甚至不需要重新编译)关键技术是从“真实”代码中抽象出来的。当WCF被引入时,它对CSLA代码的影响最小。可以在windows和web项目之间共享您的业务对象。CSLA促进行为的规范化,而不是数据的规范化(将数据库留给数据规范化)。缺点:

单元测试困难缺乏关注的分离(通常您的业务对象内部有数据访问代码)。因为CSLA促进了行为的规范化,而不是数据的规范化,这可能导致命名类似但目的不同的业务对象。这可能会造成一些混乱,并使人觉得您没有适当地重用对象。这就是说,一旦生理上的飞跃被采取,它更有意义-它似乎不适当的构造对象的“旧”的方式。以这种方式构建应用程序并不是“时尚”的。你可能很难找到对这项技术充满热情的开发人员。3.在阅读后,CSLA真的不适合TDD?。

我还没有找到一种有效的方法来处理CSLA的TDD。尽管如此,我相信有许多比我更聪明的人可能尝试过这一点,取得了更大成功。

4.我的选择是什么?

领域驱动-设计目前正在得到很大的推动(当然,这对一些应用程序来说是非常棒的)。在引入LINQ (以及LINQ、Entity等)之后,也出现了许多有趣的模式。Fowler的书PoEAA,详细说明许多模式,可能适合您的应用程序。请注意,有些模式是相互竞争的(即活动记录和存储库),因此将用于特定的场景。虽然CSLA并不完全匹配书中描述的任何模式,但它最类似于活动记录(尽管我觉得声称与此模式完全匹配是短视的)。

5.如果您已经停止使用它或决定不使用它?

我没有为我的上一个项目完全推荐CSLA,因为我认为应用程序的范围对于CSLA所提供的好处来说太大了。

我不会在网络项目中使用CSLA。我觉得还有其他更适合在这个环境中构建应用程序的技术。

总之,尽管CSLA绝不是一个灵丹妙药,但它适合于某些场景。

希望这能有所帮助!