2012-02-23 31 views
1

我的开发团队正在评估可用于.NET的各种框架,以简化我们的编程,其中之一是CSLA。我不得不承认,对于CSLA是否会因与Spring.net或Windsor等依赖注入框架结合使用而感到困惑。如果我们将这两个DI框架中的一个与例如实体框架合并来处理ORM义务,那么这是否否定了完全使用CSLA的需要或好处?CSLA应该与依赖注入框架一起使用吗?

我对所有这些框架有不同程度的理解,并且我试图大致了解对我们的企业架构和对象设计最有利的东西。

谢谢!

回答

3

CSLA是用于创建业务实体的框架,因此与IoC容器或ORM相比具有独立的关注点。在企业应用程序中,您应该考虑三者的好处。

尤其是,如果您希望数据绑定内置于您的模型,脏检查,N级撤销,验证和业务规则以及允许轻松配置n层的数据门户实施,您应该考虑CSLA部署。

+0

您能详细说明数据绑定在对象模型中的用处吗?将绑定与正在建模的实际对象分开是不是最好?至于我的团队的特殊情况,我们主要针对的是SOA架构,而我所设想的CSLA的使用将在服务端,而不是我期望数据绑定驻留的客户端。当然,我很可能忽略了CSLA的一个很大的方面和好处,更不用说误解你对数据绑定的使用了!谢谢你的帮助! – Derek 2012-02-23 19:55:33

+0

数据绑定对于构建MVVM设计模式非常流行的WPF/Silverlight/Windows Phone 7应用程序特别有用,并且通过数据绑定执行视图更新,以便视图中的更改影响模型,并且模型中的更改会影响视图。 Rocky的CSLA属性支持数据绑定,因此您不需要在模型上实现INotifyPropertyChanged。这不是CSLA最大的好处,但它很有用。 – devdigital 2012-02-23 20:02:53

+0

明白了!感谢您提供了一个非常有用的答案! – Derek 2012-02-23 20:24:36

0

简短回答:是的。

长答案:它需要一些咕噜的工作和一些实验设置,但它可以做到没有从根本上打破CSLA。我使用StructureMap和存储库模式将一个工作原型放在一起,并使用the BuildUp method of Setter Injection在CSLA中注入。我使用了一种类似于here的方法来确保在序列化对象时我的业务对象被重新注入。

我还使用StructureMap的注册表基类将我的配置分离为演示文稿,CSLA客户端,CSLA服务器和CSLA全局设置。通过这种方式,我可以使用Visual Studio的链接文件功能将CSLA服务器和CSLA全局配置文件包含在服务器端数据门户中,并且两个位置的配置将始终保持一致。这是为了确保我仍然可以将CSLA中的Data Portal配置设置从2层更改为3层,而不会破坏任何内容。

无论如何,我仍在权衡使用DI的弊端,但到目前为止,我倾向于使用它的方向,因为测试会容易得多,尽管我怀疑尝试使用任何先进DI的特性如拦截。我建议您阅读Mark Seemann的书Dependency Injection in .NET,以了解使用DI的正确和错误的方式,因为Internet上有很多错误信息。