我已经制作了一个三层应用程序,如
answer所述:
DAL with Repositories -> BLL with services and IRepository <- Asp.net mvc-app
为了让这个运行依赖注入我看到几个选项:
1.从Web应用程序添加对DAL的引用,以便在应用程序启动时设置绑定.
2.使用带有xml配置的容器
(3.使用反射来加载dal-assembly和查找类型)
选项1.很容易,也可以将DAL.dll复制到bin,但是我突然重新引用了我很努力工作的引用.现在可以直接访问存储库.选项2和3似乎不必要的复杂.
有没有别的办法?
解决方法
将ASP.NET MVC应用程序分为两个:
>一部分是你原来的ASP.NET MVC应用程序,但没有任何逻辑.只需保留组合根和您的Views(.aspx等)在这个项目中.由于这是组合根,您可以引用所有其他项目.然而,由于所有的逻辑都将被提取出来,所以现在是一个Humble Object,所以可以在这个层面上提供所有的参考.
>将所有逻辑(控制器等)解压缩到一个应用程序模型项目中,该项目只是一个引用ASP.NET MVC二进制文件的普通库项目(.dll).这个项目需要参考BLL来获取接口,但是没关系.然而,应用程序模型和BLL都有效地与DAL屏蔽.
最终的分层将如下所示:
> ASP.NET MVC应用程序>应用模型> BLL> DAL