多层架构在业务逻辑层实现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();
        }
目录
相关文章
|
存储 SQL 关系型数据库
【面试题精讲】MySQL逻辑架构
【面试题精讲】MySQL逻辑架构
|
存储 缓存 关系型数据库
高性能Mysql-逻辑架构
高性能Mysql-逻辑架构
81 0
|
SQL 安全 网络安全
交易所开发测试版丨交易所系统开发规则玩法/架构设计/项目步骤/方案逻辑/案例解析/源码部署
The development process of the exchange system involves multiple steps and links. The following is the detailed process and steps for the development of the exchange system:
|
7月前
|
设计模式 架构师 数据建模
架构师必备底层逻辑:设计与建模的技术深度探索
【8月更文挑战第13天】在软件开发的浩瀚星海中,架构师如同星辰指引,他们不仅规划着系统的蓝图,更在底层逻辑上精雕细琢,确保系统的稳健与高效。其中,“设计与建模”作为架构师的核心能力之一,是连接业务需求与技术实现的桥梁。本文将深入探讨架构师在设计与建模过程中的关键思维与实践方法,为工作学习中的技术同仁提供一份宝贵的干货分享。
103 3
|
7月前
|
开发工具 Android开发
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
60 0
|
7月前
|
Android开发 iOS开发
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
78 0
|
8月前
|
监控 安全 前端开发
交易所系统开发(源码正式版)/需求逻辑/玩法详情/规则架构
交易所源码开发是指基于特定的需求和要求,从头开始构建一个自定义的交易所平台的开发过程。这种开发可以包括以下几个关键方面:
|
8月前
|
运维 Java Docker
业务系统架构实践问题之在某些情况下,将能力代码和业务逻辑严格分层可能是一个挑战问题如何解决
业务系统架构实践问题之在某些情况下,将能力代码和业务逻辑严格分层可能是一个挑战问题如何解决
|
10月前
|
存储 设计模式 测试技术
了解三层架构:表示层、业务逻辑层、数据访问层
了解三层架构:表示层、业务逻辑层、数据访问层
3234 0
|
9月前
|
SQL 存储 缓存
第四章 逻辑架构(2)
第四章 逻辑架构
54 1

热门文章

最新文章