我的开发团队正在评估可用于 .NET 的各种框架以简化我们的编程,其中之一是 CSLA。我不得不承认对于 CSLA 是否会从与依赖注入框架(例如 Spring.net 或 Windsor)结合使用中受益有点困惑。如果我们将这两个 DI 框架之一与实体框架结合起来处理 ORM 职责,这是否完全否定了使用 CSLA 的需求或好处?
我对所有这些框架都有不同程度的理解,并且我正在尝试全面了解什么最有利于我们的企业架构和对象设计。
谢谢!
我的开发团队正在评估可用于 .NET 的各种框架以简化我们的编程,其中之一是 CSLA。我不得不承认对于 CSLA 是否会从与依赖注入框架(例如 Spring.net 或 Windsor)结合使用中受益有点困惑。如果我们将这两个 DI 框架之一与实体框架结合起来处理 ORM 职责,这是否完全否定了使用 CSLA 的需求或好处?
我对所有这些框架都有不同程度的理解,并且我正在尝试全面了解什么最有利于我们的企业架构和对象设计。
谢谢!
CSLA 是用于创建业务实体的框架,因此与 IoC 容器或 ORM 有不同的关注点。在企业应用程序中,您应该考虑所有这三个方面的好处。
特别是,如果您希望将数据绑定内置到模型、脏检查、N 级撤消、验证和业务规则,以及允许轻松配置 n 层部署的数据门户实现,则应考虑 CSLA。
简短的回答:是的。
长答案:它需要一些繁重的工作和一些实验来设置,但它可以在不从根本上破坏 CSLA 的情况下完成。我使用 StructureMap 和存储库模式组合了一个工作原型,并使用Setter Injection 的 BuildUp 方法在 CSLA 中注入。我使用了一种与此处找到的方法类似的方法,以确保在序列化对象时重新注入我的业务对象。
我还使用 StructureMap 的注册表基类将我的配置分为表示、CSLA 客户端、CSLA 服务器和 CSLA 全局设置。这样,我可以使用 Visual Studio 的链接文件功能将 CSLA 服务器和 CSLA 全局配置文件包含在服务器端数据门户中,并且两个地方的配置将始终相同。这是为了确保我仍然可以将 CSLA 中的数据门户配置设置从 2 层更改为 3 层,而不会破坏任何内容。
无论如何,我仍在权衡使用 DI 的潜在好处和缺点,但到目前为止,我倾向于使用它,因为测试会容易得多,尽管我对尝试使用 DI 的任何高级功能表示怀疑,例如作为拦截。我建议阅读Mark Seemann的 .NET 中的依赖注入一书,以了解使用 DI 的正确和错误方法,因为 Internet 上有很多错误信息。