System.Web.HttpContext.Current.Server.Session,Mappath,ResoveUrl等等,在asp.net项目中很常用。
但是,在三层或多层结构中,System.Web.HttpContext.Current是否应该出现在业务层呢??这些到底是UI层还是业务层的东西呢?看上去这些似乎是和业务密切相关的,是业务层吗?但其namespace叫“system.web”,事实上如果要把程序改为winform,那他们用不了,这样看来应该是属于UI层吧?
迷茫中。
------解决方案--------------------------------------------------------
不用纠结这些东西,框架什么的都是浮云,不用太在意。真正需要在意框架的时候,你会知道的。
------解决方案--------------------------------------------------------
回答楼主:
System.Web.HttpContext.Current不应出现在业务逻辑层,
可以出现在基于asp.net的ViewModel和ViewController中,
通过ViewController来更新业务逻辑层的BusinessModel
(注意:不是DataModel,比如User.IsLogin或者Customer.Name这样的东西)
在构建分层体系之前,应该明确每层的职责,价值取向是:
1.保持尽量短的驱动链;
2.细化分层,分出尽量多的层;
3.MVC设计模式具备以上2种特征,可以分出N层,却保持恒定2级驱动
也就是说,MVC不仅仅是三层的,可以是N多层,却始终保持最短的驱动链