您的位置:首页 > 运维架构 > 网站架构

多层架构在业务逻辑层实现IOC

2011-09-27 16:00 239 查看
在业务逻辑层实现IOC,可以有效的减少代码量,把通用的操作写在通用的类中,然后在UI层对谁操作就建立谁的实例。
具体做法看代码:

Service层核心代码:

接口规范:

namespaceService

{

///<summary>

///标准逻辑处理接口

///</summary>

///<typeparamname="TEntity"></typeparam>

publicinterfaceIServices<TEntity>whereTEntity:class,Entity.IDataEntity

{

///<summary>

///获得List结果集

///</summary>

///<returns></returns>

List<IDataEntity>GetModelList();


///<summary>

///获得IQueryable结果集

///</summary>

///<returns></returns>

IQueryable<IDataEntity>GetModelIQueryable();

///<summary>

///根据主键得到一个实体

///</summary>

///<paramname="id"></param>

///<returns></returns>

TEntityGetModelById(stringid);


///<summary>

///插入实体

///</summary>

///<paramname="entity"></param>

voidInsertModel(TEntityentity);


///<summary>

///更新实体

///</summary>

///<paramname="entity"></param>

voidUpdateModel(TEntityentity);


///<summary>

///删除单个实体

///</summary>

///<paramname="key"></param>

voidDeleteModel(paramsobject[]key);

}

}



实现:

namespaceService

{

///<summary>

///标准逻辑实现CURD

///</summary>

///<typeparamname="TEntity"></typeparam>

publicclassServices<TEntity>:IServices<TEntity>

whereTEntity:class,Entity.IDataEntity

{

IRepositoryiRepository=null;


///<summary>

///构造函数实现IOC

///</summary>

///<paramname="iRepository"></param>

publicServices(IRepositoryiRepository)

{

this.iRepository=iRepository;

}


publicServices()

{


}

#regionIServices<TEntity>成员


publicList<IDataEntity>GetModelList()

{

returnthis.iRepository.GetModel().ToList();

}


publicIQueryable<IDataEntity>GetModelIQueryable()

{

returnthis.iRepository.GetModel();

}


publicTEntityGetModelById(stringid)

{

thrownewNotImplementedException();

}


publicvoidInsertModel(TEntityentity)

{

this.iRepository.Insert(entity);

}


publicvoidUpdateModel(TEntityentity)

{

this.iRepository.Insert(entity);

}


publicvoidDeleteModel(paramsobject[]key)

{

this.iRepository.Delete(key);

}


#endregion

}

}


具体业务对象:为了使UI层不直接调用Data层的尴尬

namespaceService

{

publicclassUserServices

{

publicData.IRepositoryUserBasesRepository

{

get

{

returnnewData.OA.UserBasesRepository();

}

}

}

}



UI层调用Service层代码:

IServices<Entity.OA.UserBase>iServices=null;[code]publicActionResultIndex()

{[/code]
ViewBag.Message="欢迎使用ASP.NETMVC!";

iServices=newServices<Entity.OA.UserBase>(newUserServices().UserBasesRepository);

ViewData["UserBase"]=iServices.GetModelList().Cast<Entity.OA.UserBase>().ToList();

returnView();

}



原文地址:
/article/4624030.html




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: