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

简介:

在业务逻辑层实现IOC,可以有效的减少代码量,把通用的操作写在通用的类中,然后在UI层对谁操作就建立谁的实例。

具体做法看代码:

Service层核心代码:

接口规范:

namespace Service
{
    /// <summary>
    /// 标准逻辑处理接口
    /// </summary>
    /// <typeparam name="TEntity"></typeparam>
    public interface IServices<TEntity> where TEntity : class,Entity.IDataEntity
    {
        /// <summary>
        /// 获得List结果集
        /// </summary>
        /// <returns></returns>
        List<IDataEntity> GetModelList();
 
        /// <summary>
        /// 获得IQueryable结果集
        /// </summary>
        /// <returns></returns>
        IQueryable<IDataEntity> GetModelIQueryable();
        /// <summary>
        /// 根据主键得到一个实体
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        TEntity GetModelById(string id);
 
        /// <summary>
        /// 插入实体
        /// </summary>
        /// <param name="entity"></param>
        void InsertModel(TEntity entity);
 
        /// <summary>
        /// 更新实体
        /// </summary>
        /// <param name="entity"></param>
        void UpdateModel(TEntity entity);
 
        /// <summary>
        /// 删除单个实体
        /// </summary>
        /// <param name="key"></param>
        void DeleteModel(params object[] key);
    }
}

实现:

namespace Service
{
    /// <summary>
    /// 标准逻辑实现CURD
    /// </summary>
    /// <typeparam name="TEntity"></typeparam>
    public class Services<TEntity> : IServices<TEntity>
        where TEntity : class,Entity.IDataEntity
    {
        IRepository iRepository = null;
 
        /// <summary>
        /// 构造函数实现IOC
        /// </summary>
        /// <param name="iRepository"></param>
        public Services(IRepository iRepository)
        {
            this.iRepository = iRepository;
        }
 
        public Services()
        {
 
        }
        #region IServices<TEntity> 成员
 
        public List<IDataEntity> GetModelList()
        {
            return this.iRepository.GetModel().ToList();
        }
 
        public IQueryable<IDataEntity> GetModelIQueryable()
        {
            return this.iRepository.GetModel();
        }
 
        public TEntity GetModelById(string id)
        {
            throw new NotImplementedException();
        }
 
        public void InsertModel(TEntity entity)
        {
            this.iRepository.Insert(entity);
        }
 
        public void UpdateModel(TEntity entity)
        {
            this.iRepository.Insert(entity);
        }
 
        public void DeleteModel(params object[] key)
        {
            this.iRepository.Delete(key);
        }
 
        #endregion
    }
}

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

namespace Service
{
    public class UserServices
    {
        public Data.IRepository UserBasesRepository
        {
            get
            {
                return new Data.OA.UserBasesRepository();
            }
        }
    }
}

UI层调用Service层代码:

   IServices<Entity.OA.UserBase> iServices = null;
        public ActionResult Index()
        {
            ViewBag.Message = "欢迎使用 ASP.NET MVC!";
            iServices = new Services<Entity.OA.UserBase>(new UserServices().UserBasesRepository);
            ViewData["UserBase"] = iServices.GetModelList().Cast<Entity.OA.UserBase>().ToList();
            return View();
        }
目录
相关文章
|
存储 移动开发 JavaScript
快应用推广连接底层技术与架构以及如何结合自身系统分销的推广逻辑和技术对接-优雅草卓伊凡|果果|Ant
快应用推广连接底层技术与架构以及如何结合自身系统分销的推广逻辑和技术对接-优雅草卓伊凡|果果|Ant
340 4
快应用推广连接底层技术与架构以及如何结合自身系统分销的推广逻辑和技术对接-优雅草卓伊凡|果果|Ant
|
人工智能 搜索推荐 数据安全/隐私保护
快应用推广联盟分销逻辑及技术架构深度解析-优雅草卓伊凡|果果|Ant
快应用推广联盟分销逻辑及技术架构深度解析-优雅草卓伊凡|果果|Ant
454 2
|
开发工具 Android开发
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
247 0
|
Android开发 iOS开发
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
368 0
|
设计模式 架构师 数据建模
架构师必备底层逻辑:设计与建模的技术深度探索
【8月更文挑战第13天】在软件开发的浩瀚星海中,架构师如同星辰指引,他们不仅规划着系统的蓝图,更在底层逻辑上精雕细琢,确保系统的稳健与高效。其中,“设计与建模”作为架构师的核心能力之一,是连接业务需求与技术实现的桥梁。本文将深入探讨架构师在设计与建模过程中的关键思维与实践方法,为工作学习中的技术同仁提供一份宝贵的干货分享。
395 3
|
监控 安全 前端开发
交易所系统开发(源码正式版)/需求逻辑/玩法详情/规则架构
交易所源码开发是指基于特定的需求和要求,从头开始构建一个自定义的交易所平台的开发过程。这种开发可以包括以下几个关键方面:
|
运维 Java Docker
业务系统架构实践问题之在某些情况下,将能力代码和业务逻辑严格分层可能是一个挑战问题如何解决
业务系统架构实践问题之在某些情况下,将能力代码和业务逻辑严格分层可能是一个挑战问题如何解决
155 0
|
SQL 存储 缓存
第四章 逻辑架构(2)
第四章 逻辑架构
203 1
|
SQL 存储 缓存
第四章 逻辑架构(1)
第四章 逻辑架构
194 1
|
架构师 持续交付 微服务
探索软件架构设计的深层逻辑
【6月更文挑战第5天】在数字化浪潮中,软件架构设计如同搭建一座虚拟的巴别塔,它不仅需要承载技术的重量,还要预见未来的需求。本文将通过我的个人经验,探讨如何在变化莫测的技术海洋中,寻找到稳固的架构基石,以及如何让这座塔楼灵活地适应不断变化的环境。
256 1