我们有以下解决方案布局:
DataAccess
业务逻辑
WCF服务
MVC
我们选择了WCF服务层,因为将来会有其他应用程序使用相同的逻辑 . 这被认为是SOA .
在DA,BL和WCF层之间,我倾向于使用依赖注入,因为我想对业务逻辑等进行单元测试 .
但现在我的问题是:我是否应该为WCF使用依赖注入?我的意思是,我应该通过应用程序(消费者)的WCF服务传递依赖项吗?就个人而言,我发现这很奇怪,因为它对我来说不再是SOA了吗?
谁能帮我吗?
我应该通过应用程序的WCF服务传递依赖项吗?
我猜你的应用程序是指WCF服务的消费者吗?我相信你从应用程序(MVC)通过代理与服务层交谈 . 您不应该从使用者应用程序向WCF服务注入依赖项,您不能这样做 .
但是您可以在WCF中使用依赖注入来注入数据/日志记录组件,以便通过创建自定义服务主机工厂在服务端本身进行更好的单元测试 .
http://prideparrot.com/blog/archive/2012/2/dependency_injection_in_wcf_using_castle_windsor
可能是挑剔,但使用服务并不一定意味着SOA .
有了这个,我们为什么需要从应用程序传递依赖项?您可以在主机上撰写服务,如here所示 .
如果您想要对业务逻辑进行单元测试,您甚至可以为它们声明不同的 endpoints ,然后在单元测试中使用它,它是依赖注入的替代方案 . 如果你真的想使用依赖注入,那么总是建议在服务级别而不是在客户端上进行,但是如果你从客户端使用它仍然没有坏处 . 如果我会选择,那么我会在服务类中完成它,从客户端我可以得到一个参数,它将建议你是否使用它进行单元测试或应用程序调用了你的WCF服务 .
3 回答
我猜你的应用程序是指WCF服务的消费者吗?我相信你从应用程序(MVC)通过代理与服务层交谈 . 您不应该从使用者应用程序向WCF服务注入依赖项,您不能这样做 .
但是您可以在WCF中使用依赖注入来注入数据/日志记录组件,以便通过创建自定义服务主机工厂在服务端本身进行更好的单元测试 .
http://prideparrot.com/blog/archive/2012/2/dependency_injection_in_wcf_using_castle_windsor
可能是挑剔,但使用服务并不一定意味着SOA .
有了这个,我们为什么需要从应用程序传递依赖项?您可以在主机上撰写服务,如here所示 .
如果您想要对业务逻辑进行单元测试,您甚至可以为它们声明不同的 endpoints ,然后在单元测试中使用它,它是依赖注入的替代方案 . 如果你真的想使用依赖注入,那么总是建议在服务级别而不是在客户端上进行,但是如果你从客户端使用它仍然没有坏处 . 如果我会选择,那么我会在服务类中完成它,从客户端我可以得到一个参数,它将建议你是否使用它进行单元测试或应用程序调用了你的WCF服务 .