已知: 假设A层引用C层 中间层是B
1解耦方法:抽象工厂 abstractFactory 使用反射创建类的实例
例如调用DAL层 这样不用new DAL类的实例,不用引用该命名空间,实现解耦 ,只返回一个IDAL类型的对象 完全和DAL脱离关系
当修改模型框架的时候,只需修改web.config中的程序集和命名空间名称和接口(抽象工厂类)而不用修改每次调用或创建类的代码
作用:解决了被调用层改变的问题,减少要修改的代码量,解决了各层部署在不同服务器的问题(添加引用只能引用本地dll文件)
2面向接口编程 引用的时候如果没有特殊需求,只需要引用接口层(IDAL) 不需要引用本来的层(DAL)
接口的作用:例如IDAL 当DAL发生改变的时候 业务层不需要改变,只要新的DAL继承了IDAL接口
3一个层(c)部署在了哪个服务器 ,被调用的时候就在哪个服务器(c)执行,其他服务器(A)虽然也有这个层的对象(接口对象) 但是只能调用接口其中的方法,具体实现还要到该具 体的被部署的服务器(c),A层 所在的服务器有C , B层所在的服务器也有C(不确定)
疑问:
1 如果一个项目的N层分别部署在不同的服务器上,中间层是和调用的层还是被调用的层部署在同一台服务器上(是不是中间层/接口层在两边都要部署)
2 A引用C层的时候 dll文件也会被引用过来,那在执行被调用的C层的代码的时候,是运行引用过来的A层dll还是C层自己的dll文件
3 整体的项目之间各层调用的流程及数据传递