分层的必要性
一个项目必然有其相应的业务逻辑,而一般的业务逻辑不可能特别简单。如果将这样的项目写在一层,那么这层的逻辑将会变的复杂,不利于后期的维护。如果根据不同的功能进行分层,每层负责相应的逻辑,则提高程序的可读性,利于后期维护。
分层介绍
这里将项目分为5层,如果项目不是特别复杂,可以适当减少层数。5层分别为:业务逻辑层、数据访问称、服务称、表现层和用户层。
案例
这里利用一个小案例大概展示下各层的协作,关于各层的详细作用将在以后讲解。案例如下:
超市分别向一般顾客和零售商出售商品。现在搞打折活动,一般顾客和零售商采用不同的打折策咯。
业务逻辑层(Business Logic)
主要包括业务所涉及的实体(Model)和实体(Model)间的业务逻辑,根据具体情况采用相应的设计模式(Design Pattern)使代码满足设计原则。
声明数据访问的接口IProductRepository
,本层不关心数据数据查询和存储的逻辑。
数据访问称
这里采用仓储模式Repository
,一般采用ORM框架。常用的ORM框架有Entity Framework和NHibernate。
服务层
一般需要发布服务的项目需要服务层,根据外观模式Facde
隐藏业务业务逻辑。
定义请求和返回数据类,数据返回类型结构一般为
public class ProductListResponse
{
public bool Success { get; set; }
public string Message { get; set; }
public IList<ProductViewModel> Products { get; set; }
}
而且这里会涉及到对象的映射,添加viewModel,只包含需要用户看的的属性(可用第三方插件AutoMapper
)。
表现层
用户表现层的操作逻辑。常用的模式有MVC和MVVM模式,目的是表现层逻辑与UI层逻辑分离。MVVM的优点是可脱离UI层创建单元测试,但是为每个页面创建指挥类Presenter
也会增加代码维护负担。
UI
展现给用户的界面层。一般需要结合CSS控制页面样式和Javascript页面交互。